# Desktop settings

> Every tab, row and action in the desktop app's Settings.

`cmd+,` or the footer gear opens Settings. The search box finds a row by label, description or setting key (`showUsageIndicator`) and jumps to its tab. Each tab in the sidebar shows how many settings it holds. Skills, MCP servers, Plugins, Extensions, Environments and Hosts show how many items they list instead. Accounts shows how many providers are signed in.

The TUI shares most settings. Appearance, layout and display stay per app ([which are shared](https://zidane.si/docs/apps.md#settings)). The rows below are generated from the app's source.

## Switch hosts

Settings always opens on This computer. If you saved [servers](https://zidane.si/docs/desktop-hosts.md), the host menu at the top right of Settings lists This computer and each server, with its connection dot. To edit a server's settings, pick it in that menu. You stay on the same tab, and Settings hides the tabs that read this computer's files. You cannot pick a server that is not connected.

On a server, Skills, MCP servers, Plugins and Extensions list the server's, for the session's folder there, in the same rows as This computer's. A row shows only what the server can do:

- MCP servers have every action of This computer's, run on the server. Remove works on the server user's `mcps.json` only. Add server to a project's file needs a recent server, and so do Shared, Restart and the process badge.
- A skill shows no token sizes and does not open, because the server does not send its `SKILL.md`. A skill that a plugin or an extension brings follows the switch of that plugin or extension.
- Install, Delete, Update and Remove show when the server takes installs from this app (`allowRemoteInstalls`), for its user's skills and extensions. Skills and extensions install from a GitHub or npm spec.
- There is no Edit button and no Finder button, because the files are on the server.

On a server, Accounts, MCP servers and their tutorials name the server instead of this computer, for example "Keys and sign-ins saved on ipseity."

| Tab | What it holds |
| - | - |
| General | Sessions, updates, notifications and spaces. |
| Agent | What new sessions start on, the helper models, approvals and limits. |
| Extensions | Project and user extensions. Choose which ones can run. |
| Interface | The conversation, composer, sidebar, terminals, browser and git. |
| Accounts | Keys and sign-ins, saved in \~/.zidane/credentials.json and shared with the CLI. |
| Advanced | Experimental features and the agent loop internals. |
| Instructions | What the session's agent reads, each part with its source. |
| Skills | Project and user skills. Choose which ones the agent can use. |
| MCP servers | Servers from your mcps.json and the project's. Test one to check that it connects. |
| Plugins | Agent Plugins and the skills and MCP servers they bring. |
| Environments | Where sessions run: this computer, a git worktree or a sandbox provider. |
| Appearance | Themes, colors, fonts, size and motion on this computer. |
| Files & editor | Where files open and how the Files panel edits them. |
| Keybindings | Every shortcut. Change them in \~/.zidane/keybindings.json, then reload. |
| Hosts | This computer and your saved zidane-servers. |
| Logs | Extension warnings, MCP diagnostics and host debug lines, live. |
| Performance | Live CPU, memory and GPU per process. Samples only while open. |

Run setup again, at the bottom of the sidebar above the version, closes Settings and opens the [setup wizard](https://zidane.si/docs/desktop.md#first-launch) with your current values.

Instructions, Skills, MCP servers, Extensions, Environments, Files & editor, Accounts and Hosts open with a tutorial on how that part of zidane works. A small scene plays its three steps in turn, and a click on a step shows it. Some tutorials have a button, such as Edit your system prompt on Instructions.

## General

| Setting | Control | Default | Description |
| - | - | - | - |
| Start from last session (Sessions) | Switch | On | Open the last session on launch instead of the sessions list. |
| Reminders (Sessions) | Switch | Off | Send a prompt to a session at a set time, once or on a repeat. Extensions can schedule their own reminders. |
| Agent can set reminders (Sessions) | Switch | On | Give the agent a tool to schedule prompts to its own session, such as "check the CI in 20 minutes". Needs Reminders. |
| Crash recovery (Sessions) | Choice: Ask before resuming, Resume, Off | Ask before resuming | Keep a checkpoint of each run so it can continue after a crash. Applies to new runs. Unavailable on stores other than SQLite. |
| Check for updates (Updates) | Switch | On | Look for new releases and show them in the footer. |
| Install updates automatically (Updates) | Switch | Off | Install new releases in the background. Restart when you are ready. |
| Notifications (Notifications) | Switch | Off | If no Zidane window is focused, notify you when a run ends or needs you. |
| Notification sound (Notifications) | Switch | On | Play the system sound with each notification. |

### Spaces

Use spaces turns spaces on. Your spaces lists them: add, rename, pick an icon, move up or down (the sidebar order), or delete.

Each space has its own Default agent, Default model and Effort and options. A value that a space does not set comes from Agent › Defaults. Default can be renamed, not deleted. Deleting another space moves its sessions to Default. What spaces are: [sessions](https://zidane.si/docs/apps.md#sessions). The sidebar's [space switcher](https://zidane.si/docs/desktop-sidebar.md#spaces) picks the one on show.

Import › Import from Claude Code shows when a Claude Code setup (`~/.claude`) exists. Tick conversations (this project or all), MCP servers, skills, and commands and subagents. Your Claude Code setup is left unchanged ([what each part becomes](https://zidane.si/docs/apps.md#import-from-claude-code)).

![Settings, General.](https://zidane.si/captures/settings-general-light.webp)

## Agent

| Setting | Control | Default | Description |
| - | - | - | - |
| Default agent (Defaults) | Agent menu: The agents of the folder | Build | New sessions start on it. |
| Default model (Defaults) | Model picker: Signed-in models | Last used | New sessions start on it. |
| Effort and options (Defaults) | Effort menu: The default model's effort levels and options, else those of every signed-in model | The last ones used with each model | New sessions start with them, on whatever model they run. |
| Interaction mode (Defaults) | Choice: Ask normally, Skip interactions, Disable tools | Ask normally | How the agent handles questions: ask you, answer from the repository, or turn questions off. |
| Text model (Helper models) | Model picker: Signed-in models | Automatic | Writes session titles and suggestions. Automatic uses the session provider's smallest model. |
| Decisions (Helper models) | Switch | Off | Hooks and extensions ask a decision model for quick yes/no, choice and score answers. Your provider bills each call. |
| Decision model (Helper models) | Model picker: OpenRouter and OpenAI platform models | First available | Answers decisions from hooks and extensions. Needs an OpenRouter key or an OpenAI platform key. |
| Auto-update session titles (Helper models) | Switch | Off | Title sessions after their first run and rename them when the topic changes. Keeps titles you typed. |
| Estimate time remaining (Helper models) | Switch | Off | Show how long running sessions and subagents have left, from a quick decision when a run starts. Uses tokens. |
| Compaction model (Helper models) | Model picker: Signed-in models | The main model | Writes the summaries. When to compact still follows the main model. |
| Allow subagents to use different models (Helper models) | Switch | On | Let the agent hand work to cheaper models. |
| Image generation (Helper models) | Switch | On | Let the agent generate images with your providers' image models. Pick the model in the model picker's Image tab. Each image is billed by the provider. |
| Tool approvals (Approvals & safety) | Choice: Ask, Model decision, Full access | Ask | Who approves tool calls: you, the decision model, or nobody. Commands you safelisted always run. |
| Secrets (Approvals & safety) | Switch | Off | Let the agent ask you for an API key or a token. It is kept in a private file for this project, out of the chat, and hidden in tool output. |
| Sandbox shell commands (Approvals & safety) | Switch | Off | Keep the agent's commands and edits inside the project and hide credentials. |
| Sandbox network (Approvals & safety) | Choice: Allow, Deny | Allow | Allow keeps installs and git working. Deny blocks every connection. |
| Load project extensions (Approvals & safety) | Switch | Off | Run the extensions of this project. They can run any code on your computer. |
| Import configurations from other agents (Approvals & safety) | Switch | Off | Use other agents' servers, skills, commands and subagents. Imported servers run commands from files zidane does not own. |
| Support Ruler configuration (.ruler) (Approvals & safety) | Switch | On | Read .ruler folders. Their servers need "Import configurations from other agents". |
| Auto-compact (Context & limits) | Switch | On | Summarize the conversation when the context passes the threshold below. |
| Auto-compact threshold (Context & limits) | Choice: 60%, 70%, 80%, 90% | 80% | How full the context gets before zidane summarizes it. |
| User instructions (Context & limits) | Choice: Both, User only, Project only, None | Both | Which AGENTS.md and CLAUDE.md files the agent reads. |
| Max turns per run (Context & limits) | Choice: Unlimited, 25, 50, 100, 200 | Unlimited | Stop a run after this many turns. |
| Max cost per run (Context & limits) | Choice: Unlimited, $1, $5, $10, $25 | Unlimited | Stop a run once its estimated cost passes this amount. |
| Max tokens per run (Context & limits) | Choice: Unlimited, 500K, 1M, 2M, 5M | Unlimited | Stop a run once it has used this many tokens. |
| Max run time (Context & limits) | Choice: Unlimited, 5 min, 15 min, 30 min, 60 min | Unlimited | Stop a run after this much time. |
| Max parallel subagents (Context & limits) | Choice: 1, 2, 3, 5, 10, Unlimited | 3 | How many subagents a session runs at once. More wait for a free slot. |
| Agent can use your terminals (Agent tools) | Switch | On | Let the agent read your terminals and type in them after you approve. |
| Agent's background tasks in terminals (Agent tools) | Switch | On | Give each background command the agent starts its own terminal tab. |
| Agent can use the browser (Agent tools) | Switch | On | Let the agent open, read, click and type in pages to check its work. |
| Web search (Agent tools) | Switch | On | Let the agent search the web for docs, errors and recent changes. |
| Codemode (Agent tools) | Switch | On | The model batches tool calls in one short script that runs in a sandbox. |

Default agent, Default model and Effort and options show only for this computer. Effort and options applies to every new session, whatever its model. It lists the levels and options of the default model when one is set. Else it lists every option that a signed-in model offers.

Every model row (Default model, Text model, Compaction model, Decision model) has a Test button. It sends the model one tiny prompt, or one decision for the decision model, with the credentials of the host running the sessions, and shows the latency or the failure reason under the row. An unset row tests the model it falls back to.

Tool approvals picks Ask, Model decision or Full access ([approvals](https://zidane.si/docs/approvals.md)). Approvals & safety › Safelisted commands lists the Always allow entries of each project. You can revoke each one ([safelist](https://zidane.si/docs/approvals.md#safelist)).

![Settings, Agent.](https://zidane.si/captures/settings-agent-light.webp)

### Instructions

Each part of the open session's system prompt, with its source file or setting and its size in tokens. A bar shows each part's share. Click a part to read it.

Create SYSTEM.md shows when no `SYSTEM.md` exists in a place where one can apply. A `SYSTEM.md` that lost to another gets a note. Edit your system prompt, in the tutorial at the top, opens the `SYSTEM.md` in use. If there is none, it creates one from the built-in prompt first.

Where the app looks: [files and folders](https://zidane.si/docs/files.md). Agent › Context & limits › User instructions picks which `AGENTS.md` and `CLAUDE.md` files count.

![Settings, Instructions: the parts of the system prompt with their sources and sizes.](https://zidane.si/captures/settings-instructions-light.webp)

### Skills

Project and user skills, each with an on/off switch. Under the note, the recommended sources show as small chips. Open one, or type a source, then pick its skills ([sources](https://zidane.si/docs/skills.md#add-skills-from-a-repository)).

| Action | Does |
| - | - |
| Install N skills | Installs the picked skills into the project or into your user folder, one install per source |
| Edit | Opens a session on the skill's folder, to change it with the agent |
| Remove | Deletes the skill, after a confirmation |
| Scan for skills again (refresh icon) | Reads the skill folders again |

How skills work: [skills](https://zidane.si/docs/skills.md).

![Settings, Skills.](https://zidane.si/captures/settings-skills-light.webp)

### MCP servers

The servers in your `mcps.json` and the project's (when Settings edits a zidane server, that server's). While a server runs, a badge says how it runs. "shared" with a count is one process that that many sessions use. "per session" is one process for each session.

| Action | Does |
| - | - |
| Add server | Opens a form: name, transport (`stdio`, `streamable-http` or `sse`), command line or URL, env lines (stdio) or headers (HTTP and SSE), and the user or project config file. Advanced OAuth sets a pre-registered client: client ID, secret, callback port and scopes. A new server starts turned on. To change a server, add it again under the same name. |
| Remove | Deletes a server from the file that declared it, after Confirm remove |
| Sign in, Sign in again, Sign out | Starts or ends the OAuth sign-in of a server that needs one |
| Switch (Enable or Disable for this folder) | Turns a server on or off for the open project only |
| Expand tools | Lists the server's tools, each with its own switch |
| Shared (in the expanded row) | On: every session uses one process of the server. Off: each session starts its own, for a server that keeps per-user state (a browser it drives, an open document). Only for local `stdio` servers. Stored in the `mcpSharing` setting, which wins over `"shared"` in `mcps.json`. Sessions move to the new process when their next prompt runs. |
| Restart | Stops the server's running process. A call in progress fails, and the next call starts a fresh process. Sessions whose agent was built from an older config (an `mcps.json` you edited by hand) are rebuilt first, so the fresh process runs the current command. Shown while the server runs. |
| Test all | Connects to every server and shows which ones answer |
| Scan for MCP servers again (refresh icon) | Reads the config files again |

Config files, lookup order and OAuth: [MCP](https://zidane.si/docs/mcp.md).

![Settings, MCP servers with no servers configured.](https://zidane.si/captures/settings-mcp-light.webp)

### Plugins

The [Agent Plugins](https://zidane.si/docs/extensions.md#agent-plugins) found for the session's folder, with the skills and MCP servers each brings. The switch is a consent gate. When it is on, the plugin's skills reach the agent and its MCP servers start. A plugin that fails to load stays listed as broken.

![Settings, Plugins.](https://zidane.si/captures/settings-plugins-light.webp)

### Environments

Where new sessions run: this computer, a git worktree, the OS sandbox, or a sandbox provider such as Docker, E2B or Daytona. Pick the Default and set each provider's options ([execution contexts](https://zidane.si/docs/execution-contexts.md)).

![Settings, Environments.](https://zidane.si/captures/settings-environments-light.webp)

## Extensions

Project and user extensions, with the options they declare and a switch for each. Project extensions also need Agent › Approvals & safety › Load project extensions.

| Action | Does |
| - | - |
| Install | Opens the extension browser (below) |
| Create extension, Build an extension | Asks for a name and a scope (user or project), creates the extension's folder and opens a session on it. Saved edits reload the extension once the session's run finishes. Build an extension is the button in the tutorial at the top. |
| Update | Runs the recorded installer again (`git pull` or an npm reinstall) |
| Update menu | Right-click Update, or click the arrow next to it. Update from `<source>` names where the extension comes from. Change origin… installs it again from another source |
| Remove | Uninstalls it, after a confirmation |

An extension that fails to load has no switch. A red error chip sits next to its name. Point at the chip, or move focus to it, to read why it failed.

### Add extensions

Install opens a browser on the extensions that ship with zidane (`Tahul/zidane`). The built-in extensions are always listed, even when the repository cannot be read. Then a note says that you need access to install from it.

Type another source to list its extensions: `owner/repo`, a GitHub link, an npm package or a local folder. The browser reads each extension's `package.json` and runs no code. Pick one or more rows, choose User or This project, and click Install. This project shows the project trust hint. Each pick installs on its own, so one failure does not stop the others.

A private GitHub repository needs access. Run `gh auth login` and `gh auth setup-git`, or add an SSH key, then try again.

### Change origin

Change origin… opens with the current source filled in. Type a fork, a tag or an npm package. zidane installs the extension from the new source and keeps the old copy until the install works. The new source must hold an extension with the same name. If it does not, the dialog lists the names it found and nothing changes. After the change, Update follows the new source.

Each extension with settings has an entry under Extensions in the sidebar, titled with its display name and drawn with its icon. An extension without an icon shows the first letter of its name in a small square. An extension with a category gets a group of its own after Advanced instead ([extension settings](https://zidane.si/docs/extensions-settings.md#pages-and-the-settings-sidebar)).

Writing and trusting extensions: [extensions](https://zidane.si/docs/extensions.md).

![Settings, Extensions.](https://zidane.si/captures/settings-extensions-light.webp)

## Interface

| Setting | Control | Default | Description |
| - | - | - | - |
| Conversation preset (Conversation) | Preview tabs: Focused, Balanced, Detailed | Balanced | Focused, Balanced or Detailed, with a preview of each. |
| Transcript density (Conversation) | Choice: Full, Compact | Compact | Full shows every step. Compact folds each exchange's work into one row. |
| Row icons (Conversation) | Switch | On | Show an icon next to each message and step. |
| Thinking blocks (Conversation) | Switch | On | Show the agent's reasoning in the chat. |
| Expand thinking while it streams (Conversation) | Switch | Off | Keep a thinking block open while the agent reasons. |
| Run receipt (Conversation) | Switch | On | Show agent, model, time, cost and tokens after each run. |
| Collapse subagents (Conversation) | Switch | On | Start subagent blocks collapsed. |
| Cache notices (Conversation) | Switch | Off | Add a row to the chat when the prompt cache expires or resets, or the provider drops earlier reasoning. |
| Todos badge (Conversation) | Switch | On | Show the agent's todo progress as a badge in the composer. |
| Artifacts (Conversation) | Switch | On | Track each session's pull requests, branches, commits and files. |
| Keep scroll position (Conversation) | Switch | On | Reopen each conversation where you left it. |
| Diagrams (Conversation) | Switch | On | Draw Mermaid code blocks in replies as diagrams in your theme's colors. Off shows their code. |
| Tool calls display (Tool activity) | Choice: Formatted, Full, Hidden | Formatted | Show tool calls as a summary, their full input, or not at all. |
| Tool outputs (Tool activity) | Switch | On | Show the output under each tool call. |
| Edit diffs (Tool activity) | Switch | On | Show file edits as diffs. |
| Tool attachments (Tool activity) | Switch | On | Gather the images tool calls return under the Working block. |
| Group tool calls (Tool activity) | Switch | On | Fold each exchange's tool calls into one row. |
| Full shell output (Tool activity) | Switch | Off | Show every line of ! command output, not only the last 10. |
| Show codemode tool calls (Tool activity) | Switch | Off | List the calls each script makes under its row. Calls that start a subagent always show. |
| Stream progress (Tool activity) | Switch | Off | Show which line of a script runs, how many of its calls are done, and what it prints, while it runs. |
| Smooth streaming (Streaming) | Switch | On | Reveal replies at a steady pace as they stream. |
| Throbber (Streaming) | Switch | Off | Animate an indicator while the agent works. |
| Messages during a run (Composer) | Choice | queue | What happens to a message that you send while the agent works. Alt+Enter sends one message the other way. |
| Paste attachments (Composer) | Switch | On | Turn dropped images and long pastes into attachments. |
| Inline autocomplete (Composer) | Switch | On | Suggest the rest of a path as you type. Tab accepts. |
| Suggest the next prompt (Composer) | Switch | Off | After a run, suggest a next message in the empty composer. Uses the text model. |
| Run details in the sidebar (Sidebar & usage) | Switch | On | Show each run's activity, time, commits and pull requests in the sidebar. |
| Check usage (Sidebar & usage) | Switch | On | Fetch plan limits and credits from signed-in providers and GitHub. |
| Usage indicator (Sidebar & usage) | Switch | On | Show the plan usage gauge in the footer. |
| Terminals (Terminal & browser) | Switch | On | Show terminals next to the chat. They run where the session runs. |
| Close terminals that exit cleanly (Terminal & browser) | Switch | On | Close a terminal once its shell exits cleanly. Failed ones stay open. |
| Browser tab (Terminal & browser) | Switch | On | Show a browser in the side panel to preview your app. |
| Show the browser when the agent uses it (Terminal & browser) | Switch | On | Open the Browser tab when the agent starts using it. |
| Ask before syncing (Git) | Switch | On | Confirm before the git bar pulls, pushes or publishes your branch. |

Conversation starts with a sample conversation and four tabs: Your settings, Focused, Balanced and Detailed. A tab only previews. Use Balanced, for example, sets every transcript setting of that preset. The rows below change one setting at a time, and the Your settings tab follows them. The command palette has the same presets, under Conversation preset.

Diagrams, under Conversation, draws Mermaid code blocks in replies as diagrams in your theme's colors ([diagrams](https://zidane.si/docs/desktop-transcript.md#diagrams)). Turn it off to see their code.

Try the conversation rows live: [transcript](https://zidane.si/docs/desktop-transcript.md#density-and-display).

Clear site data for this project, under Terminal & browser, removes the dev browser's cookies and storage for the project. Terminals run only in the daemon. So that section also shows the daemon's connection, or a link to Advanced › Experimental › Shared daemon runtime while the daemon is off.

![Settings, Interface.](https://zidane.si/captures/settings-interface-light.webp)

### Appearance

Mode, themes, accent, app icon, fonts, sizes and motion: [appearance and themes](https://zidane.si/docs/desktop-appearance.md).

### Files & editor

How the Files panel opens and edits files.

| Setting | Control | Default | Description |
| - | - | - | - |
| Open files and diffs in (Opening) | Segmented: $EDITOR, Panels | Panels | Where a clicked file, folder or diff goes. ⌘-click flips it. |
| File tree side (Opening) | Segmented: Left, Right | Left | Where the Files panel keeps its tree. |
| Edit files in the panel (Editing) | Switch | On | Type in the viewer. ⌘S saves. Zidane never overwrites a file the agent changed after you opened it. |
| Save (Editing) | Segmented: ⌘S, On focus loss | ⌘S | When Zidane writes your edits to disk. |
| Tab size (Editing) | Segmented: 2, 4 | 2 | Spaces per indent level in the panel editor. |
| Wrap long lines (Editing) | Switch | Off | Wrap lines wider than the editor instead of scrolling sideways. |
| Match brackets (Editing) | Switch | On | Highlight the bracket pair around the caret. |
| Rounded selection (Editing) | Switch | On | Draw text selections with rounded corners. |
| Auto-surround (Editing) | Segmented: Both, Quotes, Brackets, Off | Both | Typing a quote or bracket over a selection wraps it. |
| Check files with the project's tools (Diagnostics) | Segmented: Off, Project tools, + Language servers | Project tools | Runs the tools the folder uses (tsc, ESLint, Biome, Ruff, cargo check, go vet). Findings show as squiggles and under the line. |
| Run (Diagnostics) | Segmented: On open, On save | On open | On open checks again each time the file changes on disk. On save checks only after you save. |
| Timeout (Diagnostics) | Slider: 5 s to 300 s | 60 s | Per tool, per run. Whole-project checks (tsc, cargo) are slow on big repos. |
| Hovers (Language servers) | Switch | On | Show types and docs when the pointer rests on a symbol. |
| Completion (Language servers) | Switch | On | Suggest names while you type. Ctrl+Space asks anywhere. |
| Stop when idle (Language servers) | Slider: 1 min to 60 min | 5 min | Zidane stops a server with no open file after this long. It starts again on the next file. |

Under Diagnostics, you turn each project tool off on its own. The Language servers section (with Check files with the project's tools set to + Language servers) lets you change each server's command.

![Settings, Files & editor.](https://zidane.si/captures/settings-editor-light.webp)

### Keybindings

Every shortcut, grouped as on the [keyboard map](https://zidane.si/docs/desktop-keyboard.md). The tab is read-only. Edit in file opens `keybindings.json`, and Reload applies it without a restart ([rebind a key](https://zidane.si/docs/desktop-keyboard.md#rebind-a-key)).

## Accounts

Your provider keys and sign-ins, shared with the CLI and the TUI. When Settings edits a server, this page shows the server's keys and sign-ins. They stay on the server.

| Action | Does |
| - | - |
| Set key, Replace key, Clear | Saves, changes or removes a provider's API key |
| Sign in with *provider* | Signs in with an account: Sign in with Claude, ChatGPT, xAI or Cursor. Sign in with Google (Google Vertex AI) shows only when a Google OAuth client is set (`ZIDANE_GOOGLE_CLIENT_ID`). |
| Add account | Adds another account to a provider you already signed in to. You name the account first. |
| Configure, Edit config | Sets the fields of a provider that needs more than a key: the project and location of Google Vertex AI, or the base URL, key and default model of a local server |
| Remove (on a credential) | Deletes one key or account, after a confirmation |

A provider with several credentials (a key and an account) lists each one and marks the one in use. Click another to switch. A key from an environment variable shows for context only. Sign-in methods: [providers](https://zidane.si/docs/providers.md). Where credentials are saved: [files and folders](https://zidane.si/docs/files.md).

![Settings, Accounts: providers with their keys and sign-ins.](https://zidane.si/captures/settings-accounts-light.webp)

### Hosts

With Settings › Advanced › Experimental › Remote hosts on, this page lists this computer and your saved servers. Add, test, rename or remove one, and set up its machines and settings sync ([hosts, server and sync](https://zidane.si/docs/desktop-hosts.md)).

The tutorial at the top explains zidane-server. It runs zidane on another machine with no window, such as a VPS. The tutorial has the command that starts it, `zidane server start`, with a copy button ([install the server](https://zidane.si/docs/server-install.md)).

## Advanced

| Setting | Control | Default | Description |
| - | - | - | - |
| Shared daemon runtime (Experimental) | Switch | Off | Runs keep going when windows close and show in every window. |
| Remote hosts (Experimental) | Switch | Off | Run sessions on other machines through zidane-server. |
| Main session (Experimental) | Switch | Off | Pin a session that starts, steers and reads your other sessions. |
| Project home (Experimental) | Switch | Off | Click a project in the sidebar to open its home: a new chat with the project's recent sessions, usage and blocks from extensions. |
| Persist large tool results (Agent internals) | Switch | On | Save tool outputs over 8 KB to disk and keep a preview in the chat. |
| Stable tool list (call_tool) (Agent internals) | Switch | On | Use found MCP tools through call_tool so the prompt cache stays valid. Off adds them to the tool list instead. |
| Freeze session prompt (Agent internals) | Switch | On | Keep each session's system prompt as its first run saw it and tell the model about later changes. /refresh re-reads it. |
| Compact before the cache expires (Agent internals) | Switch | Off | Experimental. When a long session sits idle, compact it a minute before its prompt cache runs out, so your next message reads a short summary instead of re-reading the whole conversation. |
| Short MCP tool list (Agent internals) | Switch | Off | Experimental. List MCP tools by name only in the prompt; the model looks up a tool before using it. Saves tokens when many tools are connected. |
| Preserved thinking (Anthropic only) (Agent internals) | Choice: Drop silently, Fail the run, Account default | Drop silently | What to do with reasoning that no longer matches the conversation. |
| Max output tokens (Agent internals) | Choice: Model max, 8K, 16K, 32K, 64K | Model max | The most the model may write per turn. |
| Auto-resume on output limit (Agent internals) | Switch | Off | Keep going when an answer hits the model's output limit. |
| Provider retry attempts (Agent internals) | Choice: Default (3), 1 (no retry), 2, 3, 5, 8 | Default (3) | How many times to retry a failed or stalled provider call. |

![Settings, Advanced.](https://zidane.si/captures/settings-advanced-light.webp)

### Logs

Live extension warnings, MCP diagnostics and host debug lines. The filter box narrows them. Follow new lines keeps the view at the latest line.

![Settings, Logs.](https://zidane.si/captures/settings-logs-light.webp)

### Performance

Live figures, every 2 seconds. Sampling runs only while this page or the overlay is open.

The six tiles at the top are Zidane's own CPU, memory, GPU (the whole GPU on macOS, all apps), main-thread load, main-thread lag and the monitor's own cost. A **+** badge on CPU and memory is what your sessions and terminals launched.

Each list below folds away, and its header sums it up:

- **Processes** (open): a tree that opens one level at a time. A closed row shows how many processes it holds and what they use together. Its columns still show its own figures. **Zidane** holds the app, the daemon, MCP servers, language servers and helpers. **Launched** holds what an agent's commands, a background task or a terminal started, such as a dev server or a benchmark. A row's tooltip has its pid and command line. An MCP server's process has a badge: **shared** with the number of sessions that use it, or **per session**. Its tooltip names the server. The list button on a row shows its operating-system threads (macOS doesn't name them). CPU is percent of one core.
- **Sessions**: each session running something (its commands, terminals and own MCP servers), with what they use together. Open one to see its processes.
- **Threads**: the main process's event loop, its worker threads, each window and its workers.
- **Slow frames**: the scripts that ran in frames over 50 ms. "(rendering)" is style, layout and paint.
- **IPC**: calls, total time, p95 and worst case per channel.
- **CPU profile**: records the main process or this window, then lists the functions that took the most time. The `.cpuprofile` file opens in Chrome DevTools › Performance.

The IPC and slow-frame counters are always on and cost nothing while the app is idle. **Reset counters** starts them again. **Export report** writes a JSON summary with findings to `~/Library/Application Support/Zidane/perf/`. An agent can do the same through the dev browser or CDP: `await window.__zidanePerf.report()`, and `await window.__zidanePerf.profile('main', 5)` for a profile.

The command palette's **Performance overlay** shows CPU, memory, main-thread load and lag, and the busiest process, in a corner of the window.

#### On a server

Pick a server in the Settings host switcher and Performance shows that server's own figures: the server process and what it runs (its MCP servers, language servers and helpers under **Zidane**, what its sessions started under **Launched**), its sessions, its event loop under **Threads**, and its GPU when it runs on macOS. The server samples only while the page is open. There are no slow frames, IPC counters, report or CPU profile there: those belong to this app's windows.

It needs an **admin** token for that server. With a `chat` token the page shows greyed out, with an **Admin only** tooltip. A server too old to report it says **Not available on this host**.

## Reference

- [`zidane/chat` settings](https://zidane.si/docs/reference/chat.md): the `Settings` type and `DEFAULT_SETTINGS`.
- [`Form` rows](https://zidane.si/docs/reference/ui-components-form.md): the kit rows these tabs are built from.
