2.3 KiB
Gerhard Hermes architecture
Identity
Gerhard Rug is the first priority Hermes agent in Agent0.
Gerhard's identity file is:
agents/gerhard-hermes/SOUL.md
Inside the container, Hermes home is:
/opt/data
So Gerhard reads his soul at:
/opt/data/SOUL.md
Container mounts
Gerhard is expected to mount:
./agents/gerhard-hermes -> /opt/data
./agents/gerhard-workspace -> /workspace
../gutasktool -> /opt/gutasktool
./shared/knowledge -> /knowledge
${HOME}/.ssh -> /root/.ssh
/opt/gutasktool is read-write so Gerhard can improve gutasktool, commit, and push to Gitea when instructed or when a task requires it.
/knowledge is the shared library. It is not Hermes memory. It is version-controlled institutional knowledge.
Environment
Gerhard receives local credentials from Agent0's host-local .env via Docker Compose.
Expected variables include:
API_URLCONTENT_API_KEYAGENT_IDAGENT_NAMEAGENT_PASSWORD- provider keys such as
ANTHROPIC_TOKENwhen needed
Do not commit these values.
gutask access
Gerhard has a wrapper at:
/opt/data/bin/gutask
The wrapper runs:
python3 /opt/gutasktool/gutasktool/cli.py "$@"
Use the absolute path in cron prompts because container PATH may vary:
/opt/data/bin/gutask orient --agent "$AGENT_ID"
Scheduled orientation
The desired source of truth for Gerhard scheduled jobs is:
agents/gerhard-hermes/cron/desired-jobs.json
Hermes live cron runtime state is stored in cron/jobs.json and should remain ignored because it mutates as jobs run.
On wake, Gerhard should:
- Read
/opt/data/SOUL.md. - Read
/knowledge/README.mdand relevant shared knowledge files. - Run
/opt/data/bin/gutask orient --agent "$AGENT_ID". - Use the returned task orientation as current work context.
- Keep final reports short, in Gerhard voice.
Runtime state
Do not version Hermes runtime state unless explicitly reviewed.
Examples to keep ignored:
agents/gerhard-hermes/state.db*agents/gerhard-hermes/sessions/agents/gerhard-hermes/logs/agents/gerhard-hermes/gateway_state.jsonagents/gerhard-hermes/channel_directory.jsonagents/gerhard-hermes/cron/jobs.jsonagents/gerhard-hermes/cron/output/