Configuration
Config files, environment variables, models, and MCP servers.
Motebit uses a layered configuration system: config file for non-secret settings, the platform key store for secrets, environment variables for development overrides.
Config file
Location: ~/.motebit/config.json
{
"motebit_id": "01926a3b-...",
"device_id": "d-abcdef12",
"default_provider": "anthropic",
"default_model": "claude-sonnet-5-5",
"sync_url": "https://relay.example.com",
"mcp_servers": [
{
"name": "filesystem",
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/docs"],
"trusted": true
}
]
}Config fields
| Field | Type | Description |
|---|---|---|
motebit_id | string | Your motebit's UUID (auto-generated on first launch) |
device_id | string | This device's registration ID |
default_provider | "anthropic" | "openai" | "google" | "groq" | "deepseek" | "local-server" | "proxy" | LLM provider ("ollama" is read as a deprecated alias for "local-server") |
default_model | string | Model identifier |
sync_url | string | Sync relay server URL (optional) |
mcp_servers | array | MCP server configurations (see Tools) |
Secrets
Secrets are stored in the platform key store, never in the config file (desktop: the owner-only ~/.motebit/dev-keyring.json; mobile: the iOS Keychain / Android Keystore):
| Key | Description |
|---|---|
device_private_key | Ed25519 device private key (the CLI keeps it PBKDF2-encrypted in config.json instead) |
<vendor>_api_key | Per-vendor LLM keys: anthropic_api_key, openai_api_key, google_api_key, deepseek_api_key, groq_api_key; voice keys elevenlabs_api_key, inworld_api_key, deepgram_api_key |
sync_master_token | Sync relay authentication token |
operator_pin_hash | Operator PIN as a salted PBKDF2-SHA256 digest (100 000 iterations, salt:derived) |
api_key | Legacy single-vendor slot — read for migration only, never written |
On desktop, the Tauri app keeps these in ~/.motebit/dev-keyring.json — owner-only (0600 on Unix; Windows is best-effort), access-controlled rather than application-encrypted; moving them into the OS keychain is its own arc. On CLI, the private key is encrypted with PBKDF2 and stored in the config file (the only exception to the "no secrets in config" rule, and it's encrypted).
Environment variables (dev mode)
For development without Tauri:
# apps/desktop/.env
VITE_AI_PROVIDER=anthropic
VITE_ANTHROPIC_API_KEY=sk-ant-...These are only used in Vite dev mode. Production builds read from config + keyring.
Database
Location: ~/.motebit/motebit.db
SQLite in WAL mode. Stores events, memories, identities, devices, audit logs, and state snapshots.
Models
Ollama
Install Ollama and pull a model:
ollama pull llama3.2
ollama pull mistral
ollama pull codellamaSet default_provider: "local-server" and default_model: "qwen3" in config, or use the CLI flag --provider local-server --model qwen3. (A config written with the older default_provider: "ollama" still loads; the --provider ollama flag alias was removed in motebit 2.0.0.)
Ollama runs on http://localhost:11434 by default.
Anthropic
Set your API key via the desktop settings panel (stored in ~/.motebit/dev-keyring.json) or environment variable. Set default_provider: "anthropic" and default_model: "claude-sonnet-5-5".
Every surface's Anthropic model picker offers the same three tiers: Claude Opus 5.5 (claude-opus-5-5, most capable), Claude Sonnet 5.5 (claude-sonnet-5-5, recommended and the default) and Claude Haiku 5.5 (claude-haiku-5-5, fastest). Other Claude ids, such as claude-fable-5-1, are accepted by id. A stored model is never rewritten when the default changes.
Custom endpoints
The AnthropicProvider (Anthropic Messages API client) and OpenAIProvider (OpenAI-compatible client) both support custom base URLs in code via the provider configuration. Note that base_url is not currently read from config.json by the CLI -- it must be set programmatically when constructing a provider.