All EDGECRAB_* variables are applied via apply_env_overrides() in config.rs. They override the corresponding config.yaml values at runtime.
Variable Type Default Description EDGECRAB_HOMEpath ~/.edgecrabOverride the EdgeCrab home directory EDGECRAB_MODELstring ollama/gemma4:latestDefault LLM model EDGECRAB_MAX_ITERATIONSinteger 90Max tool call iterations per session EDGECRAB_TIMEZONEstring (system) IANA timezone (e.g. America/New_York) EDGECRAB_REASONING_EFFORTstring ""Reasoning budget: low, medium, high, xhigh EDGECRAB_SAVE_TRAJECTORIESbool falseLog full trajectory to file EDGECRAB_WORKTREEbool falseLaunch agent sessions in isolated git worktrees by default EDGECRAB_SKIP_CONTEXT_FILESbool falseSkip SOUL.md and AGENTS.md loading EDGECRAB_SKIP_MEMORYbool falseDisable memory for this session EDGECRAB_MANAGEDbool falseBlock all config writes (1 to enable)
Variable Type Description EDGECRAB_GATEWAY_HOSTstring Gateway bind host (default: 127.0.0.1) EDGECRAB_GATEWAY_PORTinteger Gateway bind port (default: 8080) EDGECRAB_GATEWAY_WEBHOOKbool Enable/disable webhook endpoint
Variable Type Description TELEGRAM_BOT_TOKENstring Required. Auto-enables Telegram platformTELEGRAM_ALLOWED_USERScsv Comma-separated allowed Telegram usernames TELEGRAM_HOME_CHANNELstring Chat ID for proactive messages
Variable Type Description DISCORD_BOT_TOKENstring Required. Auto-enables Discord platformDISCORD_ALLOWED_USERScsv Comma-separated Discord user IDs DISCORD_HOME_CHANNELstring Channel ID for proactive messages
Variable Type Description SLACK_BOT_TOKENstring Required (with SLACK_APP_TOKEN). Auto-enables SlackSLACK_APP_TOKENstring Required (with SLACK_BOT_TOKEN). Socket Mode app tokenSLACK_ALLOWED_USERScsv Comma-separated Slack user IDs
Variable Type Description SIGNAL_HTTP_URLstring Required (with SIGNAL_ACCOUNT). signal-cli HTTP daemon URLSIGNAL_ACCOUNTstring Required (with SIGNAL_HTTP_URL). Registered phone number
Variable Type Description WHATSAPP_ENABLEDbool Enable WhatsApp (1, true, or yes) WHATSAPP_MODEstring Bridge mode: self-chat or any-sender WHATSAPP_ALLOWED_USERScsv Comma-separated phone numbers WHATSAPP_BRIDGE_PORTinteger Bridge port (default: 3000) WHATSAPP_BRIDGE_URLstring Override bridge URL WHATSAPP_SESSION_PATHpath Bridge session storage path WHATSAPP_REPLY_PREFIXstring Text prepended to all replies
Variable Type Description MATRIX_HOMESERVERstring Required. Homeserver URL (e.g. https://matrix.org)MATRIX_ACCESS_TOKENstring Required. Long-lived access tokenMATRIX_USER_IDstring Full user ID (e.g. @edgecrab:matrix.org) MATRIX_ALLOWED_USERScsv Comma-separated Matrix user IDs
Variable Type Description MATTERMOST_URLstring Required. Server URL (e.g. https://chat.example.com)MATTERMOST_TOKENstring Required. Bot or personal access tokenMATTERMOST_ALLOWED_USERScsv Comma-separated Mattermost user IDs
Variable Type Description DINGTALK_APP_KEYstring Required. DingTalk app AppKeyDINGTALK_APP_SECRETstring Required. DingTalk app AppSecretDINGTALK_ROBOT_CODEstring Robot code if using multiple robots DINGTALK_WEBHOOK_PORTinteger Inbound webhook port
Variable Type Description TWILIO_ACCOUNT_SIDstring Required. Twilio Account SIDTWILIO_AUTH_TOKENstring Required. Twilio Auth TokenTWILIO_PHONE_NUMBERstring Required. Your number in E.164 format (e.g. +15551234567)SMS_WEBHOOK_PORTinteger Local webhook port (default: 8082) SMS_ALLOWED_USERScsv Comma-separated allowed phone numbers (E.164)
Variable Type Description EMAIL_PROVIDERstring Required. One of: sendgrid, mailgun, generic_smtpEMAIL_API_KEYstring Required for SendGrid/Mailgun; optional for SMTP EMAIL_FROMstring Required. Sender address (e.g. bot@example.com)EMAIL_DOMAINstring Required for Mailgun (e.g. mg.example.com) EMAIL_SMTP_HOSTstring Required for generic_smtp EMAIL_SMTP_PORTinteger SMTP port (default: 587) EMAIL_SMTP_USERNAMEstring SMTP username (defaults to EMAIL_FROM) EMAIL_SMTP_PASSWORDstring SMTP password (fallback to EMAIL_API_KEY) EMAIL_WEBHOOK_PORTinteger Inbound webhook port (default: 8093) EMAIL_ALLOWEDcsv Comma-separated allowed sender addresses
Variable Type Description FEISHU_APP_IDstring Required. Feishu/Lark app IDFEISHU_APP_SECRETstring Required. Feishu/Lark app secretFEISHU_WEBHOOK_PORTinteger Inbound webhook port FEISHU_WEBHOOK_HOSTstring Webhook bind host (default: 0.0.0.0) FEISHU_WEBHOOK_PATHstring Webhook path (default: /feishu/webhook) FEISHU_BASE_URLstring Override Feishu API base URL FEISHU_VERIFICATION_TOKENstring Webhook verification token FEISHU_ENCRYPT_KEYstring Webhook payload encryption key FEISHU_BOT_OPEN_IDstring Bot’s open ID (used to filter out own messages) FEISHU_BOT_USER_IDstring Bot’s user ID (alternative to FEISHU_BOT_OPEN_ID) FEISHU_BOT_NAMEstring Bot’s display name (alternative identity filter) FEISHU_GROUP_POLICYstring Group chat message policy
Variable Type Description WECOM_BOT_IDstring Required. WeCom bot corp IDWECOM_SECRETstring Required. WeCom bot secretWECOM_WEBSOCKET_URLstring Override WeCom WebSocket URL
Variable Type Description EDGECRAB_TTS_PROVIDERstring TTS provider: edge-tts, openai, elevenlabs EDGECRAB_TTS_VOICEstring TTS voice name ELEVENLABS_API_KEYstring ElevenLabs API key
These are not EDGECRAB_* variables — they are standard API key env vars detected by setup.rs:
Variable Provider OPENROUTER_API_KEYOpenRouter (default endpoint) ANTHROPIC_API_KEYAnthropic OPENAI_API_KEYOpenAI GOOGLE_API_KEYGoogle Gemini GOOGLE_APPLICATION_CREDENTIALSVertex AI (path to service account JSON) XAI_API_KEYxAI Grok DEEPSEEK_API_KEYDeepSeek MISTRAL_API_KEYMistral AI GROQ_API_KEYGroq (LPU inference) HUGGING_FACE_HUB_TOKENHuggingFace ZAI_API_KEYZ.AI GITHUB_TOKENGitHub Copilot
Ollama and LM Studio require no API key (local inference only).
Variable Service Description HONCHO_API_KEYHoncho Enables cloud sync (auto-sets honcho.cloud_sync: true) HA_URLHome Assistant Base URL (enables Home Assistant tools) HA_TOKENHome Assistant Long-lived access token CDP_URLBrowser Chrome DevTools Protocol endpoint (instead of local Chrome)
Variables marked as bool accept: 1, true, yes, on (case-insensitive) to enable. Any other value (including empty) is treated as disabled.
Variables marked as csv accept comma-separated values with optional whitespace: "user1, user2, user3".
Set a different model for one session without editing config.yaml:
EDGECRAB_MODEL = openai/gpt-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 start
Combine multiple platforms at once:
export TELEGRAM_BOT_TOKEN = ...
export DISCORD_BOT_TOKEN = ...
edgecrab gateway start # both platforms start automatically
What 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.