Configuration¶
Openbase CLI reads configuration from environment variables (usually loaded from ~/.openbase/.env).
Most day-to-day settings do not require editing this file: the desktop app and console Settings page cover backend, model, reasoning, voice providers, and environment variables, and the iOS app covers phone-side settings such as backend host and call audio. This page is the underlying reference.
Core Variables¶
| Variable | Required | Default | Purpose |
|---|---|---|---|
OPENBASE_CODER_CLI_SECRET_KEY |
Yes | none | Django secret key |
OPENBASE_CODER_CLI_WEB_BACKEND_URL |
No | https://app.openbase.cloud |
JWT/JWKS source + login endpoints |
OPENBASE_CODER_CLI_JWT_JWKS_URL |
No | <WEB_BACKEND_URL>/.well-known/jwks.json |
JWKS URL for local JWT signature validation |
OPENBASE_CODER_CLI_JWT_AUTH_SESSION_URL |
No | <WEB_BACKEND_URL>/_allauth/app/v1/auth/session |
Fallback endpoint to validate JWTs remotely |
OPENBASE_CODER_CLI_JWT_ISSUER |
No | WEB_BACKEND_URL |
Expected JWT issuer |
OPENBASE_CODER_CLI_JWT_AUDIENCE |
No | openbase-coder-cli |
Expected JWT audience |
OPENBASE_CODER_CLI_ALLOWED_HOSTS |
No | localhost,127.0.0.1 |
Django allowed hosts |
OPENBASE_CODER_CLI_CORS_ORIGINS |
No | http://localhost:8080,http://127.0.0.1:8080 |
CORS allowlist |
OPENBASE_CODER_CLI_DATA_DIR |
No | ~/.openbase |
Data root (DB, static, logs, etc.) |
OPENBASE_CODER_CLI_CONSOLE_BUILD_DIR |
No | inferred from install config | Console dist directory |
SUPER_AGENTS_CODEX_PROFILE_PATH |
No | ~/.codex/openbase.config.toml |
TOML settings applied to each Openbase Codex thread |
SUPER_AGENTS_OPENBASE_CLOUD_CODEX_PROFILE_PATH |
No | ~/.codex/openbase-cloud.config.toml |
Thread-scoped Cloud Codex provider profile |
SUPER_AGENTS_CLAUDE_SETTINGS_PATH |
No | ~/.openbase/profiles/claude/settings.json |
Claude session-only settings layer |
SUPER_AGENTS_CLAUDE_MCP_CONFIG_PATH |
No | ~/.openbase/profiles/claude/mcp.json |
Additional MCP servers for Openbase Claude sessions |
OPENBASE_CODING_BACKEND |
No | codex from new setup env files |
codex, openbase_cloud, or claude_code backend. openbase_cloud runs Cloud-proxied Claude Code |
SUPER_AGENTS_DEFAULT_BACKEND |
No | spawning agent's backend | Default backend for new child threads in one Super Agents MCP process; an explicit per-launch backend can override it |
OPENBASE_CLOUD_ANTHROPIC_BASE_URL |
No | <WEB_BACKEND_URL>/api/openbase/llm/anthropic |
Anthropic-compatible proxy base URL for the visible Openbase Cloud Claude Code backend |
OPENBASE_CLOUD_ANTHROPIC_AUTH_TOKEN |
No | generated by openbase-coder auth print-machine-token |
Test/override token for the Openbase Cloud Claude Code proxy |
OPENBASE_CLOUD_LLM_BASE_URL |
No | <WEB_BACKEND_URL>/api/openbase/llm/openai/v1 |
Legacy Openbase Cloud Responses-compatible proxy base URL for internal Codex compatibility |
OPENBASE_CLOUD_CODEX_MODEL |
No | gpt-5.5 |
Model name used by the internal Openbase Cloud Codex compatibility backend |
SUPER_AGENTS_CLAUDE_PERMISSION_MODE |
No | bypassPermissions |
Claude SDK permission mode. Use default or acceptEdits to route tool requests through Openbase's approval queue |
Conversation Profiles¶
Setup installs Openbase profiles for both Codex and Claude Code. Normal terminal sessions retain their own model, reasoning, permissions, hooks, and MCP settings. Openbase may add shared skills and, by default, registers the Super Agents MCP server in the default Codex and Claude Code configurations so plain terminal sessions can dispatch Super Agents (pass --no-shared-super-agents-mcp to setup or profiles install to opt out; an existing entry of your own is never replaced). Setup does not create or replace the user's AGENTS.md or CLAUDE.md instructions.
Codex's openbase.config.toml is also usable with codex -p openbase. Codex does not accept --profile on app-server, so Openbase loads the same TOML file through thread/start and thread/resume configuration overrides. The shared daemon receives no global model, provider, reasoning, or service-tier overrides, including for the internal Cloud Codex backend. Role-specific model and reasoning choices are applied to the relevant conversation.
Claude Code uses --settings for a session-only profile rather than a named --profile option. Openbase supplies its settings and MCP files through the Claude SDK. Authentication and conversation storage remain in the user's existing Claude home; Openbase does not redirect CLAUDE_CONFIG_DIR or duplicate login credentials.
The Codex profile also registers the session-ID hook for native codex -p openbase commands. App-server configuration overrides do not guarantee execution of native file hooks; Openbase's Super Agents client supplies thread identity through developer instructions and shell environment independently. Claude runs its profile hooks through the native session settings layer.
Existing installations can run openbase-coder profiles install, then restart Openbase services. Setup and this repair command migrate identifiable Openbase MCP and session-ID hook entries out of user configuration, leaving unrelated entries intact. Pass --include-default-hooks to explicitly reinstall the session-ID hook in the default Codex and Claude Code configurations as well as the Openbase profiles. Changed user files receive a .before-openbase-profiles backup. Existing profile settings are preserved on repeated setup; invalid explicitly selected profiles fail instead of silently falling back to terminal defaults.
Dispatcher Config¶
Openbase runtime settings that are shared by LiveKit, CLI commands, and MCP
tools live in ~/.openbase/dispatcher-config.json.
Useful keys:
| Key | Purpose |
|---|---|
dispatcher_reasoning_effort |
Default dispatcher reasoning effort |
super_agents_reasoning_effort |
Default Super Agents reasoning effort |
backend_models |
Backend-specific default dispatcher and default Super Agents models for codex, openbase_cloud, and claude_code. The picker offers the latest Terra, Luna, Sol, and Astra; legacy model IDs remain valid in stored configuration |
voice_model |
The model that listens and speaks on voice calls: gpt-live-1 (default, GPT-Live full duplex through Openbase Cloud with your Openbase account) or pipeline (the classic speech-to-text, agent turn, text-to-speech path that uses the stt_provider and tts_provider settings) |
voice_model_auto_switch |
Present when the runtime switched voice_model to pipeline on its own because GPT-Live credits ran out (reason, from_model, at). Shown in call settings; removed by any explicit voice model choice |
Fresh Openbase Cloud installs write haiku for both roles, so the stored configuration, Settings UI, and model actually requested by the runtime agree. The catalog disables models that a free or trial account cannot run as named, including Sonnet, with the reason “Requires a paid plan.” The Cloud proxy continues to route older trial configurations that explicitly contain sonnet to Haiku for compatibility.
The voice model is picked like the agent model: one selectable id whose engine follows from it. openbase-coder defaults voice-model [MODEL] shows or sets this key (see defaults), as does the Voice Model setting in the desktop app, console, and the iOS and Android apps. A change applies to the next voice call; no restart is needed. LIVEKIT_VOICE_MODEL in the environment acts as a fallback when the key is absent.
Agent/Voice Variables¶
| Variable | Required | Purpose |
|---|---|---|
LIVEKIT_API_KEY |
Yes | LiveKit server auth |
LIVEKIT_API_SECRET |
Yes | LiveKit server auth |
LIVEKIT_URL |
Yes | LiveKit websocket URL |
LIVEKIT_AGENT_LOAD_THRESHOLD |
Optional | Worker load cutoff; defaults to inf (no load-based rejection). Set a positive finite value to enable load shedding. Requires restarting the voice service. |
CODEX_APP_SERVER_URL |
Yes | Codex app-server endpoint (unix:// by default on macOS/Linux; WebSocket compatibility URL on Windows or explicit deployments) |
LIVEKIT_CODEX_THREAD_CWD |
Yes | Shared Codex thread working directory |
ASSEMBLY_AI_API_KEY |
Optional | Speech-to-text provider |
CARTESIA_API_KEY |
Optional | Text-to-speech provider |
CARTESIA_VOICE_ID |
Optional | Text-to-speech voice ID |
OPENBASE_CODER_TTS_REPLACEMENTS_PATH |
Optional | Override the editable TTS replacements file path |
The voice worker on your computer or Cloud DevSpace accepts calls even when CPU load is high, for both GPT-Live and pipeline voice. This prevents load-based rejection from leaving your phone waiting for an agent; it does not guarantee audio quality on an overloaded machine. Deployments that intentionally share a worker can set LIVEKIT_AGENT_LOAD_THRESHOLD explicitly to limit load.
TTS Replacements¶
Openbase Coder formats spoken text before sending it to Cartesia. Built-in
pronunciation defaults cover common acronyms such as AWS, API, TTS, and
LLM.
To add or override pronunciations without rebuilding or restarting Openbase or the voice process, edit:
The formatter checks this file on each TTS formatting pass and reloads it when the path, modification time, or size changes. The file is optional. If it is missing or invalid, Openbase Coder keeps using built-in defaults.
Example:
acronyms are spoken letter by letter and are matched case-insensitively.
replacements and term_pronunciations are exact term-to-pronunciation maps.
Auth Modes¶
All protected API routes support either:
- The owner-only installation capability in
~/.openbase/local-api-token, delivered out of band by the desktop app oropenbase-coder auth open-console. - An owner JWT validated against
OPENBASE_CODER_CLI_JWT_JWKS_URL(with fallback validation againstOPENBASE_CODER_CLI_JWT_AUTH_SESSION_URL).
The capability file is created with mode 0600. Rotate it with
openbase-coder auth print-local-api-token --rotate; clients holding the old
value lose access immediately. There is no environment setting that disables
this authentication boundary. WebSocket auth accepts the same credentials in
its ?token= query parameter.