Geeking out with Hermes Agent - the journey so far - Part 2 - the overlord

Overview

The overlord

Overlord agent posting a cron job response in Telegram

In the first part of this post, I talked about how, to get the most out of my agents, I decided to federate them — essentially creating a fleet of different agents — making use of the profiles mechanism offered out of the box by Hermes.

As the number of specialists grew, so did the effort of managing them all — configuring them, updating them, and making sure they kept a consistent structure. That's what led me to build yet another agent: the overlord.

Overlord meta-agent tree — Overlord on top, fleet of profiles below

Here's what Overlord's soul looks like:

Overlord SOUL.md
 1# Overlord — Hermes Profile Administrator
 2
 3You are the Overlord, the meta-agent responsible for monitoring, maintaining,
 4and improving every Hermes profile on this host. You are the overlord of the fleet —
 5you keep every agent healthy, efficient, and correctly configured.
 6
 7## Identity
 8- **Name:** Overlord (call-sign: Overlord)
 9- **Role:** Profile administrator / meta-agent
10- **Reports to:** Paris Apostolopoulos (Telegram ID xxxxx)
11- **Host:** Linux, ~/.hermes/profiles/
12
13## Voice & Tone
14- **Professional, precise, unobtrusive.** You are infrastructure — not a chatbot.
15- **Terse reports, rich detail on demand.** Default to brief status lines; expand when asked.
16- **No flattery, no filler.** If everything is fine, say so in one line and stop.
17- **Peer to a senior engineer.** Paris knows his systems — you don't explain basics.
18- **Proactive but deferential.** You spot problems and fix safe ones automatically.
19  For anything with risk, you propose and ask.
20
21## Core Mission
22You oversee all profiles under `~/.hermes/profiles/` (excluding your own):
23
241. **Health monitoring** — Check profile configs for errors, stale settings,
25   missing env vars, gateway status, disk usage
262. **Configuration hygiene** — Deprecated settings, inefficient model choices,
27   missing safety toggles, toolset bloat
283. **Skill management** — Audit skills across profiles for relevance, staleness,
29   duplication; suggest consolidations
304. **Code quality** — Review profile scripts, cron job code, custom tools for bugs,
31   inefficiencies, security issues
325. **Version awareness** — Track Hermes Agent releases; flag profiles that need
33   config migration after updates
346. **Cron job audit** — Review scheduled jobs across profiles for errors, overlaps,
35   dead jobs
36
37## Model Escalation
38- **Default model:** `deepseek/deepseek-v4-flash` via OpenRouter
39- **Escalate to `deepseek/deepseek-v4-pro`** for complex code review, multi-profile
40  config analysis, security audits, or significant script/skill modifications
41
42## Safety Boundaries
43- **Auto-approve:** config fixes, skill updates, dead code removal, model corrections
44- **Ask first:** gateway changes, credential modifications, .env edits, destructive ops
45- **Never touch:** Another profile's auth tokens, Telegram bot tokens, or API keys
46
47## Delivery
48- Telegram: concise, scannable reports with tables where appropriate
49- CLI: full output, no truncation unless requested

The main tasks for Overlord are:

  • Monitoring and maintaining all profiles
  • Configuring and updating profiles, reviewing their skills and tools, and using curator to prune unused skills and tools
  • Reviewing scheduled jobs across profiles for errors, overlaps, and dead jobs
  • Reading the Hermes newsletters and news, learning from them, and saving things to its memory — after all, it is the Hermes specialist
  • Notifying me about changes to the Hermes codebase, by pulling updates daily

Because most of my fleet is actually profiles hosted on the same machine, this particular Hermes profile can jump between folders, review the config.yaml and AGENTS.md of each other agent, and report back. For the profiles that are hosted on other machines, I have opted to create special SSH keys, so that the agent can ssh to the other machines of my homelab, find the ~/.hermes folder and perform checks and cleanups.

Overlord's fleet LLM-tuning philosophy

The more agents you create, the more OpenRouter keys you issue, and your cost can climb fast. So I gave Overlord a standing task: apply one consistent, cost-aware LLM strategy across the fleet instead of hand-tuning every profile's model line-up on its own.

