HERMES_HOME

Aether Agents uses HERMES_HOME to locate its runtime directory. This directory contains the global configuration, per-Daimon profiles with environment secrets, and shared skills.

~/Aether-Agents/home/
├── config.yaml           ← Global configuration
├── profiles/
│   ├── hermes/
│   │   ├── .env           ← Hermes API keys
│   │   └── SOUL.md        ← Hermes system prompt
│   ├── ariadna/
│   │   ├── .env
│   │   └── SOUL.md
│   ├── hefesto/
│   │   ├── .env
│   │   └── SOUL.md
│   ├── etalides/
│   │   ├── .env           ← Includes EXA_API_KEY
│   │   └── SOUL.md
│   ├── daedalus/
│   │   ├── .env
│   │   └── SOUL.md
│   └── athena/
│       ├── .env
│       └── SOUL.md
└── skills/
    └── (shared skills)

config.yaml Reference

config.yaml is the central configuration file for Aether Agents. It defines global model defaults and per-profile overrides so each Daimon can use a different provider or model.

# Global model configuration
model:
  default: claude-3.5-sonnet     # Default model for all Daimons
  provider: anthropic              # Provider: openai, anthropic, google, moonshot, openrouter, ollama, vllm
  base_url: https://api.anthropic.com  # Override API base URL (optional)

# Per-profile overrides (optional)
profiles:
  hermes:
    model:
      default: claude-3.5-sonnet
      provider: anthropic
  etalides:
    model:
      default: claude-3.5-sonnet
      provider: anthropic

Nested vs Flat YAML Format

⚠️ Critical: The flat format model: claude-3.5-sonnet is silently ignored. You MUST use the nested format with model.default — otherwise your configuration will have no effect and Aether Agents will fall back to hardcoded defaults.
# ✗ WRONG — silently ignored:
model: claude-3.5-sonnet

# ✓ CORRECT — nested format:
model:
  default: claude-3.5-sonnet

.env Setup per Daimon

Each Daimon has its own .env file in its profile directory under HERMES_HOME/profiles/<daimon>/. This file stores the provider, model, and API keys for that specific agent.

Example — hermes/.env

PROVIDER=anthropic
MODEL_DEFAULT=claude-3.5-sonnet
ANTHROPIC_API_KEY=sk-ant-...

Example — etalides/.env

PROVIDER=anthropic
MODEL_DEFAULT=claude-3.5-sonnet
ANTHROPIC_API_KEY=sk-ant-...
EXA_API_KEY=exa-...         ← Required for web search!
🔑 EXA_API_KEY is required for Etalides. Without this key, Etalides cannot perform web searches. Make sure to add EXA_API_KEY=exa-... to etalides/.env. Get a free key at exa.ai.

Daimon Toolset Reference

Each Daimon has a set of default tools and optional tools that can be enabled. Tools define what actions a Daimon can take.

Daimon
Default Tools
Optional Tools
Hermes
delegate_task, talk_to, discover, memory browser, web
Ariadna
todo, memory, read_file, write_file session_search
Athena
search_files, read_file, terminal web_search
Daedalus
browser_navigate, browser_snapshot, browser_vision, read_file write_file
Etalides
web_search, web_extract, browser_navigate browser_snapshot, browser_click
Hefesto
delegate_task, execute_code, read_file, write_file, terminal patch, search_files

Common Pitfalls

🚨 HERMES_HOME not set → "No module" error. The runtime can't locate the home directory. Fix: export HERMES_HOME=~/Aether-Agents/home
🤫 Missing .env → Silent fallback to defaults. The agent may run but with wrong provider settings. Fix: cp .env.example .env for each profile.
🔌 Wrong PROVIDER value → Connection fails. Typos like open_ai or Anthropic (wrong case) cause lookup failure. Use exact values: openai, anthropic, google, moonshot, openrouter, ollama, vllm.
📐 YAML indentation with tabs → Python's YAML parser rejects tabs. Use spaces only — never tabs in config.yaml.
⚙️ Flat config format silently ignored. Writing model: claude-3.5-sonnet has no effect. Fix: Always use nested format — model.default: claude-3.5-sonnet.
🔍 Exa key missing for Etalides. Etalides can't perform web searches without the Exa API key. Fix: Add EXA_API_KEY=exa-... to etalides/.env. Get a free key at exa.ai.