# ═══════════════════════════════════════════════════════════════
# aacode-rs environment configuration
#
# Quick start:
# cp .env.example .env
# # Edit LLM_API_KEY below, then run
# aacode "your task"
# ═══════════════════════════════════════════════════════════════
# ── LLM (required) ───────────────────────────────────────────
# Your API key. Must fill in.
LLM_API_KEY=sk-your-key-here
# API base URL — automatically inferred from model name if left empty.
# DeepSeek → https://api.deepseek.com/v1 (default with deepseek-chat)
# OpenAI → https://api.openai.com/v1
# Kimi → https://api.moonshot.cn/v1
# MiniMax → https://api.minimax.chat/v1
LLM_API_URL=
# Model name.
LLM_MODEL_NAME=deepseek-v4-flash
# Gateway protocol: openai | anthropic
LLM_GATEWAY=openai
# Whether the model supports multimodal (image/video).
LLM_MULTIMODAL=false
# HTTP read timeout for LLM streaming, seconds.
AACODE_LLM_READ_TIMEOUT=300
# ── Shell Backend ────────────────────────────────────────────
# native — real OS shell (desktop default)
# fastshell — sandbox engine (VFS + 180+ commands + embedded Python)
# auto — native on desktop, fastshell on mobile
AACODE_SHELL_BACKEND=native
# ── Skills ───────────────────────────────────────────────────
# Absolute path to a user skills directory (optional).
# When set: builtin skills + user SKILL.md files are available.
# When empty: legacy per-project scanning (<project>/skills/).
#AACODE_SKILLS_DIR=
# ── Search Engine (optional) ─────────────────────────────────
# Self-hosted SearXNG instance.
#SEARCHXNG_URL=http://localhost:8080
# Brave Search API key.
#BRAVE_API_KEY=
# SerpAPI key (Google fallback).
#SERPAPI_KEY=
# ── Multimodal / Vision model (optional) ─────────────────────
# If you need image/video understanding, configure a dedicated
# vision model in aacode_config.yaml:
#
# multimodal:
# name: "kimi-k2.5"
# api_key: "sk-xxx"
# gateway: "anthropic"
# ── Advanced (configure in aacode_config.yaml) ───────────────
#
# Copy this block to aacode_config.yaml in your project root:
# timeouts:
# shell_command: 30 # seconds
# web_request: 30
#
# limits:
# tool_output_chars: 24000
# max_iterations: 300
#
# context:
# compact_trigger_tokens: 256000
#
# safety:
# dangerous_command_action: warn # warn | reject