Skip to content

Bring your own keys

On self-host, you provide the API keys for voice and the brain. This page covers what to put where.

KeyUsed forWhere
OPENAI_API_KEYVoice (Realtime API).env
ANTHROPIC_API_KEYBrain (Claude).env, or use a logged-in claude CLI

Set VB_MODEL_PROVIDER in .env to switch where the brain runs:

VB_MODEL_PROVIDERRoutes throughAlso set
(blank) / anthropicAnthropic API / your Claude subscription
bedrockAmazon BedrockAWS creds (standard chain), VB_AWS_REGION
vertexGoogle Vertex AIGCP ADC, VB_VERTEX_REGION, VB_VERTEX_PROJECT
proxyAn Anthropic-compatible gateway (LiteLLM, internal relay)VB_ANTHROPIC_BASE_URL, VB_ANTHROPIC_AUTH_TOKEN

For Bedrock and Vertex, also set VB_PROVIDER_MODEL and VB_PROVIDER_FAST_MODEL if the defaults don’t match.

The Settings → Brain card in the app shows the live backend (e.g. “Claude Code session · via bedrock”) so you can confirm.

If you connect Stripe, Cloudflare, Vercel, or any API-key connector, the key is stored in the vault outside the brain’s working directory. The brain sees that a connection exists; it never sees the raw token.

  • .env — root keys (OpenAI, Anthropic, gate credentials).
  • <vault>/ — encrypted store for connector keys.
  • The native app — your Apple Secure Enclave for SSH keys; see Key storage.

Edit .env, then:

Terminal window
docker compose restart gray
# or: systemctl restart voice-brain

For connector keys, Settings → Connections → tap the service → Edit.