I measured the RAM usage of 6 AI agent harnesses on a $5 VPS
Published
Last updated
Most AI agent harnesses are sold on what they can do, not on what they cost to keep running. If you want an agent that stays on around the clock, the second number decides whether a $5 VPS is enough or whether you need a bigger box. So I put six harnesses on the same small server and measured them.
The short version
On a [x] VPS, Gray idled at [x] MB, OpenClaw at [x] MB and Hermes Agent at [x] MB. The lightest harness overall was [x]; the heaviest was [x], at [x] MB.
The setup
- —Server: [x] ([x] vCPU, [x] GB RAM, [x]).
- —Model: [x], the same provider and model for every tool, so the numbers measure the harness and not the model.
- —Versions: the latest stable release of each tool as of [x].
- —Each tool installed on a clean image, following its own install instructions.
The six harnesses
| Harness | What it is | License |
|---|---|---|
| Gray | Minimal, always-on harness: one Rust binary, bash as its only default tool | MIT |
| OpenClaw | Open-source personal AI assistant with 20+ messaging integrations | MIT |
| Hermes Agent | Self-improving agent from Nous Research with memory and self-created skills | MIT |
| ZeroClaw | Single Rust binary with supervised autonomy by default | MIT or Apache-2.0 |
| nanobot | Ultra-lightweight Python agent framework from HKUDS | MIT |
| NanoClaw | Self-hosted agent that runs each agent in its own container | MIT |
Results
| Harness | Idle RSS | Idle CPU | Active RSS | Active CPU | Install size |
|---|---|---|---|---|---|
| Gray | [x] MB | [x]% | [x] MB | [x]% | [x] MB |
| OpenClaw | [x] MB | [x]% | [x] MB | [x]% | [x] MB |
| Hermes Agent | [x] MB | [x]% | [x] MB | [x]% | [x] MB |
| ZeroClaw | [x] MB | [x]% | [x] MB | [x]% | [x] MB |
| nanobot | [x] MB | [x]% | [x] MB | [x]% | [x] MB |
| NanoClaw | [x] MB | [x]% | [x] MB | [x]% | [x] MB |
The full table, including dependencies, time to first reply and lines of config, is on the agent harness benchmark page.
What stood out
- —[x]
- —[x]
- —[x]
How I measured
Idle numbers are the mean of one-minute samples over an hour, with each agent running and waiting for work. Active numbers come from the same fixed script of 10 tasks, run through each tool.
$pidstat -r -u -p $PID 60 60 # native installs$docker stats --no-stream $NAME # container installs
The raw CSV and scripts are at [x]. If you get different numbers on your hardware, open an issue with your results.
Caveats
- —RAM is only one cost: you also pay your model provider for every token the agent uses.
- —These numbers measure the harness, not how capable the agent is. A heavier harness may do more out of the box.
- —Versions change quickly; the date at the top of this post says when it was last checked.