Desktop App
Setup, operator mode, PIN flow, and the Tauri runtime.
The desktop app is a Tauri app (Rust backend + webview) with a Three.js liquescent droplet, chat interface, and full identity/crypto/operator mode support.
It is a preview — see Get Your Agent for the state of the published build; build from source as below.
Running the desktop app
In development mode with the Tauri backend (keyring, operator mode, sync):
pnpm --filter @motebit/desktop tauri:devpnpm --filter @motebit/desktop dev starts Vite alone — the UI without the Rust backend. For a production app bundle:
pnpm --filter @motebit/desktop tauri:build(build is the TypeScript build only.)
First launch
On first launch, you'll see a welcome overlay explaining that motebit creates a local identity and device key. Click Get started to:
- Generate an Ed25519 keypair
- Store the private key in
~/.motebit/dev-keyring.json(owner-only,0600on Unix; Windows is best-effort) - Create your motebit identity
- Register this device
After that, the chat interface appears. Type a message to start talking to your motebit.
Choosing a provider
Open settings (gear icon, top right) to configure your LLM provider:
| Provider | Setup |
|---|---|
| Ollama (default) | Install Ollama, pull a model (ollama pull qwen3), and select "Ollama" in settings |
| Anthropic | Enter your API key in settings. Key is stored in the owner-only (0600) ~/.motebit/dev-keyring.json, never in config.json. |
Set the model name in the Model field. Examples: qwen3, claude-sonnet-5-5. For Anthropic the field suggests three tiers — Claude Opus 5.5 (most capable), Claude Sonnet 5.5 (recommended, the default when the field is empty) and Claude Haiku 5.5 (fastest); any other Claude id, such as claude-fable-5-1, can be typed. A model you already chose is kept as-is when the default changes.
Operator mode
Operator mode unlocks high-risk tools (file writes, shell execution, payments). It's gated by a PIN:
- Toggle Operator Mode in settings
- First time: set a 4-6 digit PIN (stored in the desktop key store,
~/.motebit/dev-keyring.json, as a salted PBKDF2-SHA256 digest, never plaintext) - Subsequent times: enter your PIN to enable
While active, the agent can use R2+ risk tools. Tool calls still produce audit log entries, and specific tools can still require per-call approval.
To reset your PIN, click Reset PIN in settings. This clears the PIN and disables operator mode.
Chat interface
The chat overlay sits at the bottom of the screen, over the 3D droplet:
- User messages — Blue bubbles, right-aligned
- Assistant messages — Frosted glass bubbles, left-aligned
- System messages — Centered, dimmed
- Tool status — Pulsing italic text showing tool execution progress
- Approval cards — Interactive cards for tool approval (Allow/Deny buttons)
Slash commands
Type / to use commands:
| Command | Action |
|---|---|
/model | Show current model |
/model <name> | Switch model |
/settings | Open settings panel |
/help | Show available commands |
Dev mode (without Tauri)
In dev mode (running via Vite without the Tauri backend), the app skips identity bootstrap and uses environment variables:
# .env file in apps/desktop/
VITE_AI_PROVIDER=anthropic
VITE_ANTHROPIC_API_KEY=sk-ant-...No keyring, no operator mode, no sync — just the chat and rendering. Useful for UI development.
Configuration storage
| Data | Storage |
|---|---|
| Provider, model | ~/.motebit/config.json |
| API key | ~/.motebit/dev-keyring.json (owner-only, via Tauri) |
| Operator PIN hash | ~/.motebit/dev-keyring.json (owner-only, via Tauri) |
| Identity, events, memories | ~/.motebit/motebit.db (SQLite, WAL mode) |