# NVIDIA NIM Config # NVIDIA_NIM_API_KEY= # Azure OpenAI (resource-specific OpenAI v1 Chat Completions endpoint) # AZURE_OPENAI_API_KEY= # AZURE_OPENAI_BASE_URL= # 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 (OpenAI-compatible Chat Completions at api.deepseek.com) # DEEPSEEK_API_KEY= # Kimi Config (OpenAI-compatible Chat Completions at api.moonshot.ai/v1) # KIMI_API_KEY= # Kimi Code subscription (OpenAI-compatible Chat Completions at api.kimi.com/coding/v1) # KIMI_CODE_API_KEY= # Wafer Config (OpenAI-compatible Chat Completions at pass.wafer.ai/v1) # WAFER_API_KEY= # MiniMax Config (OpenAI-compatible Chat Completions at api.minimax.io/v1) # MINIMAX_API_KEY= # OpenCode Zen (opencode.ai/zen/v1) and OpenCode Go (opencode.ai/zen/go/v1) share OPENCODE_API_KEY # OPENCODE_API_KEY= # Vercel AI Gateway Config (OpenAI-compatible Chat Completions at ai-gateway.vercel.sh/v1) # AI_GATEWAY_API_KEY= # Amazon Bedrock Mantle (region-specific OpenAI-compatible Chat Completions) # AWS_BEARER_TOKEN_BEDROCK= BEDROCK_BASE_URL="https://bedrock-mantle.us-east-1.api.aws/v1" # Hugging Face Inference Providers Config (OpenAI-compatible Chat Completions at router.huggingface.co/v1) # HUGGINGFACE_API_KEY= # Cohere Config (OpenAI-compatible Chat Completions at api.cohere.ai/compatibility/v1) # COHERE_API_KEY= # Z.ai Config (one key for Coding Plan zai/... and pay-as-you-go zai_api/...) # The model prefix selects api.z.ai/api/coding/paas/v4 or api.z.ai/api/paas/v4. # ZAI_API_KEY= # TokenRouter Config (OpenAI-compatible Chat Completions gateway at api.tokenrouter.com/v1) # TOKENROUTER_API_KEY= TOKENROUTER_BASE_URL="https://api.tokenrouter.com/v1" # NaraRoute Config (OpenAI-compatible Chat Completions gateway at router.bynara.id/v1) # NARAROUTE_API_KEY= NARAROUTE_BASE_URL="https://router.bynara.id/v1" # Poolside AI (OpenAI-compatible Chat Completions at inference.poolside.ai/v1) # POOLSIDE_API_KEY= # LLM7.io (OpenAI-compatible Chat Completions at api.llm7.io/v1) # LLM7_API_KEY= # Fireworks AI Config (OpenAI-compatible Chat Completions at api.fireworks.ai/inference/v1) # FIREWORKS_API_KEY= # Novita AI (OpenAI-compatible Chat Completions at api.novita.ai/openai/v1) # NOVITA_API_KEY= # Cloudflare Workers AI Config (OpenAI-compatible Chat Completions at api.cloudflare.com/client/v4/accounts//ai/v1) # CLOUDFLARE_API_TOKEN= # CLOUDFLARE_ACCOUNT_ID= # Gemini / Google AI Studio (OpenAI-compatible Chat Completions; see https://ai.google.dev/gemini-api/docs/openai) # GEMINI_API_KEY= # Google Vertex AI (uses Application Default Credentials; no API key) # Local setup: gcloud auth application-default login # VERTEX_PROJECT_ID= VERTEX_LOCATION="global" # Groq Cloud (OpenAI-compatible Chat Completions; see https://console.groq.com/docs/openai) # GROQ_API_KEY= # ClinePass subscription (create a programmatic key under Settings > API Keys at app.cline.bot) # CLINE_API_KEY= # xAI / Grok (OpenAI-compatible Chat Completions at api.x.ai/v1) # XAI_API_KEY= # QwenCloud Token Plan (dedicated sk-sp- key; OpenAI-compatible Chat Completions) # QWENCLOUD_API_KEY= # QwenCloud Coding Plan (separate sk-sp- key; personal interactive coding-agent use) # QWENCLOUD_CODING_API_KEY= # Together AI (OpenAI-compatible Chat Completions at api.together.ai/v1) # TOGETHER_API_KEY= # DeepInfra (OpenAI-compatible Chat Completions at api.deepinfra.com/v1/openai) # DEEPINFRA_API_KEY= # SiliconFlow (OpenAI-compatible Chat Completions at api.siliconflow.com/v1) # SILICONFLOW_API_KEY= # Nebius Token Factory (OpenAI-compatible Chat Completions at api.tokenfactory.nebius.com/v1) # NEBIUS_API_KEY= # Chutes (OpenAI-compatible Chat Completions at llm.chutes.ai/v1) # CHUTES_API_KEY= # Featherless AI (OpenAI-compatible Chat Completions at api.featherless.ai/v1) # FEATHERLESS_API_KEY= # Agnes AI (OpenAI-compatible Chat Completions at apihub.agnes-ai.com/v1) # AGNES_API_KEY= # ZenMux (OpenAI-compatible Chat Completions gateway at zenmux.ai/api/v1) # ZENMUX_API_KEY= # W&B Inference (OpenAI-compatible Chat Completions at api.inference.wandb.ai/v1) # WANDB_API_KEY= # SambaNova Cloud (OpenAI-compatible Chat Completions at api.sambanova.ai/v1) # SAMBANOVA_API_KEY= # Kilo.ai Config (OpenAI-compatible Chat Completions gateway at api.kilo.ai/api/gateway) # KILO_API_KEY= # Cerebras Inference (OpenAI-compatible Chat Completions; see https://inference-docs.cerebras.ai/resources/openai) # CEREBRAS_API_KEY= # Ollama Cloud (direct OpenAI-compatible API at ollama.com/v1) # OLLAMA_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" # Default model and optional Claude tier overrides # Format: provider_type/model/name # Valid providers: "nvidia_nim" | "openai" | "azure_openai" | "open_router" | "gemini" | "vertex" | "deepseek" | "mistral" | "mistral_codestral" | "opencode_zen" | "opencode_go" | "vercel" | "bedrock" | "huggingface" | "cohere" | "wafer" | "kimi" | "kimi_code" | "minimax" | "cerebras" | "groq" | "cline_pass" | "xai" | "qwencloud" | "qwencloud_coding" | "together" | "deepinfra" | "siliconflow" | "nebius" | "chutes" | "featherless" | "agnes" | "zenmux" | "wandb" | "sambanova" | "kilo" | "fireworks" | "novita" | "cloudflare" | "zai" | "ollama_cloud" | "lmstudio" | "llamacpp" | "ollama" | "tokenrouter" | "nararoute" | "poolside" | "llm7" # MODEL_FABLE= # MODEL_OPUS= # MODEL_SONNET= # MODEL_HAIKU= MODEL="nvidia_nim/nvidia/nemotron-3-super-120b-a12b" # Optional ordered cross-client fallbacks when a provider/model fails before output. # A request may reach and consume usage from more than one provider. # MODEL_FALLBACKS="groq/llama-3.3-70b-versatile,open_router/openrouter/free" # 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_NVIDIA_NIM_VISION= # FCC_SMOKE_MODEL_OPENAI= # FCC_SMOKE_MODEL_AZURE_OPENAI= # FCC_SMOKE_MODEL_OPEN_ROUTER= # FCC_SMOKE_MODEL_MISTRAL= # FCC_SMOKE_MODEL_MISTRAL_REASONING= # FCC_SMOKE_MODEL_MISTRAL_CODESTRAL= # FCC_SMOKE_MODEL_DEEPSEEK= # FCC_SMOKE_MODEL_OLLAMA_CLOUD= # FCC_SMOKE_MODEL_LMSTUDIO= # FCC_SMOKE_MODEL_LLAMACPP= # FCC_SMOKE_MODEL_OLLAMA= # FCC_SMOKE_MODEL_KIMI= # FCC_SMOKE_MODEL_KIMI_CODE= # FCC_SMOKE_MODEL_WAFER= # FCC_SMOKE_MODEL_MINIMAX= # FCC_SMOKE_MODEL_OPENCODE_ZEN= # FCC_SMOKE_MODEL_OPENCODE_GO= # FCC_SMOKE_MODEL_VERCEL= # FCC_SMOKE_MODEL_BEDROCK= # FCC_SMOKE_MODEL_HUGGINGFACE= # FCC_SMOKE_MODEL_COHERE= # FCC_SMOKE_MODEL_ZAI= # FCC_SMOKE_MODEL_ZAI_API= # FCC_SMOKE_MODEL_TOKENROUTER= # FCC_SMOKE_MODEL_NARAROUTE= # FCC_SMOKE_MODEL_POOLSIDE= # FCC_SMOKE_MODEL_LLM7= # FCC_SMOKE_MODEL_FIREWORKS= # FCC_SMOKE_MODEL_NOVITA= # FCC_SMOKE_MODEL_CLOUDFLARE= # FCC_SMOKE_MODEL_GEMINI= # FCC_SMOKE_MODEL_VERTEX= # FCC_SMOKE_MODEL_GROQ= # FCC_SMOKE_MODEL_CLINE_PASS= # FCC_SMOKE_MODEL_QWENCLOUD= # FCC_SMOKE_MODEL_QWENCLOUD_CODING= # FCC_SMOKE_MODEL_TOGETHER= # FCC_SMOKE_MODEL_DEEPINFRA= # FCC_SMOKE_MODEL_SILICONFLOW= # FCC_SMOKE_MODEL_NEBIUS= # FCC_SMOKE_MODEL_CHUTES= # FCC_SMOKE_MODEL_FEATHERLESS= # FCC_SMOKE_MODEL_AGNES= # FCC_SMOKE_MODEL_ZENMUX= # FCC_SMOKE_MODEL_WANDB= # FCC_SMOKE_MODEL_SAMBANOVA= # FCC_SMOKE_MODEL_KILO= # FCC_SMOKE_MODEL_CEREBRAS= # FCC_SMOKE_NIM_MODELS= # FCC_SMOKE_NIM_EXTRA_MODELS= # FCC_SMOKE_OPENROUTER_FREE_MODELS= # FCC_SMOKE_OPENROUTER_FREE_EXTRA_MODELS= # Reasoning policy # Root: off | client | low | medium | high | xhigh | max # Route overrides additionally accept inherit. "client" preserves the CLI's effort; # providers translate only controls documented by their API. REASONING_POLICY=client REASONING_FABLE=inherit REASONING_OPUS=inherit REASONING_SONNET=inherit REASONING_HAIKU=inherit # Provider config # Per-provider proxy support: http and socks5, example: "http://username:password@host:port" # OPENAI_PROXY= # XAI_PROXY= # QWENCLOUD_PROXY= # QWENCLOUD_CODING_PROXY= # TOGETHER_PROXY= # DEEPINFRA_PROXY= # SILICONFLOW_PROXY= # NEBIUS_PROXY= # CHUTES_PROXY= # FEATHERLESS_PROXY= # AGNES_PROXY= # ZENMUX_PROXY= # WANDB_PROXY= # AZURE_OPENAI_PROXY= # NVIDIA_NIM_PROXY= # OPENROUTER_PROXY= # MISTRAL_PROXY= # CODESTRAL_PROXY= # LMSTUDIO_PROXY= # LLAMACPP_PROXY= # KIMI_PROXY= # KIMI_CODE_PROXY= # WAFER_PROXY= # MINIMAX_PROXY= # OPENCODE_ZEN_PROXY= # OPENCODE_GO_PROXY= # VERCEL_AI_GATEWAY_PROXY= # BEDROCK_PROXY= # HUGGINGFACE_PROXY= # COHERE_PROXY= # ZAI_PROXY= # ZAI_API_PROXY= # TOKENROUTER_PROXY= # NARAROUTE_PROXY= # POOLSIDE_PROXY= # LLM7_PROXY= # FIREWORKS_PROXY= # NOVITA_PROXY= # CLOUDFLARE_PROXY= # GEMINI_PROXY= # VERTEX_PROXY= # GROQ_PROXY= # CLINE_PASS_PROXY= # SAMBANOVA_PROXY= # KILO_PROXY= # CEREBRAS_PROXY= # OLLAMA_CLOUD_PROXY= PROVIDER_RATE_LIMIT=1 PROVIDER_RATE_WINDOW=2 PROVIDER_MAX_CONCURRENCY=2 # Maximum seconds without a non-empty protocol event. Independent of HTTP reads. PROVIDER_PROGRESS_TIMEOUT=600 # HTTP client timeouts (seconds) for provider API requests HTTP_READ_TIMEOUT=120 HTTP_WRITE_TIMEOUT=10 HTTP_CONNECT_TIMEOUT=10 # Proxy authentication is an explicit switch. Clients always receive the retained # non-empty token, even while server-side enforcement is disabled. PROXY_AUTH_ENABLED=false 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=true # 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="cpu" # 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="base" # Telegram Config # TELEGRAM_BOT_TOKEN= # ALLOWED_TELEGRAM_USER_ID= # Optional Telegram-only proxy. # Supported schemes: http, https, socks4, socks5, socks5h. # Example: "socks5://127.0.0.1:1080" or "https://user:password@host:port" # TELEGRAM_PROXY_URL= # 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 # Claude Code WebSearch and forced local web-tool handling (set false to opt out) ENABLE_WEB_SERVER_TOOLS=true WEB_FETCH_ALLOWED_SCHEMES=http,https WEB_FETCH_ALLOW_PRIVATE_NETWORKS=false # Structured traces: DEBUG 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. # # Minimum log level for the JSON file sink: DEBUG, INFO, WARNING, ERROR, CRITICAL. # Defaults to INFO. Use DEBUG temporarily for detailed request traces, or WARNING for quieter logs. # The file rotates at 50 MB and retains five rotated files (roughly 300 MB including the active file). LOG_LEVEL=INFO # # 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 # GitHub Copilot is an Admin connected account; no FCC API-key setting is needed. # Install the supported Copilot CLI version documented in README.md on PATH. # Connect in Admin, or first sign in with: copilot login --device-code # FCC stores enabled state only; the native Copilot profile owns credentials.