Component gallery
Segments and tabs
Surfaces and empty states
Floating surfaces
Dialogs and overlays
Delete this session?
Apply the plan?
Code, copy and keys
const agent = createAgent({ ...basic, provider })
await agent.run({ prompt: 'build a REST API' })cat packages/server/src/handlers/very-long-folder-name/another-nested-directory/session-title-generator.ts | head -n 200 # a long line scrolls inside the frame
$ bun test 41 passed
Forms
List furniture
Motion
Wizard progress
Card choices
Blue
Midnight blue
Shown in the Dock and in Finder.
Toggle cards
Step pages and previews
How much of the work do you see?
Pick a preset, then fine-tune. The preview is a real conversation.
The step's choices go here.
A light theme inside the page's own.
Browser sign-in
WXYZ-8241Open the sign-in page- 1. acme-prod
- 2. acme-lab
Brand marks
- Anthropic
- Arcee
- Atlassian
- Baseten
- Braintrust
- Cerebras
- Claude
- Claude Code
- Cloudflare
- Codex
- Cursor
- Git
- GitHub
- Google Cloud
- Google Gemini
- Hugging Face
- Linear
- LM Studio
- Mistral AI
- Neon
- Notion
- Ollama
- OpenAI
- OpenRouter
- Sentry
- Stripe
- Supabase
- vLLM
- xAI
- Z.ai
- Playwright
- Pi
- Bolt
- Goal
- Local LLM
- Anthropic
- Arcee
- Atlassian
- Baseten
- Braintrust
- Cerebras
- Claude
- Claude Code
- Cloudflare
- Codex
- Cursor
- Git
- GitHub
- Google Cloud
- Google Gemini
- Hugging Face
- Linear
- LM Studio
- Mistral AI
- Neon
- Notion
- Ollama
- OpenAI
- OpenRouter
- Sentry
- Stripe
- Supabase
- vLLM
- xAI
- Z.ai
- Playwright
- Pi
- Bolt
- Goal
- Local LLM
Setup: Welcome
Set up zidane
This takes about two minutes. You can change every choice later in Settings.
- ANTHROPIC_API_KEY in your environmentUsed in Connect
- Claude Code setupUsed in Bring your setup
- Signed in to GitHub as @octocatUsed in Connectors
- Ollama at http://localhost:11434/v1Used in Connect
Setup: Connect
Choose an AI provider
The provider runs the model that answers you. Your keys stay on this computer, in a file that only you can read.
Setup: Connect alone
Choose an AI provider
The provider runs the model that answers you. Your keys stay on this computer, in a file that only you can read.
Setup: the Connect a provider card
Setup: Bring your setup
Use your setup from other agents
zidane copies what you pick. It does not change the files of the other agent.
Setup: Connectors
Connect your tools
The agent can read and change data in these services. Most of them ask you to sign in through your browser.
How connectors work
Setup: Skills
Teach zidane how you work
A skill is a folder of instructions. The agent reads one when a task needs it.
How skills work
Recommended sources
Setup: Extensions
Add extensions
Extensions add commands and features. zidane installs them for you from its repository.
Setup: Look
Choose how zidane looks
The preview shows each choice at once.
From the theme
Midnight blue, the default
Shown in the Dock and in Finder.
Setup: Conversation
How much detail do you want to see?
Pick a preset. The preview shows a sample conversation with it. Then pick what happens to a message that you send while the agent works.
Messages during a run
Setup: Conversation, fine-tuned
How much detail do you want to see?
Pick a preset. The preview shows a sample conversation with it. Then pick what happens to a message that you send while the agent works.
Messages during a run
Setup: Autonomy
What can zidane do without asking?
Commands in your safelist always run, whatever you pick. Your safelist holds the commands that you allowed with Always allow.
Setup: Features
Turn on what you want
You can change these, and more, in Settings.
Setup: Ready
Connect your tools
The agent can read and change data in these services. Most of them ask you to sign in through your browser.
How connectors work
Skill sources
Recommended sources
Recommended sources
Wizard tutorials
How connectors work
How skills work
How MCP servers work
How instructions work
How extensions work
How environments work
How files open
How accounts work
Run zidane on a server
How secrets work
How skills work
Conversation presets
Wizard demos
Session list
Session rows and status
Transcript
The chat route now takes a token from a per-IP bucket (20 a minute, bursts of 5). A request over the limit gets 429 with a Retry-After header:
if (!verdict.ok) return tooMany(verdict.retryAfterMs);
The server tests pass.
Documented under Limits in docs/server.mdx and committed.
Transcript, compact
Transcript extras: chips, cards, badges, search
- Ada
- +412−38831 files
Chips, cards, the badge menu, search and turn actions move behind ChatHost.
The rate limiter now keys on the session, not the socket.
A second limiter guards the upload route.
Composer
Composer badges
Interactions
Two choices before I add the limiter.
A token bucket per IP in front of /chat: 20 requests a minute, bursts of 5.
- Add the limiter
- Guard the route
- Document it
Rich composer: the desktop composer on a fixture host
Composer chrome: controls and status pills
Composer chrome: the dock and its banners
Composer chrome: a conversation's badges
Session: Todos panel
Session: todo list and changed files
- Read the session store
- Add the archive column
- Write the migration test
- Update the changelog
Session: Queue and Artifacts panels
Session: dialogs
Session details
/Users/ada/code/app
- Status
- Activity
- Model
- Created
- 654d ago
- Updated
- 653d ago
- ID
- Folder
Turn details
Running work
Usage
No signed-in provider reports usage.
Session: header and welcome screen
Good morning
Wednesday, January 15
app
Session: Inbox and side chat
- PlanAdd a rate limiter to the API
- A token bucket per key.
- A 429 with Retry-After.
- Tests.
Session: Reminders panel
Command palette
Loading…
Loading…
Palette app sources
Loading…
Loading…
App: the modal layer and error fallbacks
Import from Claude Code
Pick what to bring over.
Skills, MCP servers and instructions found in ~/.claude.
Cannot read properties of undefined (reading 'rows')
Approval card
git push --force-with-lease origin main
{
"url": "https://api.example.com/v1/limits",
"max_bytes": 20000
}File-edit review
Allow Zidane to edit src/limits.ts?
Review the change before you allow it.
Allow Zidane to multi_edit src/retry.ts?
Review the change before you allow it.
Safelist
Safelisted commands
Commands you allowed with "Always allow". If you revoke one, Zidane asks again next time.
Safelisted commands
Commands you allowed with "Always allow". If you revoke one, Zidane asks again next time.
Appearance: runtime theme
Keybindings: key hints and the catalog
- paletteCommand KK
- sidebarCommand BB
- new sessionControl NNCommand NN
- close tabControl WWCommand WW
- terminalControl ``Command JJ
- keybindingsControl YY
Keybindings: the key command registry
Settings: shell and rows
General
Sessions, updates, notifications and spaces.
Settings: read-only and failed
Couldn't reach the settings.
Settings: preference sections
- Send messageReturn
- New lineShift Return
- Previous history entryUp Arrow
- Next history entryDown Arrow
- Mention a file@@
- Use a skill//
- New sessionControl NNCommand NN
- Back to the main sessionControl Shift MM
- Browse messagesControl SS
- Session detailsControl Shift XX
- Switch agentShift Command II
- Switch modelControl MM
- Reasoning effortControl LL
- Todo listControl TT
- ArtifactsControl Shift AA
- Stop the current workControl KK
- Generate titleControl Shift TT
- Compact conversationControl Shift KK
- Export as MarkdownControl Shift EE
- Export as JSONControl Shift JJ
- Copy session idControl Shift CC
- Add to or remove from favorites
- Delete sessionControl Shift DD
- Next panelControl Shift ]]
- Previous panelControl Shift [[
- Next tab, file or terminal (else next space)Command Option Right Arrow
- Previous tab, file or terminal (else previous space)Command Option Left Arrow
- Close tab, file or terminalControl WWCommand WW
- Split the panel tab rightCommand \\
- Split the panel tab downOption Command \\
- Find in the file or diffs (in Files and Diffs)Command FFControl FF
- Search across files (in Files and Diffs)Command Shift FFControl Shift FF
- Show or hide the terminalControl ``Command JJ
- New terminalControl Shift ``
- Annotate the page (in the Browser tab)Command ..
- Command paletteCommand KK
- Show or hide the sidebarCommand BB
- Back to the previous conversationCommand Left ArrowCommand [[
- Forward to the next conversationCommand Right ArrowCommand ]]
- UsageControl PP
- SettingsCommand ,,
- KeybindingsControl YY??
- Zoom inCommand PlusPlus
- Zoom outCommand MinusMinus
- Reset zoomCommand 00
Settings: catalog sections
How skills work
Recommended sources
How extensions work
How instructions work
Loading environments…
How skills work
box doesn't take installs from this app. Install on the server.
Reading box's skills…
Settings: accounts and MCP servers
- AnthropicClaude models. Sign in with your Claude plan, or use an API key.
- work
- apikey
- OpenAIGPT models. Sign in with your ChatGPT plan, or use an API key.
- OpenRouterHundreds of models behind one key.
- Google Vertex AIGemini on your Google Cloud project.
- work
- apikey
- filesystem
- linear
- search
Can't list this server's catalog from here. Install and add skills on the server.
Settings: model rows and extension options
No extension options. Enabled extensions add theirs here.
Settings: create extension and Claude Code import
Create extension
Create a Zidane extension and open a session to write it.
Import from Claude Code
Copy conversations, MCP servers, skills, commands and subagents from ~/.claude. Zidane never changes your Claude Code setup and skips what it already imported.
Machines: a server's settings and the daemon dot
Machines: what a host can do
- Docker
- E2B
- Installs from clients
- Lends itself as a machine
- Settings sync
- Clones from clients
- New folders from clients
Machines: the Hosts page
Run zidane on a server
zidane server startMachines: a server's settings sync
Workspace: side panel
Workspace: empty and floating
Workspace: extension panel content
- Runner
- Cache