Install and first run
Install the terminal app, sign in, and keep it up to date.
The terminal app (the TUI) is one command, zidane.
Install and run#
curl -fsSL https://zidane.si/install | sh
zidaneThe script downloads the binary for your machine from https://zidane.si/dl, checks its SHA-256 against the release manifest (and the manifest's signature when minisign is installed), and puts it in ~/.local/bin. Options go after sh -s --: --prefix <dir> installs to <dir>/bin, and --version <v> picks the previous release. Run the script again to update.
brew install tahul/tap/zidane
zidanebrew upgrade zidane updates it.
npm install -g zidane-tui
zidanebun add -g zidane-tui
zidanebun install
bun run build
bun run tuiEvery file is also on the download page. The npm package pulls one prebuilt binary for your machine. A small launcher runs it on Node 18 or later, so you do not need Bun.
| Platform | Package |
|---|---|
| macOS, Apple silicon | zidane-tui-darwin-arm64 |
| macOS, Intel | zidane-tui-darwin-x64 |
| Linux x64 (glibc) | zidane-tui-linux-x64 |
| Linux arm64 (glibc) | zidane-tui-linux-arm64 |
The launcher checks your C library with ldd --version. Alpine and other musl systems have no binary yet, and the launcher says so. With --ignore-scripts, the launcher finds the binary on first run.
First launch#
On a fresh install, zidane opens the setup wizard. It has the steps of the desktop app: Welcome, Connect, Bring your setup, Connectors, Skills, Extensions, Look, Conversation, Autonomy, Features and Ready. A step that does not apply is left out. Full setup takes about two minutes. Quick start asks for a provider and your setup from other agents, and keeps the defaults for the rest.
| Key | Does |
|---|---|
| ↑ ↓ | Move. On Welcome, Look and the model list of Connect, the move also picks the row. |
| Space | Pick the row, or turn it on or off |
| Enter | Continue. On Ready, Start, or go back to the step of a recap line. |
| S | Skip the step and keep its values |
| Esc | Go back one step |
The terminal app needs a provider, so Connect has no Skip. Pick a provider to set it up, as in the steps below. A provider that is ready shows its model, its effort and a test message that it answers.
Skills lists the recommended sources. Space opens one, or the last row, where you type a source. In a source, Space picks a skill, A picks them all, and Esc goes back to the sources. Your picks stay when you open another source.
Connectors, skills and extensions install in the background once you pass their step. Ready lists them. Press Enter on a failed one to try again, or on a connector that needs its browser sign-in to sign in. Look shows the theme on the whole app as you move. A provider that an extension adds shows in Connect after you install the extension and start zidane again.
An install from before the wizard never opens it on its own. To open it again, use Run setup again at the end of Settings › Agent, or Run setup in the command palette. It then starts on Connect, with your current values, and Esc on that first step closes it. ZIDANE_NO_ONBOARDING=1 turns it off at launch. Every step, and what each one writes, is on setup wizard.
Sign in#
With no provider set up and the wizard off, zidane opens the provider picker. Connect in the wizard uses the same steps:
Pick a provider
Each provider's needs are on providers.
Pick a method
API key, or OAuth in the browser when the provider offers it. A provider with one method skips this step.
Enter the credential
Paste the key, or finish OAuth in the browser. Local LLM asks for a base URL, an optional key, a default model and a context window.
OAuth on a provider you already use asks which account to replace or what to name the new one. Keys from environment variables also work.
Add or switch providers later in Settings › Authentication. The credentials file location is on files and folders.
What opens#
| You launch | You see |
|---|---|
| First time | The setup wizard |
| With a provider set up | Your last session (Settings › Agent › Start from last session) |
| With that setting off | The sessions list |
Esc in a chat opens the sessions list. Esc there returns to the open chat, or quits when none is open.
When the prompt or an input has selected text, CtrlC copies it and CtrlX cuts it. Text that you select with the mouse goes to the clipboard when you release the button. With no selection in the prompt or an input, CtrlC follows Settings › UI › Ctrl+C behavior:
| Choice | Ctrl+C does |
|---|---|
| Quit (default) | Quits |
| Confirm | Asks first |
| Stop, then quit | The first press stops the run (or clears the prompt). A second press within 1.5 seconds quits. |
Command-line switches#
| Flag | Description |
|---|---|
--no-daemon | DescriptionForce the in-process runtime: the kill switch for the daemon setting (sets ZIDANE_NO_DAEMON=1). |
--no-remote | DescriptionTurn remote hosts off (sets ZIDANE_NO_REMOTE=1): refuses --host and ignores ZIDANE_HOST_URL. |
--host <wss-url> | DescriptionLaunch the TUI on a remote zidane server (also ZIDANE_HOST_URL). |
--token-file <path|-> | DescriptionRead the server's device token from a file, or from stdin with - (also ZIDANE_HOST_TOKEN). |
--token <t|-> | DescriptionThe device token itself. It shows in ps and shell history: prefer --token-file. |
-v, --version | DescriptionPrint the version and exit. |
-h, --help | DescriptionPrint this help and exit. |
--no-daemon: the daemon. --no-remote, --host and the token flags: remote hosts. Subcommands (run, daemon, attach, server, machine, upgrade): CLI.
Updates#
The footer checks for a new zidane-tui once a day and shows ↑ vX.Y.Z when one exists. Install it with:
zidane upgradeThe chip then turns into ↻ vX.Y.Z. Restart the app to use the new version. To install new releases in the background, turn on Settings › Agent › Install updates automatically. The app never restarts on its own, and the daemon restarts once nothing runs. A global desktop app install (zidane-gui) upgrades in the same run. Flags and exit codes: CLI.
| To stop the check | Do |
|---|---|
| In the app | Turn off Settings › Agent › Check for updates |
| For a shell | Set ZIDANE_NO_UPDATE=1 or NO_UPDATE_NOTIFIER=1 |
| In CI | Nothing: the check never runs when CI is set |
Same engine as the desktop app#
The terminal app and the desktop app run the same chat engine and read the same files: one engine, two apps.
Reference#
zidane/tui:runTuiand the options to embed the app