# Copy to project root: cp .env.example .env # LLM provider: rapid_mlx | ollama | openai_compatible LLM_PROVIDER=rapid_mlx # Rapid-MLX endpoint (see macos/.env.example for HF auth) RAPID_MLX_HOST=127.0.0.1 RAPID_MLX_PORT=8080 RAPID_MLX_BASE_URL=http://127.0.0.1:8080/v1 RAPID_MLX_MODEL=gemma-4-e4b-4bit RAPID_MLX_MODEL_ENDPOINTS=mlx-community/Qwen3.5-4B-MLX-4bit=http://127.0.0.1:8081/v1,LiquidAI/LFM2-1.2B-RAG=http://127.0.0.1:8082/v1 RAPID_MLX_API_KEY=not-needed # Optional online OpenAI-compatible Gemma 4 12B endpoint # GEMMA_ONLINE_BASE_URL=http://matrix:PORT/v1 # GEMMA_ONLINE_API_KEY=replace-me # Ollama OLLAMA_BASE_URL=http://localhost:11434 OLLAMA_MODEL=qwen3.5:4b # OpenAI-compatible (LM Studio, vLLM, etc.) OPENAI_BASE_URL=http://localhost:1234/v1 OPENAI_API_KEY=not-needed OPENAI_MODEL=local-model # Cursor models (requires `agent` CLI on PATH; appear alongside LLM_PROVIDER) # Full CLI: write/shell tools, --force, sandbox disabled (not ask/plan read-only) # CURSOR_API_KEY= # CURSOR_MODELS=auto,cursor-grok-4.5-high-fast # CURSOR_AGENT_BIN=agent # ChatGPT account (OpenAI OAuth via openai-oauth local proxy; Settings → Add model) # OPENAI_OAUTH_HOST=127.0.0.1 # OPENAI_OAUTH_PORT=10531 # OPENAI_OAUTH_BIN=npx --yes openai-oauth@2 # OPENAI_OAUTH_AUTH_FILE= # RS2_OPENAI_OAUTH_MODELS_PATH= # Optional path for Settings → Add model (default: ~/.rs2/custom-models.json) # RS2_CUSTOM_MODELS_PATH= # Chat server HOST=127.0.0.1 PORT=8000 # Optional path overrides (auto-detected from workspace / cwd when unset) # RS2_ROOT= # RS2_WEB_DIR= # Comma-separated browser origins (use * for local dev only) # CORS_ORIGINS=* # Math evaluation timeout in seconds (SymPy path) # MATH_EVAL_TIMEOUT_SECONDS=5.0 # Context limits (also exposed via GET /api/health → context_limits) # CONTEXT_MAX_MESSAGES=100 # CONTEXT_MAX_CHARS=32000 # CONTEXT_MAX_SINGLE_MESSAGE_CHARS=16000 # Assistant output cap (passed to provider as max_tokens) # CHAT_MAX_TOKENS=2048 # Agent tool turns are shorter but may need longer wall time on local models. # AGENT_TOOL_MAX_TOKENS=384 # When thinking is enabled, agent routing needs a much larger budget for reasoning. # AGENT_TOOL_THINKING_MAX_TOKENS=2048 # AGENT_TOOL_TIMEOUT_SECONDS=90 # AGENT_EVIDENCE_BLOCK_MAX_CHARS=1200 # Local agent tool safety limits. # AGENT_SHELL_TIMEOUT_SECONDS=30 # AGENT_TOOL_MAX_OUTPUT_BYTES=32768 # AGENT_FILE_MAX_BYTES=256000 # Fast parallel status text (Cursor-style live progress labels) # Runs alongside search/agent work on a small model with thinking disabled. # STATUS_TEXT_ENABLED=true # STATUS_TEXT_PROVIDER=ollama # STATUS_TEXT_MODEL=Qwen3-0.6B Q4_K_M # STATUS_TEXT_BASE_URL=http://localhost:11434 # STATUS_TEXT_API_KEY=not-needed # STATUS_TEXT_MAX_TOKENS=24 # STATUS_TEXT_TIMEOUT_SECONDS=1.5 # Attachment limits (mirrored in /api/health) # ATTACHMENT_MAX_PER_MESSAGE=5 # ATTACHMENT_MAX_IMAGE_BYTES=5242880 # ATTACHMENT_MAX_TEXT_BYTES=524288 # Comma-separated model ids that accept image input (empty = keyword heuristic) # MULTIMODAL_MODELS=qwen2-vl-7b # Rapid-MLX serve performance (read by macos/serve.py when starting inference) # RAPID_MLX_GPU_MEMORY_UTILIZATION=0.90 # RAPID_MLX_STREAM_INTERVAL=2 # RAPID_MLX_PREFILL_STEP_SIZE=8192 # RAPID_MLX_PREFILL_BATCH_SIZE= # RAPID_MLX_COMPLETION_BATCH_SIZE= # Exa web search (also loaded from ../Benchmarks/.env and ../ARS/.env if present) # BENCHMARK_ENV_PATH=../Benchmarks/.env # EXA_API_KEY= # EXA_API_KEY_2= # EXA_API_KEY_3= # ARS_ENV_PATH=../ARS/.env # EXA_SEARCH_TYPE=auto # EXA_SEARCH_RESULTS=8 # EXA_CONTENT_MAX_AGE_HOURS=168 # EXA_BASE_URL=https://api.exa.ai # EXA_KEY_STATE_PATH=~/.rs2/exa-key-state.json # SEARCH_BUDGET_MS=30000 # SEARCH_EXA_TIMEOUT_MS=4000 # SEARCH_MEDIAWIKI_TIMEOUT_MS=4000 # MEDIAWIKI_USER_AGENT=RS2/1.0 (research) # SEARCH_MAX_URLS=8 # SEARCH_FETCH_BUFFER=2 # SEARCH_FETCH_CONCURRENCY=4 # SEARCH_MAX_PASSAGES=12 # SEARCH_PASSAGE_CLIP_CHARS=600 # SEARCH_MAX_QUERY_FANOUT=6 # SEARCH_MAX_PAGE_CHARS=12000 # SEARCH_AGENT_MAX_ITERATIONS=10 # SEARCH_TOOL_BUDGET_MS=30000 # SEARCH_TOOL_MAX_URLS=4 # SEARCH_TOOL_MAX_PASSAGES=6 # SEARCH_TOOL_SOURCE_PASSAGE_CHARS=2400 # AGENT_TOOL_MAX_TOKENS=384 # AGENT_TOOL_TIMEOUT_SECONDS=90 # AGENT_EVIDENCE_BLOCK_MAX_CHARS=1200 # Firecrawl web search # FIRECRAWL_API_KEY= # FIRECRAWL_API_KEYS= # FIRECRAWL_API_KEY_2= # FIRECRAWL_KEY_STATE_PATH=~/.rs2/firecrawl-key-state.json # FIRECRAWL_BASE_URL=https://api.firecrawl.dev # FIRECRAWL_SEARCH_RESULTS=8 # SEARCH_FIRECRAWL_TIMEOUT_MS=15000 # Runtime pid/log directory (chat server + Rapid-MLX) # RS2_RUNTIME_DIR=~/.cache/rs2 # Optional: load extra keys from sibling repos # BENCHMARK_ENV_PATH=../Benchmarks/.env # ARS_ENV_PATH=../ARS/.env # HF_TOKEN_FILE=~/.thunder/hf-token # EXA_API_KEYS= # EXA_API_KEY=