# NVIDIA NIM Config NVIDIA_NIM_API_KEY="" # OpenRouter Config OPENROUTER_API_KEY="" # Mistral La Plateforme Config (Experiment plan free tier – rate limits; OpenAI-compatible at api.mistral.ai/v1) MISTRAL_API_KEY="" # Mistral Codestral (separate key from La Plateforme; OpenAI-compatible at codestral.mistral.ai/v1) CODESTRAL_API_KEY="" # DeepSeek Config (uses native Anthropic Messages at api.deepseek.com/anthropic) DEEPSEEK_API_KEY="" # Kimi Config (Anthropic-compatible Messages at api.moonshot.ai/anthropic/v1) KIMI_API_KEY="" # Wafer Config (uses native Anthropic Messages at pass.wafer.ai/v1/messages) WAFER_API_KEY="" # OpenCode Zen (opencode.ai/zen/v1) and OpenCode Go (opencode.ai/zen/go/v1) share OPENCODE_API_KEY OPENCODE_API_KEY="" # Z.ai Config (Anthropic-compatible Messages at api.z.ai/api/anthropic/v1) ZAI_API_KEY="" # Fireworks AI Config (Anthropic-compatible Messages at api.fireworks.ai/inference/v1) FIREWORKS_API_KEY="" # Gemini / Google AI Studio (OpenAI-compatible Chat Completions; see https://ai.google.dev/gemini-api/docs/openai) GEMINI_API_KEY="" # Groq Cloud (OpenAI-compatible Chat Completions; see https://console.groq.com/docs/openai) GROQ_API_KEY="" # Cerebras Inference (OpenAI-compatible Chat Completions; see https://inference-docs.cerebras.ai/resources/openai) CEREBRAS_API_KEY="" # LM Studio Config (local provider, no API key required) LM_STUDIO_BASE_URL="http://localhost:1234/v1" # Llama.cpp Config (local provider, no API key required) LLAMACPP_BASE_URL="http://localhost:8080/v1" # Ollama Config (local provider, no API key required) OLLAMA_BASE_URL="http://localhost:11434" # All Claude model requests are mapped to these models, plain model is fallback # Format: provider_type/model/name # Valid providers: "nvidia_nim" | "open_router" | "gemini" | "deepseek" | "mistral" | "mistral_codestral" | "opencode" | "opencode_go" | "wafer" | "kimi" | "cerebras" | "groq" | "fireworks" | "zai" | "lmstudio" | "llamacpp" | "ollama" MODEL_OPUS= MODEL_SONNET= MODEL_HAIKU= MODEL="nvidia_nim/nvidia/nemotron-3-super-120b-a12b" # Optional live smoke model overrides. Provider smoke runs once per configured # provider even when MODEL/MODEL_* route to a different provider. FCC_SMOKE_MODEL_NVIDIA_NIM= FCC_SMOKE_MODEL_OPEN_ROUTER= FCC_SMOKE_MODEL_MISTRAL= FCC_SMOKE_MODEL_MISTRAL_CODESTRAL= FCC_SMOKE_MODEL_DEEPSEEK= FCC_SMOKE_MODEL_LMSTUDIO= FCC_SMOKE_MODEL_LLAMACPP= FCC_SMOKE_MODEL_OLLAMA= FCC_SMOKE_MODEL_KIMI= FCC_SMOKE_MODEL_WAFER= FCC_SMOKE_MODEL_OPENCODE= FCC_SMOKE_MODEL_OPENCODE_GO= FCC_SMOKE_MODEL_ZAI= FCC_SMOKE_MODEL_FIREWORKS= FCC_SMOKE_MODEL_GEMINI= FCC_SMOKE_MODEL_GROQ= FCC_SMOKE_MODEL_CEREBRAS= FCC_SMOKE_NIM_MODELS= FCC_SMOKE_NIM_EXTRA_MODELS= FCC_SMOKE_OPENROUTER_FREE_MODELS= FCC_SMOKE_OPENROUTER_FREE_EXTRA_MODELS= # Thinking output # Per-Claude-model switches for provider reasoning requests and Claude thinking blocks. # Blank per-model switches inherit ENABLE_MODEL_THINKING. ENABLE_OPUS_THINKING= ENABLE_SONNET_THINKING= ENABLE_HAIKU_THINKING= ENABLE_MODEL_THINKING=true # Provider config # Per-provider proxy support: http and socks5, example: "http://username:password@host:port" NVIDIA_NIM_PROXY="" OPENROUTER_PROXY="" MISTRAL_PROXY="" CODESTRAL_PROXY="" LMSTUDIO_PROXY="" LLAMACPP_PROXY="" KIMI_PROXY="" WAFER_PROXY="" OPENCODE_PROXY="" OPENCODE_GO_PROXY="" ZAI_PROXY="" FIREWORKS_PROXY="" GEMINI_PROXY="" GROQ_PROXY="" CEREBRAS_PROXY="" PROVIDER_RATE_LIMIT=1 PROVIDER_RATE_WINDOW=3 PROVIDER_MAX_CONCURRENCY=5 # HTTP client timeouts (seconds) for provider API requests HTTP_READ_TIMEOUT=300 HTTP_WRITE_TIMEOUT=60 HTTP_CONNECT_TIMEOUT=60 # Optional server API key (Anthropic-style) ANTHROPIC_AUTH_TOKEN="freecc" # Open /admin in the default browser when fcc-server becomes healthy (set 0/false/no to disable) FCC_OPEN_BROWSER=true # Messaging Platform: "telegram" | "discord" | "none" MESSAGING_PLATFORM="discord" MESSAGING_RATE_LIMIT=1 MESSAGING_RATE_WINDOW=1 # Voice Note Transcription VOICE_NOTE_ENABLED=false # WHISPER_DEVICE: "cpu" | "cuda" | "nvidia_nim" # - "cpu"/"cuda": Hugging Face transformers Whisper (offline, free; install with: uv sync --extra voice_local) # - "nvidia_nim": NVIDIA NIM Whisper via Riva gRPC (requires NVIDIA_NIM_API_KEY; install with: uv sync --extra voice) # (Independent of MODEL=nvidia_nim/...: that selects the *chat* provider; this selects voice STT only.) WHISPER_DEVICE="nvidia_nim" # WHISPER_MODEL: # - For cpu/cuda: Hugging Face ID or short name (tiny, base, small, medium, large-v2, large-v3, large-v3-turbo) # - For nvidia_nim: NVIDIA NIM model (e.g., "nvidia/parakeet-ctc-1.1b-asr", "openai/whisper-large-v3") # - For nvidia_nim, default to "openai/whisper-large-v3" for best performance WHISPER_MODEL="openai/whisper-large-v3" HF_TOKEN="" # Telegram Config TELEGRAM_BOT_TOKEN="" ALLOWED_TELEGRAM_USER_ID="" # Discord Config DISCORD_BOT_TOKEN="" ALLOWED_DISCORD_CHANNELS="" # Agent Config ALLOWED_DIR="" FAST_PREFIX_DETECTION=true ENABLE_NETWORK_PROBE_MOCK=true ENABLE_TITLE_GENERATION_SKIP=true ENABLE_SUGGESTION_MODE_SKIP=true ENABLE_FILEPATH_EXTRACTION_MOCK=true # Local Anthropic web_search / web_fetch handling (performs outbound HTTP; on by default) ENABLE_WEB_SERVER_TOOLS=true WEB_FETCH_ALLOWED_SCHEMES=http,https WEB_FETCH_ALLOW_PRIVATE_NETWORKS=false # Structured TRACE logs: lines with `"trace": true` merge ingress/routing/cli/provider/egress # stages. Conversation text is logged in those payloads (verbatim). Values under keys named # like ``api_key`` / ``authorization`` are redacted. Raw transport payloads still require # the LOG_RAW_* toggles below. # # Verbose diagnostics (avoid logging raw prompts / SSE bodies in production) DEBUG_PLATFORM_EDITS=false DEBUG_SUBAGENT_STACK=false # When true, also allows DEBUG-level httpx/httpcore/telegram log noise (not just payload logging). LOG_RAW_API_PAYLOADS=false LOG_RAW_SSE_EVENTS=false # When true, log full exception text and tracebacks for unhandled errors (may leak request-derived data). LOG_API_ERROR_TRACEBACKS=false # When true, log message/transcription text previews in messaging adapters only (handler ingress always TRACEs verbatim text separately). LOG_RAW_MESSAGING_CONTENT=false # When true, log full Claude CLI stderr, non-JSON stdout lines, and parser error text. LOG_RAW_CLI_DIAGNOSTICS=false # When true, log full exception and CLI error message strings in messaging (may leak user content). LOG_MESSAGING_ERROR_DETAILS=false