The benchmark is deliberately ordinary.
Almedra Timepieces is a one-page small-business website built with React and Vite. It is the kind of codebase people actually hand to coding agents: real layout, real data, real styling, and a feature request that requires state, UI, and restraint.
The task was to add a two-watch comparison feature to the collection section. Every agent received the same prompt, the same clean repo, and the same GLM 5.2 model via OpenRouter routed through StreamLake.
Previously
This is the second time this benchmark has been run. The original benchmark used GLM 5.1.
See the original benchmark ↗The task stayed the same. The model changed to GLM 5.2.
OpenRouter recorded the calls, tokens, cache reads, cost, and total time for each run.
The Result
We ran each benchmark three times, threw out the worst result, and averaged the remaining two.
While the field compressed, the spread is still obvious.
Lucena posted the lowest billed cost and the smallest token footprint in the Almedra token-efficiency benchmark task using GLM 5.2.
Pi remained cheap, but stopped at build errors in all three runs.
The heavier harnesses all spent materially more tokens, even with aggressive caching. One cache miss, and those costs climb fast.
| Agent | Total Cost | Total Tokens | Model Calls | Total Time | Status |
|---|---|---|---|---|---|
| Lucena Coderlowest cost / fewest tokens | $0.011665 | 34,102 | 8 | <3 mins | Pass |
| Picheap, but failed build | $0.018592 | 117,002 | 12 | <3 mins | Build Error |
| OpenCode | $0.040520 | 317,304 | 19 | <3 mins | Pass |
| Copilot | $0.045740 | 395,334 | 18 | <3 mins | Pass |
| Continue | $0.049076 | 415,091 | 28 | <3 mins | Pass |
| Kilo Code | $0.063476 | 540,075 | 29 | <4 mins | Pass |
Lucena finished at $0.011665 and used 34,102 total tokens across 8 model calls, the lowest billed cost and the lowest token count in the GLM 5.2 field shown here.
The Prompt
The prompt asked each agent to add the same practical website feature:
Add a two-watch comparison feature to the collection.
Requirements:
- Each watch in the collection has a compare control.
- Users can select up to two watches.
- If a third watch is selected, replace the oldest selected watch.
- When two watches are selected, show a comparison panel at the bottom of the collection section.
- The panel compares movement, case size, power reserve, water resistance, and price.
- The panel includes both selected watch names.
- Include a `Clear comparison` control.
- Use the existing `timepieces` data.
- Keep the existing editorial visual direction without adding image cards.
- Do not change unrelated sections of the page.
What We Verified
Correctness came first. Cost only mattered after the run actually worked.
- Lucena, OpenCode, Kilo Code, and Continue all produced a buildable result in the GLM 5.2 field we captured.
- Pi stopped at build errors on the GLM 5.2 reruns.
- The verifier selected Azahar 1874 and Turia Moonphase, then selected Serra GMT.
- The third selection had to replace the oldest selected watch.
- The panel had to include movement, case size, power reserve, water resistance, price, both watch names, and a clear control.
The Ledger
The usage table below comes from OpenRouter logs for GLM 5.2 runs recorded for this update.
| Agent | Input | Output | Cached | Fresh | Total Cost |
|---|---|---|---|---|---|
| Lucena | 28.0k | 6.1k | 22.5k | 5.5k | $0.011665 |
| Pi | 111.1k | 5.8k | 100.9k | 10.1k | $0.018592 |
| OpenCode | 309.9k | 7.3k | 282.0k | 27.9k | $0.040520 |
| Copilot | 390.2k | 5.1k | 355.6k | 34.5k | $0.045740 |
| Continue | 410.5k | 4.5k | 368.0k | 42.4k | $0.049076 |
| Kilo Code | 531.5k | 8.5k | 486.9k | 44.6k | $0.063476 |
What This Test Tells Us
GLM 5.2 tightened the field, but it did not erase the working-set differences between harnesses.
Lucena led this update on both cost and total tokens. That is the headline result.
Pi is still the obvious pressure point because it stayed relatively cheap, but the build did not clear. OpenCode, Continue, and Kilo Code all shipped usable results in the capture we used here, but they did it with much larger working sets.
Cache helps. Sending less unnecessary context helps more.
Time to Completion
The time column comes from the OpenRouter session log view we used for this update. In that view, session windows and request timestamps are minute-granular, so the times shown here are approximate rather than second-precise.
That still gives every agent the same provider-side clock. Local CLIs can add startup time, terminal rendering, package resolution, and human paste flow around the run; OpenRouter records the part every agent had to buy from the provider.
Run The Harness
The benchmark repo contains the clean Almedra fixture and the exact prompt used for this run. Open the fixture, run the prompt with another coding agent, then compare the OpenRouter usage.
Benchmark Repo
Clean app workspace, one prompt file, and a reproducible starting point for coding-agent efficiency tests.
View the Benchmark Repo ↗