Atomic Agent, Hermes, and OpenClaw are three open-source, MIT-licensed AI agents that share a common core loop but are built around different goals. OpenClaw is an assistant that lives in every messenger you use. Hermes is a self-improving agent that learns from its own runs. Atomic Agent is local-first: it runs a quantized model on your own machine by default. That last point is the real dividing line.
If you have used any of the three, you have probably wondered which one you actually want. They share a surprising amount of DNA, and each is genuinely good at something the others are not. This is an honest comparison from someone who builds one of them: we read all three codebases, and we will tell you where each wins.
The short version. Pick Atomic Agent if the model has to run on your hardware. Pick Hermes if you want an agent that curates skills from its own runs and you want the widest choice of model providers. Pick OpenClaw if you want one assistant reachable from every messenger and device you own. All three are MIT-licensed, so none of them locks you in.
What do these three agents have in common?
More than you would expect. All three are open source under the MIT license, and all three run the same fundamental loop: send context to a model, let it call tools, feed the results back, repeat until the task is done. Under the hood, the overlap is real:
- Browser automation through Playwright.
- SKILL.md playbooks, reusable human-written procedures the agent can load.
- MCP support, the Model Context Protocol, for connecting external tools and data sources.
- Approval gates so a human can confirm before risky actions run.
- Cron and scheduling for recurring jobs.
- SQLite as the local store, and Telegram as a chat surface.
All three are also single-user tools, built for one operator running their own agent, not multi-tenant SaaS. So the question is not “which one has features”, because they all do. The question is what each was built around.
That shared DNA is not a coincidence. These projects are young, they read each other’s code, and the useful ideas propagate fast. Hermes even ships a hermes claw migrate command to import an OpenClaw setup. Treat the feature checklist as roughly settled and decide on architecture instead.
How do Atomic Agent, Hermes, and OpenClaw compare?
The single most decisive row in the table below is the second one: Atomic Agent runs a quantized model on your own machine by default, while Hermes and OpenClaw are both cloud-oriented by default and can be pointed at a local endpoint as a configuration choice. Everything else follows from that.
| Atomic Agent | Hermes | OpenClaw | |
|---|---|---|---|
| Philosophy | Local-first agent | Self-improving agent | Assistant in every messenger |
| Runs local by default | Yes, quantized model on your machine | No, cloud-oriented | No, defaults to a cloud model |
| Language / stack | TypeScript (~82K lines) | Python (larger codebase) | TypeScript monorepo (very large) |
| Inference engine | TurboQuant llama.cpp, built in end to end | Provider APIs, roughly 29 of them | Cloud model by default (gpt-5.5) |
| Tool calling | GBNF grammar-constrained decoding | Provider-native function calling | Provider-native function calling |
| Memory | Own 5-layer local memory, reflection and voting | Pluggable external providers, FTS5 session search | Plugins (LanceDB, wiki, files) |
| MCP support | Yes | Yes | Yes |
| Platforms | macOS, Linux, Windows (CLI) | Cross-platform, many adapters | Native iOS, Android, macOS apps |
| Channels | CLI plus Telegram | Telegram plus platform adapters | Roughly 23 channels |
| Extensibility | MCP, skills, MIT source | MCP, skills, provider plugins | 143 extensions, ClawHub ecosystem |
| Security model | Approval gates, shell-command filter, NDJSON traces | OS isolation (Docker / SSH / Modal backends) | Approval gates across channels |
| License | MIT | MIT | MIT |
| Best for | Private, offline, no-token-bill local work | Learning from experience and provider breadth | Multi-channel reach and native apps |
Read that table as three different bets rather than a scoreboard. Atomic Agent bets that the model belongs on your hardware. Hermes bets that an agent should improve as it runs and should work with whatever model you can reach. OpenClaw bets that reach is the feature, and that an assistant you cannot message from your phone is an assistant you will forget to use.
Which is truly local-first?
This is the cleanest distinction between the three, so it is worth being precise. A local-first agent runs its model, its reasoning loop, and its tool execution on your own hardware by default: no cloud round-trip, no API key, no per-token bill. The trade-offs on both sides of that line are worth understanding before you commit, and we walk through them in local AI agents vs cloud agents.
Only Atomic Agent is built this way. Its whole architecture is organized around llama.cpp, and specifically around our own build of it, TurboQuant, which the agent downloads and manages for you. TurboQuant does two things that matter on consumer hardware. Its KV-cache quantization uses a Walsh-Hadamard rotation with a fused Metal decode kernel to compress the cache up to roughly 6.4x against F16, which is what makes long sessions fit in memory you actually have. Its weight quantization uses Lloyd-Max with the same rotation and fused Metal and Vulkan kernels, so small models stay usable rather than degrading into noise. Together they buy about 30 to 50 percent more throughput on small local models. On top of that sit stable-prefix KV-cache reuse, so shared context is never recomputed, and GBNF grammar-constrained decoding, so tool calls are always well-formed. Run it and, by default, a quantized model executes on your CPU or GPU, and the prompts and tool results stay on the machine. Anonymous product telemetry is a separate matter, and it can be turned off. You can read how the pieces fit together in the architecture docs.
Hermes is cloud-oriented by default and supports roughly 29 LLM providers. Its strength is breadth of models, not running one locally. OpenClaw defaults to a cloud model (gpt-5.5). Both can be pointed at a local endpoint, and people do it, but neither is designed around it the way Atomic Agent is. The difference shows up in the details: the KV-cache strategy, the grammar layer, the model catalog, and the memory format are all local-model decisions that a cloud-first agent has no reason to make.
If local-first is a hard requirement, whether for privacy, offline use, or simply no token bill, the field narrows to one.
How the three architectures actually differ
Feature lists converge. Architectures do not, and architecture is what you live with six months in.
Where inference happens
Atomic Agent embeds llama.cpp as a first-class component and manages the model daemon itself: pull a quantized build from its catalog, set a context size, start the server, run the loop against it. The consequence is that model behavior is part of the agent’s own surface. Context window, quant level, and sampling are agent settings, not remote service settings. If you want to see this end to end on a specific model, we wrote it up for Qwen 3.8 27B.
Hermes takes the opposite and equally coherent position: inference is somebody else’s problem, so support everybody. Roughly 29 providers means you can switch models the way you switch a config value, and you inherit whatever a frontier API offers on the day you call it. OpenClaw sits closer to Hermes here, defaulting to a strong cloud model and optimizing the surfaces around it.
Neither approach is wrong. They are answers to different questions. “How do I get the best model available today” and “how do I get a good-enough model that never leaves my machine” do not have the same answer.
How tool calls stay valid
An agent lives or dies on structured output. Every step it must emit a call that parses, executes, and returns something it can use. One malformed argument and the step fails.
Cloud providers largely solve this for you: function calling is a first-class API feature, and the model was tuned for it. Hermes and OpenClaw both lean on that, which is a sensible thing to lean on.
A local quantized model is a harder case, because lowering weight precision degrades structured output reliability before it degrades prose quality. Atomic Agent handles it at the decoder rather than in the prompt: a GBNF grammar filters out any token that would break the tool schema during sampling, so an invalid structure cannot be emitted. The mechanics are covered in GBNF grammar-constrained tool calling. This is a direct consequence of the local-first bet: if you are not going to be handed reliable function calling by a provider, you have to build it.
What each one remembers
Atomic Agent ships its own five-layer memory, profile, notes, links, lessons, and procedures, backed by local SQLite, with reflection and voting on top. It is opinionated and it is self-contained, which is what you want when there is no cloud service to defer to.
Hermes goes pluggable: external providers such as Honcho, Mem0, and Supermemory, plus FTS5 full-text search over past sessions. The interesting part is what it does with memory, which is curate new skills out of its own trajectories and compress runs into training data. Memory there is not just recall, it is a feedstock for improvement.
OpenClaw treats memory as a plugin concern (LanceDB, wiki, files), which fits an assistant whose job is to be reachable everywhere rather than to deepen over time in one place.
Where the security boundary sits
Atomic Agent combines approval gates, a shell-command filter, and NDJSON execution traces you can replay afterwards to see exactly what ran. The traces are the part worth calling out, because auditability after the fact is different from permission before the fact.
Hermes is refreshingly blunt that prompt-level guardrails are not a real boundary and that OS isolation is, so it leans on Docker, SSH, and Modal terminal backends. That is the more conservative position of the three, and it is a fair one.
OpenClaw applies approval gates across its many channels, which is a harder problem than it sounds: an approval prompt has to work on a phone notification as well as it works in a terminal.
Which is most accurate?
Honest answer first: we do not have a clean three-way accuracy comparison, and the two-way one we do have has a known flaw we are fixing.
We ran Atomic Agent against Hermes on GAIA Level 1 (53 tasks) on the same hardware with the same local model. Atomic Agent scored 69.8% to Hermes’ 58.5%, solving 37 of 53 tasks, and did it at a median of roughly 217 seconds per task against 351 seconds. That is 11.3 percentage points more accurate and about 1.6x faster per task.
Both agents ran with a 40-step budget. Atomic Agent never came close to it, topping out at 31 steps and hitting the cap zero times, which is the step-efficiency half of the result: it reaches the answer in fewer moves, so it needs less headroom to get there.
What survives the caveat is narrower and still useful: on the same hardware and the same local model, Atomic Agent completed tasks in fewer steps and less wall-clock time per task. Step efficiency and latency were measured under conditions that did not disadvantage either side, and Atomic Agent never hit the ceiling that constrained Hermes. That is a statement about how tightly the loop runs on a local model, not a claim about which agent is smarter.
Two further limits. OpenClaw was not in this benchmark at all, so nothing here says anything about it. And the run reflects local-model conditions specifically, which is the setup Atomic Agent is tuned for and not the setup Hermes is tuned for. Hermes pointed at a frontier cloud API is a different system than Hermes on a local quant, and our run does not measure that.
The full methodology, including the model, context window, step budget, and the per-task breakdown, is public: GAIA-L1-EXPERIMENT.md. Run it yourself if you want to check the numbers.
Atomic Agent, in a paragraph
Atomic Agent (ours) is the local-first option, written in TypeScript and built end to end around llama.cpp. It ships its own five-layer local memory, profile, notes, links, lessons, and procedures, with reflection and voting on top, all backed by local SQLite. Its security model is approval gates plus a shell-command filter plus NDJSON execution traces you can replay to catch drift. It runs on macOS, Linux, and Windows, and it is a CLI first, with Telegram as a remote surface. Pick it when the model must stay on your machine.
Where it is weakest: it is the youngest of the three, it has no native mobile app, and a quantized local model on consumer hardware is measurably slower per step than a frontier cloud API. If you want a snappy assistant on your phone, this is not it.
Hermes, in a paragraph
Hermes (from NousResearch, in Python) is the self-improving one, and it is genuinely good at it. It curates new skills from its own experience and compresses trajectories into training data, so it gets better as it runs. It is also the breadth champion: roughly 29 LLM providers and many platform adapters, plus pluggable external memory (Honcho, Mem0, Supermemory) and FTS5 session search. It is refreshingly honest that the real security boundary is OS isolation, and it leans on Docker, SSH, and Modal terminal backends to provide it.
Where it costs you: the self-improvement machinery and the provider matrix are surface area, and surface area is configuration. Being cloud-oriented by default also means the per-token bill is yours, and long agent runs are exactly the workload where that adds up.
OpenClaw, in a paragraph
OpenClaw (a large TypeScript monorepo) is the assistant that is everywhere. It reaches roughly 23 channels, ships native iOS, Android, and macOS apps, and adds Canvas and voice on top. It treats devices as nodes, so your phone’s camera or screen becomes something the agent can use, and it brings Codex integration, 143 extensions, and the ClawHub ecosystem. If you want one assistant reachable from every surface you own, this is the one built for it.
Where it costs you: the monorepo is large, the extension surface is large, and defaulting to a cloud model means the same token-bill and data-flow considerations as any hosted assistant. Reach is the feature, and reach has a footprint.
Licensing: all MIT, and what that actually means
All three ship under the MIT license, which is about as permissive as open source gets. You can read the source, modify it, run it commercially, and redistribute it, with attribution and no copyleft obligation on your own code.
The practical consequences are worth spelling out, because “it’s MIT” gets said more often than it gets thought through:
- No usage restrictions and no seat counting. None of the three imposes a revenue threshold or a commercial tier at the license level.
- You can fork. If a project changes direction, an MIT codebase can be forked and maintained. That is real insurance and it applies equally to all three.
- The license covers the agent, not the model or the services. This is the part people miss. An MIT agent calling a commercial API is still bound by that API’s terms and still bills you per token. An MIT agent running a local model is bound by that model’s license, and open-weight licenses vary: Apache 2.0 is permissive, some others carry conditions. The model card is where that is stated, as on Qwen 3.8 27B. Check the model separately from the agent.
- MIT is not a support contract. All three are young projects. Read the issue tracker before you build something load-bearing on any of them.
For a local-first setup the license stack has to hold at both layers, agent and model, which is why we care about which model you run and not just which agent wraps it.
Which should you pick?
There is no single winner here. There is a fit for each, and the fastest way to find yours is to start from the constraint you cannot negotiate: where the model runs, how much configuration you want, and which screen you need to reach the agent from.
| Your situation | Best fit | Why |
|---|---|---|
| Data cannot leave your hardware (regulated, air-gapped, sensitive) | Atomic Agent | The only one designed around a local model by default, with local memory and replayable traces |
| Long agent runs where a per-token bill would hurt | Atomic Agent | Local inference means the metered cost of a long run is zero |
| You want the strongest available model today, whatever it is | Hermes | Roughly 29 providers, so switching models is a config change |
| You want an agent that improves from its own runs | Hermes | Skill curation and trajectory compression are built in, not bolted on |
| You need hard isolation for risky shell work | Hermes | Docker, SSH, and Modal backends make the boundary the OS, not the prompt |
| You want to message the agent from your phone all day | OpenClaw | Roughly 23 channels plus native iOS, Android, and macOS apps |
| You want a big ready-made extension ecosystem | OpenClaw | 143 extensions and ClawHub |
| You want the device itself as a tool (camera, screen) | OpenClaw | Devices are treated as nodes the agent can use |
| You are on a 24 GB GPU or a 32 GB Mac and want to use it | Atomic Agent | The catalog, quant handling, and grammars are built for exactly that hardware |
| You are evaluating and want to read all the code first | Any of them | All three are MIT, so this is a matter of taste, not permission |
In plain prose: local requirement points to Atomic Agent, model flexibility and self-improvement point to Hermes, and multi-channel reach points to OpenClaw. If two rows above apply to you and they disagree, the one you cannot compromise on wins.
What switching between them actually involves
People rarely pick once. Here is what moving is really like, based on what these projects share and where they diverge.
What ports easily. MCP servers are the friendliest piece: all three speak the protocol, so an MCP tool you configured for one agent is a config entry away from working in another. SKILL.md playbooks are close behind, since the format is a human-written procedure rather than a runtime artifact, though the tool names inside a skill may need adjusting. Prompts and task descriptions carry over unchanged.
What does not port. Memory is the wall. Atomic Agent’s five-layer SQLite memory, Hermes’ external providers, and OpenClaw’s plugin stores are different shapes, and there is no standard interchange format. Expect to rebuild accumulated context rather than migrate it. Approval policies and security configuration also do not transfer, because the boundaries sit in different places: a shell-command filter is not the same object as a Docker backend.
What surprises people moving to a local agent. Two things. First, context is a budget you now manage: an agent’s system prompt carries every tool definition before any work starts, so a default chat-sized window is not enough, and tool results accumulate in the context as a run proceeds. Second, latency changes character. A quantized model on consumer hardware is slower per step than a frontier API, so tasks that felt instant now take minutes. Whether that trade is worth it depends entirely on the work.
What surprises people moving from a local agent to a cloud-oriented one. Mostly the bill, and it arrives with the second long run rather than the first. Agent workloads are token-hungry in a way chat is not, because every tool result goes back into the context on every step.
A reasonable way to decide. Run the same three real tasks through the candidates rather than reading feature tables, including one long multi-step task, since that is where agents actually diverge. The space is competitive enough that migration paths exist: Hermes ships hermes claw migrate to import an OpenClaw setup, which tells you the maintainers expect people to move.
Frequently asked questions
The bottom line
All three are strong, MIT-licensed, and built on the same core loop, so pick by what they are organized around. OpenClaw is reach: roughly 23 channels and native apps. Hermes is self-improvement and provider breadth: skill curation from its own runs and roughly 29 model providers. Atomic Agent is the local-first one, built end to end on llama.cpp with grammar-constrained tool calling and its own local memory.
On measurement, the GAIA Level 1 head-to-head against Hermes is the clearest signal we have: 69.8 percent against 58.5 percent on identical hardware and an identical local model, at roughly 1.6x the speed per task, with the methodology published in full.
If keeping the model on your own machine matters to you, the choice is easy, and Atomic Agent takes about five minutes to try. Start with the quickstart guide, follow the walkthrough on how to run an AI agent offline, or read the code on GitHub.