skip to content
Terry Li

I have spent fourteen months building a personal AI system. It runs on a Fly VM, dispatches work to a free Oracle ARM box, manages memory through 150 typed correction files, and talks to me on Telegram, WhatsApp, email, and iMessage. It has 220 skills, 46 MCP tools, and a Temporal-based task queue that dispatches free coding models for volume work while reserving expensive models for judgment. It is deeply tailored to one person and it would take someone else weeks to understand the naming conventions alone, because everything is named after cell biology.

Nous Research just shipped Hermes Agent, an open-source project that does most of the same things out of the box. You curl a script, run setup, and you have a persistent agent with eighteen messaging platform adapters, six sandbox backends including serverless options that hibernate when idle, a built-in cron scheduler, auto-generated skills, and support for eighteen LLM providers. It took them a few months to build what took me over a year. That is not a criticism of my approach. It is the difference between building for one person and building for everyone.

What they got right is the gateway architecture. My system has a separate tool for each messaging channel — one MCP tool for Telegram, another for WhatsApp, another for email. Each has its own logic, its own quirks, its own bugs. Hermes runs a single gateway process with adapter plugins. A message arrives on any platform, gets normalised into a common event, routed to the agent, and the response goes back through the same adapter. Adding a new channel means writing one adapter file, not building a new tool from scratch. This is obviously better. I knew it was better and still built mine piecemeal because each channel arrived at a different time and I solved each one independently. That is how personal infrastructure works — you solve the immediate problem and the architecture emerges whether you designed it or not.

What they traded away is memory depth. Hermes gives the agent 2,200 characters of self-managed memory and a user profile of 1,375 characters. About 1,300 tokens total. The agent decides what to remember, what to consolidate, and what to drop when space runs out. This is elegant and zero-maintenance. It is also shallow. My system has three tiers — universal rules loaded every session, situational frameworks grepped on entry, and correction files read when relevant. Some corrections are protected and cannot be auto-pruned because they prevent catastrophic mistakes that happen rarely. An agent optimising for relevance would eventually consolidate away the note that says “never force-push this branch” because force-pushing is rare, right up until the day it is not. The editorial function — deciding what deserves protection — requires understanding consequences that a 2,200-character scratchpad cannot encode.

Their skill system has a feature mine does not: auto-creation. After the agent completes a complex task using five or more tool calls, it automatically writes a skill file capturing the procedure. Next time it encounters something similar, it loads the skill instead of reasoning from scratch. My system requires me to notice a recurring pattern and deliberately design a skill for it. Their approach is faster to bootstrap. Mine produces skills with judgment baked in — when to use them, when not to, what breaks. The auto-generated skill is a recording. The designed skill is a playbook. Recordings degrade when the environment changes. Playbooks adapt because they encode the why, not just the what.

The most interesting design choice is their heartbeat. A file checked every thirty minutes where the agent decides whether to act proactively — check the inbox, run a scheduled report, surface something you forgot about. It is simpler than my approach of distributing proactive behaviour across multiple cron jobs and scheduled routines, each with their own logic. I liked this enough to steal it. A single standing-orders file polled on a timer, with the agent deciding what is worth surfacing. The unified entry point is better than my scattered automation, and I am building it this week.

The honest comparison is that Hermes Agent is a better product and my system is a better fit. Hermes works for anyone who can run a terminal command. My system works for one person who has fourteen months of accumulated corrections that the system has never repeated. A stranger cannot install my setup. But a stranger also cannot install fourteen months of knowing that the ZhiPu API returns fake quota errors when workers hit a wall-time limit, or that the pre-commit hook silently passes tokens that contain the word “example.” Those corrections are the compound interest. The system is the vehicle. The corrections are the returns.

If you are starting from zero today, install Hermes Agent. It is MIT-licensed, well-tested, and it will get you eighty percent of what a bespoke system provides in an afternoon instead of a year. If you have already been running your own system for months and your corrections have started compounding, do not switch. Study what they built, steal the good ideas, and keep tending your garden. The best personal agent is the one that knows your mistakes.

· · ·

Keep reading