Desktop
Settings map, Files / Git / Browser, marketplace, automations, and local Web Host pairing.
Desktop is the graphical host. It shares the local daemon with the CLI. Install it from Install Desktop.
Settings map
Basics
| Tab | What it holds |
|---|---|
| General | Notifications, tray / menu bar icon |
| Appearance | Theme, font, UI language, mica / blur, pointer |
Capabilities
| Tab | What it holds |
|---|---|
| Models | Provider connect, model list, keys |
| Agents | LSP, commit / PR attribution |
| Tab | Editor Tab completion |
| Skills | Discover and generate Skills |
| Rules | Rules slots |
| MCPs | MCP servers |
| Hooks | Hooks |
| Dreams | Dreams (Beta) |
Connect
| Tab | What it holds |
|---|---|
| Networks | LLM HTTP version, Web Remote Access |
| Integrations | GitHub Device Login |
| Extensions | Installed extensions, ZIP import |
A Developer tab appears only in Vite dev builds.
Workspace panels
| Tab | Role |
|---|---|
| Files | Tree, Monaco, Markdown preview, plans/ |
| Git | Changes, history, commit / push / merge chips |
| Browser | Embedded browser + element picker (Electron only) |
| Shell | Embedded PTY (Electron only) |
Shell
Desktop (Electron only) has a Shell tab with an embedded PTY. That panel is for you. The agent still goes through shell and approval; it does not type into your PTY.
CLI has no embedded PTY panel. Commands still run through the same shell tool on the shared daemon.
Override the Desktop PTY shell with SPIRIT_TERMINAL_SHELL if you need a specific binary.
Git
The Git tab shows changes and history. Chips on the composer can start commit, push, or merge. This is host UI, not a Skill package.
Those chips inject a fixed prompt. The agent then uses workspace and shell tools.
LSP
Turn language servers on in Settings → Agents, then install a provider if it is missing. Once a server is ready, the agent can call get_diagnostics.
| Id | Languages | How it is installed |
|---|---|---|
typescript-language-server | TypeScript, JavaScript | npm (typescript-language-server) |
pyright | Python | npm (pyright) |
gopls | Go | Go toolchain |
rust-analyzer | Rust | rustup |
clangd | C, C++ | Platform package (for example Homebrew or winget) |
jdtls | Java | Manual |
omnisharp | C# | .NET |
clangd and jdtls are not bundled. Install them yourself, then come back to Settings → Agents.
Tab
Tab is Monaco inline completion. Accept ghost text with one Tab. Open Settings → Tab, enable code completion (codeCompletionEnabled), and assign a lightweight chat model in Settings → Models. That slot also serves other lightweight background tasks.
If completion is empty, check that a lightweight chat model is connected and that the setting is on. This is not the agent conversation.
Marketplace and automations
The sidebar opens the marketplace. Automations have their own view — Desktop only.
Web Host pairing
Desktop can serve a web client on the local machine.
- Default listen:
127.0.0.1:7788 - Settings → Networks → Web Remote Access
- First visit asks for a 6-digit pairing code from that settings page
- Five failed attempts lock pairing until you restart Web Host
- Token is stored in the browser as
spirit-agent-web-host-token
The agent still runs inside the shared daemon. The web client receives an authenticated snapshot; it is not a second agent.
Binding 0.0.0.0 for remote LAN access is not an open product path. The daemon and Web Host stay on loopback by default. A LAN IPv4 listen address in Networks is for a machine you control, not a public server.
Development overrides: SPIRIT_DESKTOP_WEB_HOST=1, SPIRIT_WEB_HOST, SPIRIT_WEB_PORT.