Hermes: an agent that remembers, routes and ships
· 2 min read
Skills, persistent memory, model routing and MCP tooling — what an agent runtime needs before it's useful for real work.
Most "AI agents" are a prompt in a loop with a shell tool. That's enough for a demo and not enough for work that has to survive a Tuesday.
The four things that actually matter
1. Skills — procedural memory. A chat transcript is not a procedure. A skill is a versioned, reusable document that encodes how a recurring task is done in a specific environment: the exact commands, the pitfalls, the parts that look right but silently fail. When the agent hits that kind of task again, it loads the skill instead of rediscovering the pitfalls.
2. Persistent memory — facts. Who the user is, what the environment looks like, conventions that apply everywhere. Kept small and declarative, deliberately separate from skills, because it's injected into every turn and everything there should earn its place.
3. Model routing — economics. Not every turn needs a frontier model. Trivial classification, monitoring and bulk work go to cheap or local models; complex reasoning goes to the strong one. A router that classifies per turn and falls back gracefully is the difference between a demo and a viable product.
4. MCP tooling — reach. Model Context Protocol servers give the agent typed access to real systems: GitHub, databases, browsers, filesystems. Tools instead of shell-string gymnastics, with real schemas and real error handling.
Why the plumbing is the product
The interesting engineering isn't the model call. It's everything around it:
- Long jobs must survive the session. Work that runs for hours needs to be detached, checkpointable and resumable, not tied to a chat window that closes.
- Claims must be verified. A subagent saying "done" is a self-report, not a fact. The runtime's job is to make fabrication detectable — diff the repo, run the tests, read back the created record.
- Context must be managed deliberately. What's always loaded, what's loaded on demand, what's retrieved from history. Getting this wrong is why agents get expensive and confused at the same time.
- Failure must be legible. When a model call dies, "model unavailable" is useless. Was it an expired key, a rate limit, an entitlement rejection? Name it and link the fix.
What this buys you
An agent runtime with skills, memory, routing and MCP can do work that's genuinely long-horizon: run a repo's test suite, file and track issues, keep documentation synced with reality, and report honestly when something is blocked. That's a different category of usefulness from autocomplete.
We build our agents on this shape — and increasingly on SmythOS SDK, which gives the same discipline in a portable framework: explicit agents, explicit tools, local or cloud models behind one interface.
Related posts
- AIOllamaLocal LLMs
Local models vs cloud models: how we choose
Privacy, cost per token, latency and capability all pull in different directions. Here's the decision rule we actually use.
· 2 min read