The idea is simple — two config tiers, Power and Light (Overlord itself runs a third, Admin, for fleet oversight). Power profiles get a stronger primary model and a more aggressive delegation loop; that's reserved for agents doing complex reasoning — finance, coding, the family assistant. Light profiles run cheaper models with a more conservative delegation loop, which is plenty for routine operational work like job scraping or infra monitoring. Each agent gets assigned to whichever tier actually matches its job, not a default.

The philosophy

Quality is the default. Cost is a constraint, not the goal.

Every tuning decision follows one rule: fix waste, preserve capability — don't optimise to zero. A cheaper primary model doesn't get "compensated" with higher reasoning effort or looser compression, since both quietly burn back whatever the cheaper model saved. And most of the real cost isn't model choice at all — it's delegation trees spawning too deep, bloated skill lists re-sent on every cron turn, and unpinned jobs silently drifting onto expensive models. Each of those has a precise fix that doesn't touch capability.

The settings

Model slots by tier

SlotPowerLightAdmin
Primarydeepseek-v4-pro ($0.87/M out)deepseek-v4-flashdeepseek-v4-pro
Fallbackclaude-sonnet-5 ($10/M)claude-sonnet-4claude-sonnet-5
Delegationdeepseek-v4-prodeepseek-v4-flashdeepseek-v4-flash
Auxiliary (all slots)gemini-3.1-flash-litesamesame
Compression auxgemini-3-flash-previewsamesame

All models via OpenRouter — provider openrouter for every slot.

Agent loop & delegation

SettingValueWhy
max_turns90Caps runaway sessions (was 150 on some profiles)
reasoning_effortmediumSweet spot — Paris values quality over cost savings
max_spawn_depth0No delegation nesting. depth=1 once spawned a 6-agent tree costing $4.82 for one cron run
max_concurrent_children3–5Power=5, Light=3, Admin=3

Compression (the silent saver)

SettingValueWhy
threshold0.3Compress at 70% context full
target_ratio0.3Keep 30% after compression (was 0.2 — too aggressive, lost context → re-reads → more tokens)
protect_last_n30Preserve recent conversational context

The economics: the compression model (Gemini Flash, $0.075/MTok input) is cheaper than the primary model (DeepSeek Pro, $0.30/MTok input). Each compression costs ~$0.01 but saves ~$0.16 over the next 10 turns via smaller context. It's a net win on any session deeper than a handful of turns.

Caching

SettingValue
prompt_caching.cache_ttl5m (all profiles with DeepSeek primary)
openrouter.response_cachetrue (fleet-wide)

The real cost drivers (what actually burns credits)

Model price per token is visible. These are not:

  • Delegation trees. Subagents use the delegation model, which may be more expensive than the primary. A profile running Flash as primary but delegating to Pro will silently spend ~3× more per subagent than expected.
  • Cron skill stacking. Every skill in a job's skills list is re-injected into every turn's context. A job with 4 skills (~35KB) × 113 turns × an expensive model = one $21 run.
  • Unpinned cron jobs. When a profile's default model changes, unpinned cron jobs skip their run rather than silently switching — but if someone re-pins them to the old expensive model instead of the new default, the cost stays high. One buddy-finance job burned $35 in 3 days this way.
  • platform_toolsets bloat. Without trimming, every Telegram message sends all tool definitions (14–22K input tokens per call). Trimming to only the tools actually used from that channel cuts that significantly.

Overlord fleet coloured by LLM tier — Admin, Power and Light per agent

Overall

Overlord is one of the agents I talk to most, compared to the others, which mostly serve me by kicking off cron jobs and doing chores. See this very nice tutorial and many others on the Hermes website to get an idea.

I constantly ping Overlord to monitor the agents and also trim skills and things that aren't relevant to them. Having this LLM fleet philosophy in place makes it easy to decide when to spend more, or when the price on OpenRouter is right to swap the model of one of my profiles through Overlord and roll that change out across the fleet. For example, maybe some of the older Anthropic models get cheaper, opening a window of opportunity to replace DeepSeek with them. That said, DeepSeek's current pricing is really amazing!

If you're like me and ended up with different profiles for different things, at some point you will need an Overlord — or some kind of helper — to keep things up to date and tidy.

* Note: this post was 90% written by me, a Hermes agent helped me improve the use of English and grammar but the text was typed by me :) it is not AI slop.