Desktop app
The Ethos desktop app is an Electron shell that provides a native Mac, Windows, and Linux interface with the same agent capabilities as the CLI and web dashboard. It runs in local mode (embedded server) or remote mode (connected to an external Ethos instance).
Source
apps/desktop/src/main/index.ts— Electron main process: window lifecycle and startup modeapps/desktop/src/main/serve.ts— embeddedweb-apiprocess for local modeapps/desktop/src/main/keychain.ts— auth token storage via ElectronsafeStorageapps/desktop/src/renderer/— the web UI rendered inside the native window
Synopsis
The desktop app wraps the Ethos web UI in a native window. It provides:
- Full agent chat with streaming responses and tool events
- Settings panel for personality, MCP server, and connection management
- Local mode with an embedded
web-apiprocess (no separate server required) - Remote mode connecting to any running Ethos server instance
- Status bar indicator showing connection state
All sessions and memory use the same ~/.ethos/ directory as the CLI.
Installation
Download the installer for your platform from the releases page.
| Platform | Format | Notes |
|---|---|---|
| macOS | .dmg | Universal binary (Intel + Apple Silicon). Drag to /Applications. |
| Windows | .exe installer | Standard Windows installer. Adds a Start Menu entry. |
| Linux | .AppImage, .deb | AppImage is portable; .deb integrates with apt. |
Local mode
Local mode is the default. The app starts an embedded web-api process, equivalent to running ethos serve --web from the CLI. No separate server installation is required.
Sessions are stored in ~/.ethos/ — the same directory the CLI uses. Switching between the desktop app and ethos chat from the same working directory shares conversation history through the standard session keying model.
Remote mode
Connect to a remote Ethos server instead of running locally. The connection target is any running ethos serve --web or ethos run-all instance — a VPS, home server, or team deployment.
Configure the connection:
- Open Settings → Connection.
- Select Remote.
- Enter the server URL and auth token.
- Select Test Connection to verify.
- Select Save.
┌─────────────────────────────────────┐
│ Connection Settings │
├─────────────────────────────────────┤
│ │
│ Mode: ○ Local ● Remote │
│ │
│ Server URL │
│ ┌─────────────────────────────────┐│
│ │ https://ethos.example.com ││
│ └─────────────────────────────────┘│
│ │
│ Auth Token │
│ ┌─────────────────────────────────┐│
│ │ •••••••••••••••••••• ││
│ └─────────────────────────────────┘│
│ Stored in OS keychain │
│ │
│ [ Test Connection ] [ Save ] │
│ │
│ Status: ● Connected (142ms) │
│ │
└─────────────────────────────────────┘
Security
The auth token is stored in the OS keychain via Electron safeStorage. It is never written to config files or stored on disk in plaintext.
| Concern | Handling |
|---|---|
| Token storage | OS keychain (safeStorage) — encrypted at rest by the OS |
| Transport | HTTPS recommended for all remote connections |
| Token transmission | Sent only over the configured connection — not logged, not included in crash reports |
Status bar indicator
The status bar shows the current connection state.
| Indicator | Meaning |
|---|---|
| Green dot — "Local" | Running the embedded web-api process |
| Blue dot — "Remote: hostname" | Connected to a remote server |
| Red dot — "Disconnected" | Connection lost; the app is attempting to reconnect |
Switching between local and remote
Open Settings → Connection and toggle between Local and Remote. Switching modes restarts the agent session.
graph LR
A[Desktop App] --> B{Mode}
B -->|Local| C[Embedded web-api]
B -->|Remote| D[HTTPS] --> E[Remote Ethos Server]
See also
- CLI platform — the terminal surface that shares the same
~/.ethos/state directory. - Configure providers — provider chain and key rotation shared across all surfaces.
- Glossary —
session,personality,agent.