Files
2026-08-21 17:26:27 -07:00

419 lines
15 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NVIDIA NIM Config
# NVIDIA_NIM_API_KEY=<your-token>
# Azure OpenAI (resource-specific OpenAI v1 Chat Completions endpoint)
# AZURE_OPENAI_API_KEY=<your-token>
# AZURE_OPENAI_BASE_URL=<provider-base-url>
# OpenRouter Config
# OPENROUTER_API_KEY=<your-token>
# Mistral La Plateforme Config (Experiment plan free tier rate limits; OpenAI-compatible at api.mistral.ai/v1)
# MISTRAL_API_KEY=<your-token>
# Mistral Codestral (separate key from La Plateforme; OpenAI-compatible at codestral.mistral.ai/v1)
# CODESTRAL_API_KEY=<your-token>
# DeepSeek Config (OpenAI-compatible Chat Completions at api.deepseek.com)
# DEEPSEEK_API_KEY=<your-token>
# Kimi Config (OpenAI-compatible Chat Completions at api.moonshot.ai/v1)
# KIMI_API_KEY=<your-token>
# Kimi Code subscription (OpenAI-compatible Chat Completions at api.kimi.com/coding/v1)
# KIMI_CODE_API_KEY=<your-token>
# Wafer Config (OpenAI-compatible Chat Completions at pass.wafer.ai/v1)
# WAFER_API_KEY=<your-token>
# MiniMax Config (OpenAI-compatible Chat Completions at api.minimax.io/v1)
# MINIMAX_API_KEY=<your-token>
# OpenCode Zen (opencode.ai/zen/v1) and OpenCode Go (opencode.ai/zen/go/v1) share OPENCODE_API_KEY
# OPENCODE_API_KEY=<your-token>
# Vercel AI Gateway Config (OpenAI-compatible Chat Completions at ai-gateway.vercel.sh/v1)
# AI_GATEWAY_API_KEY=<your-token>
# Amazon Bedrock Mantle (region-specific OpenAI-compatible Chat Completions)
# AWS_BEARER_TOKEN_BEDROCK=<your-token>
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=<your-token>
# Cohere Config (OpenAI-compatible Chat Completions at api.cohere.ai/compatibility/v1)
# COHERE_API_KEY=<your-token>
# GitHub Models Config (OpenAI-compatible Chat Completions at models.github.ai/inference)
# GITHUB_MODELS_TOKEN=<your-token>
# 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=<your-token>
# TokenRouter Config (OpenAI-compatible Chat Completions gateway at api.tokenrouter.com/v1)
# TOKENROUTER_API_KEY=<your-token>
TOKENROUTER_BASE_URL="https://api.tokenrouter.com/v1"
# NaraRoute Config (OpenAI-compatible Chat Completions gateway at router.bynara.id/v1)
# NARAROUTE_API_KEY=<your-token>
NARAROUTE_BASE_URL="https://router.bynara.id/v1"
# Poolside AI (OpenAI-compatible Chat Completions at inference.poolside.ai/v1)
# POOLSIDE_API_KEY=<your-token>
# Fireworks AI Config (OpenAI-compatible Chat Completions at api.fireworks.ai/inference/v1)
# FIREWORKS_API_KEY=<your-token>
# Novita AI (OpenAI-compatible Chat Completions at api.novita.ai/openai/v1)
# NOVITA_API_KEY=<your-token>
# Cloudflare Workers AI Config (OpenAI-compatible Chat Completions at api.cloudflare.com/client/v4/accounts/<id>/ai/v1)
# CLOUDFLARE_API_TOKEN=<your-token>
# CLOUDFLARE_ACCOUNT_ID=<value>
# Gemini / Google AI Studio (OpenAI-compatible Chat Completions; see https://ai.google.dev/gemini-api/docs/openai)
# GEMINI_API_KEY=<your-token>
# Google Vertex AI (uses Application Default Credentials; no API key)
# Local setup: gcloud auth application-default login
# VERTEX_PROJECT_ID=<value>
VERTEX_LOCATION="global"
# Groq Cloud (OpenAI-compatible Chat Completions; see https://console.groq.com/docs/openai)
# GROQ_API_KEY=<your-token>
# ClinePass subscription (create a programmatic key under Settings > API Keys at app.cline.bot)
# CLINE_API_KEY=<your-token>
# xAI / Grok (OpenAI-compatible Chat Completions at api.x.ai/v1)
# XAI_API_KEY=<your-token>
# QwenCloud Token Plan (dedicated sk-sp- key; OpenAI-compatible Chat Completions)
# QWENCLOUD_API_KEY=<your-token>
# QwenCloud Coding Plan (separate sk-sp- key; personal interactive coding-agent use)
# QWENCLOUD_CODING_API_KEY=<your-token>
# Together AI (OpenAI-compatible Chat Completions at api.together.ai/v1)
# TOGETHER_API_KEY=<your-token>
# DeepInfra (OpenAI-compatible Chat Completions at api.deepinfra.com/v1/openai)
# DEEPINFRA_API_KEY=<your-token>
# SiliconFlow (OpenAI-compatible Chat Completions at api.siliconflow.com/v1)
# SILICONFLOW_API_KEY=<your-token>
# Nebius Token Factory (OpenAI-compatible Chat Completions at api.tokenfactory.nebius.com/v1)
# NEBIUS_API_KEY=<your-token>
# Chutes (OpenAI-compatible Chat Completions at llm.chutes.ai/v1)
# CHUTES_API_KEY=<your-token>
# Featherless AI (OpenAI-compatible Chat Completions at api.featherless.ai/v1)
# FEATHERLESS_API_KEY=<your-token>
# Agnes AI (OpenAI-compatible Chat Completions at apihub.agnes-ai.com/v1)
# AGNES_API_KEY=<your-token>
# ZenMux (OpenAI-compatible Chat Completions gateway at zenmux.ai/api/v1)
# ZENMUX_API_KEY=<your-token>
# W&B Inference (OpenAI-compatible Chat Completions at api.inference.wandb.ai/v1)
# WANDB_API_KEY=<your-token>
# SambaNova Cloud (OpenAI-compatible Chat Completions at api.sambanova.ai/v1)
# SAMBANOVA_API_KEY=<your-token>
# Kilo.ai Config (OpenAI-compatible Chat Completions gateway at api.kilo.ai/api/gateway)
# KILO_API_KEY=<your-token>
# Cerebras Inference (OpenAI-compatible Chat Completions; see https://inference-docs.cerebras.ai/resources/openai)
# CEREBRAS_API_KEY=<your-token>
# Ollama Cloud (direct OpenAI-compatible API at ollama.com/v1)
# OLLAMA_API_KEY=<your-token>
# 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" | "github_models" | "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"
# MODEL_FABLE=<provider/model-id>
# MODEL_OPUS=<provider/model-id>
# MODEL_SONNET=<provider/model-id>
# MODEL_HAIKU=<provider/model-id>
MODEL="nvidia_nim/nvidia/nemotron-3-super-120b-a12b"
# Optional ordered cross-client fallbacks after retryable provider failures exhaust.
# 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=<provider/model-id>
# FCC_SMOKE_MODEL_OPENAI=<provider/model-id>
# FCC_SMOKE_MODEL_AZURE_OPENAI=<provider/model-id>
# FCC_SMOKE_MODEL_OPEN_ROUTER=<provider/model-id>
# FCC_SMOKE_MODEL_MISTRAL=<provider/model-id>
# FCC_SMOKE_MODEL_MISTRAL_REASONING=<provider/model-id>
# FCC_SMOKE_MODEL_MISTRAL_CODESTRAL=<provider/model-id>
# FCC_SMOKE_MODEL_DEEPSEEK=<provider/model-id>
# FCC_SMOKE_MODEL_OLLAMA_CLOUD=<provider/model-id>
# FCC_SMOKE_MODEL_LMSTUDIO=<provider/model-id>
# FCC_SMOKE_MODEL_LLAMACPP=<provider/model-id>
# FCC_SMOKE_MODEL_OLLAMA=<provider/model-id>
# FCC_SMOKE_MODEL_KIMI=<provider/model-id>
# FCC_SMOKE_MODEL_KIMI_CODE=<provider/model-id>
# FCC_SMOKE_MODEL_WAFER=<provider/model-id>
# FCC_SMOKE_MODEL_MINIMAX=<provider/model-id>
# FCC_SMOKE_MODEL_OPENCODE_ZEN=<provider/model-id>
# FCC_SMOKE_MODEL_OPENCODE_GO=<provider/model-id>
# FCC_SMOKE_MODEL_VERCEL=<provider/model-id>
# FCC_SMOKE_MODEL_BEDROCK=<provider/model-id>
# FCC_SMOKE_MODEL_HUGGINGFACE=<provider/model-id>
# FCC_SMOKE_MODEL_COHERE=<provider/model-id>
# FCC_SMOKE_MODEL_GITHUB_MODELS=<provider/model-id>
# FCC_SMOKE_MODEL_ZAI=<provider/model-id>
# FCC_SMOKE_MODEL_ZAI_API=<provider/model-id>
# FCC_SMOKE_MODEL_TOKENROUTER=<your-token>
# FCC_SMOKE_MODEL_NARAROUTE=<provider/model-id>
# FCC_SMOKE_MODEL_POOLSIDE=<provider/model-id>
# FCC_SMOKE_MODEL_FIREWORKS=<provider/model-id>
# FCC_SMOKE_MODEL_NOVITA=<provider/model-id>
# FCC_SMOKE_MODEL_CLOUDFLARE=<provider/model-id>
# FCC_SMOKE_MODEL_GEMINI=<provider/model-id>
# FCC_SMOKE_MODEL_VERTEX=<provider/model-id>
# FCC_SMOKE_MODEL_GROQ=<provider/model-id>
# FCC_SMOKE_MODEL_CLINE_PASS=<provider/model-id>
# FCC_SMOKE_MODEL_QWENCLOUD=<provider/model-id>
# FCC_SMOKE_MODEL_QWENCLOUD_CODING=<provider/model-id>
# FCC_SMOKE_MODEL_TOGETHER=<provider/model-id>
# FCC_SMOKE_MODEL_DEEPINFRA=<provider/model-id>
# FCC_SMOKE_MODEL_SILICONFLOW=<provider/model-id>
# FCC_SMOKE_MODEL_NEBIUS=<provider/model-id>
# FCC_SMOKE_MODEL_CHUTES=<provider/model-id>
# FCC_SMOKE_MODEL_FEATHERLESS=<provider/model-id>
# FCC_SMOKE_MODEL_AGNES=<provider/model-id>
# FCC_SMOKE_MODEL_ZENMUX=<provider/model-id>
# FCC_SMOKE_MODEL_WANDB=<provider/model-id>
# FCC_SMOKE_MODEL_SAMBANOVA=<provider/model-id>
# FCC_SMOKE_MODEL_KILO=<provider/model-id>
# FCC_SMOKE_MODEL_CEREBRAS=<provider/model-id>
# FCC_SMOKE_NIM_MODELS=<provider/model-id>
# FCC_SMOKE_NIM_EXTRA_MODELS=<provider/model-id>
# FCC_SMOKE_OPENROUTER_FREE_MODELS=<provider/model-id>
# FCC_SMOKE_OPENROUTER_FREE_EXTRA_MODELS=<provider/model-id>
# 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=<http-or-socks-url>
# XAI_PROXY=<http-or-socks-url>
# QWENCLOUD_PROXY=<http-or-socks-url>
# QWENCLOUD_CODING_PROXY=<http-or-socks-url>
# TOGETHER_PROXY=<http-or-socks-url>
# DEEPINFRA_PROXY=<http-or-socks-url>
# SILICONFLOW_PROXY=<http-or-socks-url>
# NEBIUS_PROXY=<http-or-socks-url>
# CHUTES_PROXY=<http-or-socks-url>
# FEATHERLESS_PROXY=<http-or-socks-url>
# AGNES_PROXY=<http-or-socks-url>
# ZENMUX_PROXY=<http-or-socks-url>
# WANDB_PROXY=<http-or-socks-url>
# AZURE_OPENAI_PROXY=<http-or-socks-url>
# NVIDIA_NIM_PROXY=<http-or-socks-url>
# OPENROUTER_PROXY=<http-or-socks-url>
# MISTRAL_PROXY=<http-or-socks-url>
# CODESTRAL_PROXY=<http-or-socks-url>
# LMSTUDIO_PROXY=<http-or-socks-url>
# LLAMACPP_PROXY=<http-or-socks-url>
# KIMI_PROXY=<http-or-socks-url>
# KIMI_CODE_PROXY=<http-or-socks-url>
# WAFER_PROXY=<http-or-socks-url>
# MINIMAX_PROXY=<http-or-socks-url>
# OPENCODE_ZEN_PROXY=<http-or-socks-url>
# OPENCODE_GO_PROXY=<http-or-socks-url>
# VERCEL_AI_GATEWAY_PROXY=<http-or-socks-url>
# BEDROCK_PROXY=<http-or-socks-url>
# HUGGINGFACE_PROXY=<http-or-socks-url>
# COHERE_PROXY=<http-or-socks-url>
# GITHUB_MODELS_PROXY=<http-or-socks-url>
# ZAI_PROXY=<http-or-socks-url>
# ZAI_API_PROXY=<http-or-socks-url>
# TOKENROUTER_PROXY=<http-or-socks-url>
# NARAROUTE_PROXY=<http-or-socks-url>
# POOLSIDE_PROXY=<http-or-socks-url>
# FIREWORKS_PROXY=<http-or-socks-url>
# NOVITA_PROXY=<http-or-socks-url>
# CLOUDFLARE_PROXY=<http-or-socks-url>
# GEMINI_PROXY=<http-or-socks-url>
# VERTEX_PROXY=<http-or-socks-url>
# GROQ_PROXY=<http-or-socks-url>
# CLINE_PASS_PROXY=<http-or-socks-url>
# SAMBANOVA_PROXY=<http-or-socks-url>
# KILO_PROXY=<http-or-socks-url>
# CEREBRAS_PROXY=<http-or-socks-url>
# OLLAMA_CLOUD_PROXY=<http-or-socks-url>
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=<your-token>
# ALLOWED_TELEGRAM_USER_ID=<allowed-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=<http-or-socks-url>
# Discord Config
# DISCORD_BOT_TOKEN=<your-token>
# ALLOWED_DISCORD_CHANNELS=<allowed-id>
# Agent Config
# ALLOWED_DIR=<workspace-path>
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