_config_version: 38 model: default: "qwen-medium" provider: "custom:router" base_url: "http://router:8081/v1" api_key: "${ROUTER_API_KEY}" context_length: 160000 api_mode: "chat_completions" # A named provider is required by current Hermes releases. A bare `custom` # endpoint is canonicalized to a host-derived identity and can lose its key # association in resumed sessions. The stable identity below always resolves # its credential from the container environment. providers: router: name: "Athena Profile Router" api: "http://router:8081/v1" key_env: "ROUTER_API_KEY" transport: "chat_completions" default_model: "qwen-medium" discover_models: true # Commands run in an isolated, persistent workspace. Host and Unraid changes # use the audited operator/MUA MCPs instead of a Docker socket or host mount. terminal: backend: "local" cwd: "/workspace" timeout: 600 home_mode: "profile" persistent_shell: true lifetime_seconds: 1800 web: search_backend: "searxng" extract_backend: "native" extract_char_limit: 15000 keyless_fallback: true keyless_rescue: true # Hermes discovers MCP servers in the background. Athena has several remote # servers and the Home Assistant relay can finish just after the short upstream # default, leaving its tools absent from the first agent turn until a manual # reload. Wait long enough to build the initial tool snapshot completely; # completed discovery returns immediately, so this does not add a fixed delay. mcp_discovery_timeout: 15.0 mcp_single_query_discovery_timeout: 30.0 agent: max_turns: 500 gateway_timeout: 3600 session_stall_timeout: 600 tool_loop_guardrails: warnings_enabled: true hard_stop_enabled: true warn_after: exact_failure: 2 same_tool_failure: 3 idempotent_no_progress: 2 hard_stop_after: exact_failure: 5 same_tool_failure: 8 idempotent_no_progress: 5 loop_caps: max_web_searches: 20 max_subagents: 8 # Compact before a tool-heavy session can grow beyond the selected model's # usable window. Large old tool results are pruned without an LLM call first; # lean tail retention avoids several expensive back-to-back summary passes. compression: enabled: true progress_notices: true threshold: 0.65 target_ratio: 0.15 tail_mode: "lean" protect_last_n: 20 proactive_prune_tokens: 50000 proactive_prune_min_result_chars: 4000 proactive_prune_min_reclaim_tokens: 4096 context_total_ceiling_seconds: 600 auxiliary: compression: provider: "main" model: "" reasoning_effort: "none" # German is the platform default. The display setting localizes the static # messages Hermes currently supports; agent replies are governed by SOUL.md. display: language: "de" # Speech input stays local and private. A fixed German hint avoids Whisper # interpreting short utterances as English while retaining the fast base model. stt: enabled: true provider: "local" language: "de" prompt: "Hermes, Athena, Qwen, OpenWebUI, Unraid, Home Assistant, Sonarr, Radarr, Navidrome" local: model: "base" language: "de" # Reuse Athena's OpenAI-compatible TTS route. It currently serves XTTS v2 with # Annmarie Nele and transparently falls back to Piper when XTTS is unavailable. tts: provider: "openai" speed: 1.0 openai: model: "piper" voice: "alloy" speed: 1.0 base_url: "http://router:8081/v1" voice: auto_tts: true client_direct: false skills: creation_nudge_interval: 20 plugins: enabled: ["web-searxng"] timeouts: tools: concurrent_batch: 900 sequential_call: 900 mcp_servers: athena-platform: url: "http://mcp-platform-context:8000/mcp" timeout: 180 connect_timeout: 30 supports_parallel_tool_calls: false athena-operator: url: "http://mcp-athena-operator:8000/mcp" timeout: 900 connect_timeout: 30 supports_parallel_tool_calls: false web-general: url: "http://tinysearch:8000/mcp" timeout: 180 connect_timeout: 30 supports_parallel_tool_calls: false github: url: "http://mcp-github:8000/mcp" timeout: 300 connect_timeout: 30 supports_parallel_tool_calls: false homeassistant: url: "http://mcp-homeassistant:8000/mcp" timeout: 300 connect_timeout: 30 supports_parallel_tool_calls: false arr: url: "http://mcp-arr:8000/mcp" timeout: 600 connect_timeout: 30 supports_parallel_tool_calls: false navidrome: url: "http://mike-ai-mcp-navidrome:3000/mcp" timeout: 300 connect_timeout: 30 supports_parallel_tool_calls: false deemix: url: "http://mcp-deemix:8000/mcp" timeout: 300 connect_timeout: 30 supports_parallel_tool_calls: false unraid: url: "${MUA_MCP_URL}" headers: Authorization: "Bearer ${MUA_MCP_BEARER_TOKEN}" timeout: 900 connect_timeout: 30 supports_parallel_tool_calls: false