# CianaParrot Configuration agent: workspace: "./workspace" data_dir: "./data" max_tool_iterations: 42 provider: name: "anthropic" # anthropic | openai | openrouter | ollama | vllm | groq | google-genai model: "claude-sonnet-4-6" api_key: "${ANTHROPIC_API_KEY}" temperature: 0 max_tokens: 8192 # For OpenRouter/vLLM: # base_url: "https://openrouter.ai/api/v1" # For Ollama: # base_url: "http://localhost:11434" # Model router — multi-tier LLM support with in-chat model switching. # When enabled, wraps the agent in a RoutingChatModel that switches between # tier models via the switch_model tool. Scheduled tasks can specify a # model_tier to run on a specific tier with full tools/memory. # Override in config.local.yaml (gitignored) to activate with your models. # model_router: # enabled: true # default_tier: "standard" # Tier used by default (must exist in tiers) # tiers: # lite: # name: "openai" # model: "gpt-4o-mini" # api_key: "${OPENAI_API_KEY}" # standard: # name: "openai" # model: "gpt-4o" # api_key: "${OPENAI_API_KEY}" # advanced: # name: "anthropic" # model: "claude-sonnet-4-6" # api_key: "${ANTHROPIC_API_KEY}" # expert: # name: "anthropic" # model: "claude-opus-4-6" # api_key: "${ANTHROPIC_API_KEY}" channels: telegram: enabled: true token: "${TELEGRAM_BOT_TOKEN}" trigger: "@Ciana" allowed_users: [] # Empty = allow all scheduler: enabled: true poll_interval: 60 # Seconds between task checks data_file: "./data/scheduled_tasks.json" mcp_servers: {} # filesystem: # transport: "stdio" # command: "npx" # args: ["-y", "@modelcontextprotocol/server-filesystem", "/data"] skills: directory: "skills" # Virtual path relative to workspace enabled: true web: brave_api_key: "${BRAVE_API_KEY}" # Optional, falls back to DuckDuckGo fetch_timeout: 42 transcription: enabled: true provider: "openai" model: "whisper-1" api_key: "${OPENAI_API_KEY}" timeout: 30 gateway: enabled: true url: "http://host.docker.internal:9842" token: "${GATEWAY_TOKEN}" port: 9842 default_timeout: 30 bridges: claude-code: allowed_commands: ["claude"] allowed_cwd: ["~/Documents", "~/Projects"] apple-reminders: allowed_commands: ["remindctl"] things: allowed_commands: ["things"] spotify: allowed_commands: ["spogo"] sonos: allowed_commands: ["sonos"] imessage: allowed_commands: ["imsg"] bear-notes: allowed_commands: ["grizzly"] obsidian: allowed_commands: ["obsidian-cli"] openhue: allowed_commands: ["openhue"] camsnap: allowed_commands: ["camsnap"] peekaboo: allowed_commands: ["peekaboo"] blucli: allowed_commands: ["blu"] whatsapp: allowed_commands: ["wacli", "wacli-daemon"] 1password: allowed_commands: ["op"] claude_code: enabled: true bridge_url: "http://host.docker.internal:9842" # Host gateway for Claude Code execution bridge_token: "${CC_BRIDGE_TOKEN}" # Auth token (must match gateway) projects_dir: "/app/.claude-projects" # Mounted read-only from host ~/.claude/projects permission_mode: "bypassPermissions" # Auto-approve (non-interactive -p mode) timeout: 0 # 0 = no timeout (wait indefinitely) # claude_path: "claude" # Path to claude binary (local mode only) logging: level: "INFO" # DEBUG | INFO | WARNING | ERROR