runlanes
· LIVE · product
Observability for coding agents: what each run cost, whether it truly ran in parallel, and which files it actually touched. Published to npm.
Problem
Running six to eight coding agents at once, there was no way to see what any of them were doing. Token spend, real concurrency, and which files each had touched were all invisible, so a run could only be judged by its output, and an agent quietly working the wrong file looked identical to one that was not.
Intervention
It reads the transcripts the runner already wrote to disk, so there is nothing to instrument, no wrapper, and no account: and it works on runs that already finished. Vendor knowledge is confined to a source adapter, which is why six runners are supported rather than one. The three properties that matter are enforced by CI rather than promised in a README: the build fails if a dependency appears, fails if a network call is added, and the test suite fails if the default binding stops being localhost.
Result
- Six runners supported behind one adapter interface: Claude Code, Codex, Copilot CLI, Cursor, Gemini CLI and Kiro
- Token spend, tool calls and duration per run, summed from transcripts rather than self-reported
- A parallelism figure most tooling does not report: on the run that motivated it, peak concurrency was 4 but only 9% of elapsed time actually overlapped
- Shared-file graph whose edges are observed, two runs are linked because they opened the same file, not because a prompt said they would
- Zero dependencies, MIT, Node 18+, published from CI through OIDC trusted publishing, so npm records the commit and workflow that built the tarball
- 95 tests across Node 18, 20 and 22
Stack: Node, Zero dependencies, Source adapters, Transcript parsing, SVG, npm, GitHub Actions
https://www.npmjs.com/package/runlanes