# Channels: comma-separated list of channels the bot listens on. # Supported: telegram, kazee. Leave empty to default to telegram. CHANNELS=telegram # --- Telegram --- TELEGRAM_BOT_TOKEN=your-bot-token-from-botfather TELEGRAM_CHAT_ID=your-chat-id # --- Kazee Chat (set CHANNELS=telegram,kazee or =kazee to enable) --- KAZEE_URL=https://chat.inet.africa KAZEE_BOT_TOKEN= KAZEE_BOT_USER_ID= KAZEE_OWNER_USER_ID= # Set to 1 to log every inbound Kazee socket event (debug aid; noisy). KAZEE_DEBUG_EVENTS= # Optional override; Kazee calls default to the production Janus WebSocket. KAZEE_JANUS_URL=wss://janus.kazee.africa/ws WORKSPACE=/path/to/your/workspace # Both provider paths are optional. Leave blank to discover the CLI on PATH. CLAUDE_PATH= CODEX_PATH= # Optional explicit foreground/global default. When blank, Open Claudia picks # the first available compatible provider deterministically (Claude, then Codex). DEFAULT_PROVIDER= # Default Claude Code model when users haven't selected one with /model. CLAUDE_MODEL=claude-fable-5 CODEX_MODEL= # Background intelligence uses the active provider by default. Per-purpose # overrides and fallbacks are opt-in; fallbacks never retarget foreground turns. UTILITY_PROVIDER=active PROVIDER_FALLBACKS= DREAM_PROVIDER= MEMORY_PROVIDER= RECALL_PROVIDER= ENFORCER_PROVIDER= SUBAGENT_PROVIDER= # Exact per-provider model overrides for utility work (optional). DREAM_MODEL_CLAUDE= DREAM_MODEL_CODEX= PACK_REVIEW_MODEL_CLAUDE= PACK_REVIEW_MODEL_CODEX= RECALL_MODEL_CLAUDE= RECALL_MODEL_CODEX= ENFORCER_MODEL_CLAUDE= ENFORCER_MODEL_CODEX= SUBAGENT_MODEL_CLAUDE= SUBAGENT_MODEL_CODEX= AUTO_COMPACT_TOKENS=280000 # Inactivity watchdog: kill a heavy turn's child if it emits no output for # this many ms, so a hung tool call can't wedge the bot. Default 600000 (10min). OC_TURN_IDLE_MS=600000 # Kazee Chat threads: each thread is its own conversation. Running turns per # person / across the bot; how a new thread starts (hybrid | fresh | fork); # and whether the bot names a thread it talks in once it knows the topic # (only when the thread has no title yet; a person's title always stays). OC_MAX_PARALLEL_TURNS=4 OC_MAX_PARALLEL_TURNS_GLOBAL=8 OC_THREAD_SEED=hybrid # on (default) | off OC_THREAD_TITLES=on # Utility provider/model for thread titles (default: the utility defaults). THREAD_TITLE_PROVIDER= THREAD_TITLE_MODEL_CLAUDE= THREAD_TITLE_MODEL_CODEX= # Token usage alerts to the owner: on | off (default off). Never posted in group chats. USAGE_ALERTS=off USAGE_ALERT_CONTEXT_TOKENS=120000 USAGE_ALERT_RATE_MULTIPLIER=1.75 USAGE_ALERT_BASELINE_TURNS=20 USAGE_ALERT_MIN_BASELINE_TURNS=6 USAGE_ALERT_COOLDOWN_MS=1800000 # Plan limits (Claude Pro/Max, the ChatGPT plan behind Codex). Warn in the chat # when a window's use passes these percentages, once per window (off = never). LIMIT_WARN_PERCENTS=80,95 # A message a usage limit stopped is picked up when the limit resets, unless # the person writes again first: on (default) | off. Scheduled runs and the # dream's AI step always wait for the reset. LIMIT_PICKUP=on # Seconds after the reset before waiting work runs (default 120); a reset # further out than LIMIT_PICKUP_MAX_WAIT_H hours (default 192) is not waited # for. One rule for chat messages, scheduled runs and the dream. LIMIT_PICKUP_DELAY_S=120 LIMIT_PICKUP_MAX_WAIT_H=192 # Messages sent while a conversation is busy run together as one turn when it # ends (on, default); off runs them one at a time. QUEUE_BATCH=on MEMORY_RECALL_MAX_CHARS=9000 # Default recall engine when a chat hasn't picked one with /engine: classic | discoverer RECALL_ENGINE=classic # Dream utility tier is mapped by the selected provider: low | medium | high (default). DREAM_TIER=high # Independent external-person guardrail fails closed. Every total provider # failure holds the action for owner approval. PROJECT_TRANSCRIPTS=true TRANSCRIPT_MAX_ENTRY_CHARS=12000 TRANSCRIPTS_DIR= WHISPER_CLI= WHISPER_MODEL= FFMPEG= VAULT_FILE=vault.enc SOUL_FILE=soul.md CRONS_FILE=crons.json ONBOARDED=false