Agent harness benchmarks
What each agent harness costs you before the model does any work: how long until you can type, how much memory it holds while it waits, and how much disk it needs. Same machine, fresh install, no login, every run interleaved across tools.
- agentty47 ms
- jcode56 ms1.2×
- Codex CLI402 ms8.6×
- Claude Code635 ms14×
- Aider1.0 s21×
- Gemini CLI3.0 s65×
- opencode5.2 s110×
- agentty21 MB
- Aider74 MB3.5×
- jcode106 MB5.0×
- Claude Code152 MB7.2×
- Codex CLI152 MB7.2×
- Gemini CLI441 MB21×
- opencode651 MB31×
- agentty23 MB
- jcode163 MB7.1×
- Gemini CLI197 MB8.6×
- Claude Code325 MB14×
- opencode409 MB18×
- Codex CLI536 MB23×
- Aider653 MB28×
- agentty2.6 ms
- Claude Code14 ms5.5×
- jcode17 ms6.6×
- Codex CLI77 ms30×
- opencode777 ms299×
- Aider1.1 s412×
- Gemini CLI2.6 s995×
median of 10 launches · same machine · fresh install, no login · method & all numbers
All numbers
| tool | version | ready to type | idle memory | disk | --version |
|---|---|---|---|---|---|
| agentty0.9.51 | 0.9.51 | 47.0 ms 26–74 ms | 21.2 MB | 23 MB | 2.6 ms 2.3–4.2 ms |
| Claude Code2.1.319 | 2.1.319 | 634.8 ms 594–895 ms | 151.6 MB | 324.7 MB | 14.4 ms 13–26 ms |
| Codex CLI0.167.0 | 0.167.0 | 401.9 ms 375–452 ms | 151.7 MB | 536.2 MB incl. 99 MB node | 76.9 ms 70–175 ms |
| Gemini CLI0.67.0 | 0.67.0 | 3.04 s 2.94–4.48 s | 440.6 MB | 196.9 MB incl. 99 MB node | 2.59 s 2.45–4.34 s |
| opencode1.19.5 | 1.19.5 | 5.19 s 4.93–6.84 s | 651 MB | 408.9 MB | 776.7 ms 0.74–1.37 s |
| jcodev0.99.1 | v0.99.1 | 55.6 ms 36–60 ms | 105.8 MB | 163.4 MB | 17.2 ms 16–37 ms |
| Aider0.86.2 | 0.86.2 | 1.00 s 0.95–1.04 s | 73.7 MB | 653 MB | 1.07 s 1.04–1.67 s |
Median, with the 10th–90th percentile range under it.
Method
- Ready to type: launch the interactive UI in a real pseudo-terminal and time until its first prompt is fully on screen, read from the rendered terminal (not raw output). Each tool first completes its one-time setup, so this is the launch a returning user sees. 10 timed launches.
- Idle memory: resident memory of the whole process tree, 2 s after the prompt appears. jcode runs its UI as a client of a background server that it starts on first launch and leaves running; that server is counted in its memory, and it is already running for the timed launches, as it would be for a returning user.
- Disk: everything the tool needs, as installed by its official method, including the Node.js runtime when it needs one. Aider's figure includes the Python 3.12 its installer sets up.
--versionstartup: process start to exit, 3 warm-ups then 30 timed runs.- Fairness: a fresh, empty home directory per tool; no accounts, keys or network needed; runs interleaved round-robin so background load on the machine lands on every tool equally. Network access doesn't change the results.
- Close results: agentty and jcode launch within the same range (see the brackets in the table); treat that as a tie, not a win.
- Not measured: how well each agent solves tasks. That depends mostly on the model, and every harness here can use strong ones.
Machine
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz (4 threads), 16 GB RAM, Linux 7.2.9-zen1-1-zen. A modest laptop-class CPU on purpose: startup costs that hide on a fast desktop show up here.
Reproduce it
The script is scripts/bench-agents.mjs. Install each tool by its official method, then run it; it writes the JSON this page is built from.
sh
node scripts/bench-agents.mjs ~/bench-agents