Skip to content

Server

Run the zidane chat host on another machine and attach the TUI, the desktop app or a browser over a WebSocket.

zidane-server runs the zidane chat host on a VPS, a home server or a container. Sessions, settings, provider keys, project files and the agents' commands live on that machine. Your windows attach over a WebSocket with a device token, and a run keeps going when you close them.

Text
 TUI   desktop   browser   attach
   \      |         |        /
    +-- wss:// + device token --+
              |            ^
      JSON-RPC requests  ipc.signal
              v            |
 +-----------------------------------+
 | zidane-server                     |
 |   chat host: sessions and runs    |
 |   tools run here, as its user     |
 |   data:  /data/.zidane            |
 |   files: /data/workspaces         |
 +-----------------------------------+

The server and the local daemon#

The server and the local daemon run the same chat engine and speak the same protocol. The hostKind field of the handshake says which host a client talks to.

HosthostKindServesReached overRuns tools onSurvives closing the windowTurn it on
In the windowin-processThat windowNothingYour computer, as youNoDefault
Local daemondaemonThe windows of one computerA unix socket, guarded by file permissionsYour computer, as youYesThe daemon setting (how)
zidane-serverserverAny device that holds a tokenA WebSocket with TLS and a device tokenThe server, as its userYes, and restarts of your deviceInstall it, then add it as a remote host

A window can use both. This computer's sessions run in the daemon (or in the window). A server's sessions run on the server. The server also opens a unix socket of its own for the health and token commands on its machine.

When to use the server#

You wantWhy the server fits
Runs that outlive your laptop's lidThe run is on the server. Any window can attach to it again
Agents next to the code on a build boxCommands run in the server's folders, with its tools
One set of sessions from several devicesEvery client sees the same sessions and signals
Commands on a GPU box or a second computer, with the sessions in one placeAdd the computer as a machine
A web UI for your own agentscreateServerHost speaks the protocol from a page

For one machine, the daemon is enough.

What lives where#

ThingOn the serverOn your device
Sessions, transcripts, running turnsYesNo
Agent settings, SYSTEM.md, skills, MCP servers, extensionsYesOnly for This computer's sessions
Provider keysThe server's environment and credentials.jsonYour own, for local sessions
Project folders, shell commands, terminalsInside the server's workspace rootsNo
Theme, keybindings, window layoutNoYes
Device tokensA SHA-256 of eachThe token, in credentials.json

Try it on one machine#

With the terminal app installed, zidane server is the same program as zidane-server.

Terminal
zidane server start                         # listens on 127.0.0.1:4280

# In another terminal: a token for this device, printed once on stdout.
(umask 077; zidane server token create --name laptop > laptop.token)
zidane --host ws://127.0.0.1:4280 --token-file laptop.token

For another machine, install the server there and deploy it behind TLS. Remote hosts are off by default in the TUI and the desktop app. Turn them on first.

Pages#

PageCovers
InstallDocker, the release binary, the zidane command, from source, and the first token
Deploysystemd, Docker Compose, Coolify, Caddy and nginx, backups, upgrades, resource limits
Servers and machinesOne main server, other computers as machines, join codes, moving a session
SecurityTokens, TLS and proxies, origins, limits, the audit log, what a token can do
ClientsThe desktop app, the TUI, browsers, the Node client, machines, settings sync, ACP
OperationsLogs, health, storage warnings, troubleshooting
ConfigurationEvery command, flag, variable and server.json key, generated from the source
ProtocolThe handshake, every method and signal, errors, captured examples

Limits#

  • A server restart interrupts running turns. With crash recovery on or set to ask (the default), the restarted server resumes them, or asks in a window first (crash recovery). Tool calls the restart cut off are reported to the model as interrupted. Before a planned restart, zidane-server wait-idle waits for runs to end.
  • Server sessions have no dev browser. The browser panel drives a page on your computer.
  • Installs from a window go to the server user's scope only. A project's skills, extensions and MCP servers are files in its folder.
  • Extension popups, panels and palette items come from your device's extensions. A server session's / commands and inline suggestions run on the server.
  • Claude Code import fills the local store, so imported sessions do not show on a server.
  • Session folders are on the server. A window never sends its own working directory.