Environment Variables
All EDGECRAB_* variables are applied via apply_env_overrides() in config.rs. They override the corresponding config.yaml values at runtime.
Core Agent Variables
Section titled “Core Agent Variables”| Variable | Type | Default | Description |
|---|---|---|---|
EDGECRAB_HOME | path | ~/.edgecrab | Override the EdgeCrab home directory |
EDGECRAB_MODEL | string | anthropic/claude-sonnet-4-20250514 | Default LLM model |
EDGECRAB_MAX_ITERATIONS | integer | 90 | Max tool call iterations per session |
EDGECRAB_TIMEZONE | string | (system) | IANA timezone (e.g. America/New_York) |
EDGECRAB_REASONING_EFFORT | string | "" | Reasoning budget: low, medium, high, xhigh |
EDGECRAB_SAVE_TRAJECTORIES | bool | false | Log full trajectory to file |
EDGECRAB_SKIP_CONTEXT_FILES | bool | false | Skip SOUL.md and AGENTS.md loading |
EDGECRAB_SKIP_MEMORY | bool | false | Disable memory for this session |
EDGECRAB_MANAGED | bool | false | Block all config writes (1 to enable) |
Gateway Variables
Section titled “Gateway Variables”| Variable | Type | Description |
|---|---|---|
EDGECRAB_GATEWAY_HOST | string | Gateway bind host (default: 127.0.0.1) |
EDGECRAB_GATEWAY_PORT | integer | Gateway bind port (default: 8080) |
EDGECRAB_GATEWAY_WEBHOOK | bool | Enable/disable webhook endpoint |
Telegram Variables
Section titled “Telegram Variables”| Variable | Type | Description |
|---|---|---|
TELEGRAM_BOT_TOKEN | string | Required. Auto-enables Telegram platform |
TELEGRAM_ALLOWED_USERS | csv | Comma-separated allowed Telegram usernames |
TELEGRAM_HOME_CHANNEL | string | Chat ID for proactive messages |
Discord Variables
Section titled “Discord Variables”| Variable | Type | Description |
|---|---|---|
DISCORD_BOT_TOKEN | string | Required. Auto-enables Discord platform |
DISCORD_ALLOWED_USERS | csv | Comma-separated Discord user IDs |
DISCORD_HOME_CHANNEL | string | Channel ID for proactive messages |
Slack Variables
Section titled “Slack Variables”| Variable | Type | Description |
|---|---|---|
SLACK_BOT_TOKEN | string | Required (with SLACK_APP_TOKEN). Auto-enables Slack |
SLACK_APP_TOKEN | string | Required (with SLACK_BOT_TOKEN). Socket Mode app token |
SLACK_ALLOWED_USERS | csv | Comma-separated Slack user IDs |
Signal Variables
Section titled “Signal Variables”| Variable | Type | Description |
|---|---|---|
SIGNAL_HTTP_URL | string | Required (with SIGNAL_ACCOUNT). signal-cli HTTP daemon URL |
SIGNAL_ACCOUNT | string | Required (with SIGNAL_HTTP_URL). Registered phone number |
WhatsApp Variables
Section titled “WhatsApp Variables”| Variable | Type | Description |
|---|---|---|
WHATSAPP_ENABLED | bool | Enable WhatsApp (1, true, or yes) |
WHATSAPP_MODE | string | Bridge mode: self-chat or any-sender |
WHATSAPP_ALLOWED_USERS | csv | Comma-separated phone numbers |
WHATSAPP_BRIDGE_PORT | integer | Bridge port (default: 3000) |
WHATSAPP_BRIDGE_URL | string | Override bridge URL |
WHATSAPP_SESSION_PATH | path | Bridge session storage path |
WHATSAPP_REPLY_PREFIX | string | Text prepended to all replies |
TTS / STT Variables
Section titled “TTS / STT Variables”| Variable | Type | Description |
|---|---|---|
EDGECRAB_TTS_PROVIDER | string | TTS provider: edge-tts, openai, elevenlabs |
EDGECRAB_TTS_VOICE | string | TTS voice name |
ELEVENLABS_API_KEY | string | ElevenLabs API key |
Provider API Keys
Section titled “Provider API Keys”These are not EDGECRAB_* variables — they are standard API key env vars detected by setup.rs:
| Variable | Provider |
|---|---|
OPENROUTER_API_KEY | OpenRouter (default endpoint) |
ANTHROPIC_API_KEY | Anthropic |
OPENAI_API_KEY | OpenAI |
GOOGLE_API_KEY | Google Gemini |
XAI_API_KEY | xAI Grok |
DEEPSEEK_API_KEY | DeepSeek |
HUGGING_FACE_HUB_TOKEN | HuggingFace |
ZAI_API_KEY | ZAI |
GITHUB_TOKEN | GitHub Copilot |
Ollama and LM Studio require no API key.
Other Service Variables
Section titled “Other Service Variables”| Variable | Service | Description |
|---|---|---|
HONCHO_API_KEY | Honcho | Enables cloud sync (auto-sets honcho.cloud_sync: true) |
HA_URL | Home Assistant | Base URL (enables Home Assistant tools) |
HA_TOKEN | Home Assistant | Long-lived access token |
CDP_URL | Browser | Chrome DevTools Protocol endpoint (instead of local Chrome) |
Boolean Parsing
Section titled “Boolean Parsing”Variables marked as bool accept: 1, true, yes, on (case-insensitive) to enable. Any other value (including empty) is treated as disabled.
CSV Parsing
Section titled “CSV Parsing”Variables marked as csv accept comma-separated values with optional whitespace: "user1, user2, user3".
Common Configurations (FAQ)
Section titled “Common Configurations (FAQ)”Set a different model for one session without editing config.yaml:
EDGECRAB_MODEL=anthropic/claude-opus-4-5 edgecrab run "big refactor task"Debug all environment overrides at startup:
RUST_LOG=edgecrab_core=debug edgecrab run "test" 2>&1 | grep "env override"Disable all file-writing (read-only managed mode):
EDGECRAB_MANAGED=1 edgecrab run "read and summarize src/"Run the gateway on a public interface:
EDGECRAB_GATEWAY_HOST=0.0.0.0 EDGECRAB_GATEWAY_PORT=8443 edgecrab gateway startCombine multiple platforms at once:
export TELEGRAM_BOT_TOKEN=...export DISCORD_BOT_TOKEN=...edgecrab gateway start # both platforms start automaticallyWhat order do settings merge in?
Config resolution: defaults → ~/.edgecrab/config.yaml → EDGECRAB_* env vars → CLI flags.
Environment variables always win over the config file, but CLI flags win over everything.
See Also
Section titled “See Also”- Configuration Reference — full YAML schema with all defaults
- CLI Commands — CLI flags that override env vars at a higher priority
- Self-Hosting Guide — production deployment patterns using env vars