← back to the imperial archives

case study // agent engineering // 2026

How I run a 34-bot agent fleet on one gaming PC

Ken is my fork of an open-source agent framework. On top of it I built the desktop app, the operations layer and the skills library — then left 34 bots running unattended. Every number below is read out of the thing itself: the git history, the cost ledger, the cron database. Including the ones that keep me honest.

298my commits in the fork
34bots across 4 fleets
659recorded job executions
203skills in the library

First, what I did not do

Ken is a fork of Hermes Agent by Nous Research, not a framework I wrote. The upstream repo has 22,536 commits from dozens of contributors; mine is 298 of them. Publishing a page that implied otherwise would be a lie that a single click on the repo would expose.

What those 298 commits actually are, by how often I touched the file:

areawhat I did to it
WORKLOG.md20 dated entries, 446 lines — the build written down as it happened
ken_cli/web server, CLI surface, banner and branding
apps/desktop/desktop app work, including English + Chinese i18n and its type layer
agent/the conversation loop and the auxiliary-model client
Why lead with the caveat? Anyone technical checks the repo before they believe a portfolio page. Claiming authorship of a 22k-commit framework takes ten seconds to disprove; describing exactly what you added to it is the part that reads as judgement.

The fleet

34 bots organised into 4 fleets with a coordinator each, assigned to six tiers of model — free tiers and a locally hosted model first, paid capacity last. The dashboard reads a real ledger rather than a mock-up, which is the only reason these numbers exist.

tierbotswhat it is
flash17cheap hosted models for high-volume work
pro4stronger models, reserved for reasoning
local4qwen3:8b on my own GPU — zero marginal cost
groq / openrouter4fallback providers when a tier rate-limits
unassigned5on-demand agents that pick a tier at call time
# measured, not estimated — from the fleet cost ledger
25 recorded calls   $0.003721 total
20,046 prompt tokens / 5,363 completion tokens
7 distinct models, incl. qwen3:8b running locally

The cost headline only means something because of the routing rule behind it: try the free and local tiers first, escalate to paid providers only when a job needs more than they can give. That rule is also why the ledger is small — most of the fleet's work never reaches a metered API at all.

The part that makes it unattended

A fleet that only runs when you watch it is a demo. The operations layer is what I built on top:

desktop app forked UI + i18n Telegram gateway chat control phone (Tailscale) remote terminal gateway routes every input agent loop router: free → local → paid tools + skills (203) brain RAG over notes delivery gate cron + watchdogs 9 jobs · silent on success ledger cost per call
three interfaces in, one agent loop, a watch layer beside it, and a ledger recording what it cost
  1. 9 scheduled jobs (8 enabled) with 659 recorded executions in a SQLite history I can query when something looks wrong.
  2. Watchdogs that stay silent when healthy — a job that pings on success trains you to ignore it. Mine only speak when a check fails.
  3. Independent verification — the delivery gate that refuses a bad output before it reaches a customer, written up separately on this site.
  4. One source of truth per tool — two pipelines used to carry their own drifting copy of that gate; now both call the published one.

Skills as procedural memory

The part I underestimated: 203 SKILL.md files across 32 categories, plus 2 plugins. Each one is a task I got wrong once and wrote down, so the next run starts from the fix. That library is also why sessions behave consistently — the agent loads the relevant skill before touching a task instead of rediscovering the sharp edges.

What this adds up to

Not "I wrote an agent framework." It is: I forked one, shipped 298 commits of real changes into it, built and ran an operations layer that survives unattended, and instrumented it well enough to quote its own spend to six decimal places. The interesting engineering isn't the chatbot — it's everything around it that makes the chatbot something you can leave running while you sleep.

Read it, then check it. The fleet monitor shows the live dashboard, the docs site shows the system, and the fork is public — the commit count and file history are one click away.
PythonAgent engineeringCron / scheduling Local LLMsCost engineeringFork maintenance
← all projects Janak Rudani · Winnipeg · 2026