# Hermes configuration backup / non-secret baseline. # # Source on Dankclaw: /home/dank/Containers/hermes/data/config.yaml # This file is a sanitized Git backup, not a complete replacement for the # live Hermes state. Do not add dashboard password hashes, phone numbers, # OAuth credentials, API keys, sessions, memories, or generated state here. # The live directory is bind-mounted into the containers as /data. model: provider: dankclaw-large base_url: http://192.168.0.143:7770/v1 api_key: not-needed default: frank-dragoon providers: dankclaw-large: api: http://192.168.0.143:7770/v1 discover_models: false models: frank-dragoon: context_length: 262144 dankserver-small: api: http://192.168.0.235:7770/v1 discover_models: false models: frank-medium: context_length: 114688 # Auxiliary routing from the live configuration. Named providers route via # their `api:` URL; `custom` entries route by their explicit `base_url`. auxiliary: vision: {provider: dankclaw-large, model: frank-dragoon} web_extract: {provider: dankserver-small, model: frank-medium} compression: {provider: dankserver-small, model: frank-medium} skills_hub: {provider: dankserver-small, model: frank-medium} approval: {provider: dankserver-small, model: frank-medium} mcp: {provider: dankserver-small, model: frank-medium} # Title generation goes out over the Responses transport on purpose: Hermes # hardcodes response_format=json_schema on this one call, no local back-end # implements constrained decoding (it is a 400), and this transport is the # only one that drops the field. reasoning.effort=none is required with it — # the call caps output at 64 tokens, which a thinking pass would consume # entirely, leaving an empty title. title_generation: provider: dankserver-small model: frank-medium api_mode: codex_responses extra_body: reasoning: effort: none memory_query_rewrite: {provider: custom, model: frank-medium, base_url: http://192.168.0.235:7770/v1} tts_audio_tags: {provider: custom, model: frank-medium, base_url: http://192.168.0.235:7770/v1} triage_specifier: {provider: dankclaw-large, model: frank-dragoon} kanban_decomposer: {provider: dankclaw-large, model: frank-dragoon} profile_describer: {provider: dankserver-small, model: frank-medium} curator: {provider: dankserver-small, model: frank-medium} dashboard: # basic_auth intentionally omitted; its password_hash remains live-only. font: atkinson-hyperlegible moa: presets: default: reference_models: - provider: openrouter model: deepseek/deepseek-v4-pro enabled: false degraded_reference_policy: loud fanout: user_turn reference_models: - provider: openrouter model: deepseek/deepseek-v4-pro enabled: false aggregator: provider: openrouter model: anthropic/claude-opus-4.8 degraded_reference_policy: loud max_tokens: 4096 fanout: user_turn enabled: true skills: disabled: [] onboarding: seen: busy_input_prompt: true _config_version: 34 platforms: signal: # Live config has the Signal adapter disabled; http_url points at the # host signal-cli daemon. The account phone number stays live-only. enabled: false extra: http_url: http://192.168.0.143:8080 mcp_servers: chrome-devtools: command: /usr/local/bin/npx args: - -y - chrome-devtools-mcp@latest - --browserUrl=http://127.0.0.1:9222