How whodunit compares
| whodunit | Agent-nativeโ | Bilanc | Span | Swarmia | LinearB | Jellyfish | |
|---|---|---|---|---|---|---|---|
| Identifies which code an AI wrote | โ | Claude only | โ | โ | โ | โ | โ |
| Per line | โ | โ | โ | โ | โ | โ | โ |
| Per pull request | โ | Claude only | โ | โ | โ | โ | โ |
| Publishes how attribution works | โ | โ | โ | โ | โ | โ | โ |
| Works with no vendor plan | โ | โ | โ | โ | โ | โ | โ |
| Self-hosted | โ | โ | โ option | โ | โ | โ | โ |
| Open source | โ | โ | CLI only | โ | โ | โ | โ |
| Never stores prompt text | โ | โ | โ local only | โ | โ | โ | โ |
| Numbers carry their denominator | โ | โ | โ | โ | โ | โ | โ |
| DORA delivery metrics | โ via DevLake | โ | Partly | โ | โ | โ | โ |
| Team-level analysis | โ | โ | โ | โ | โ | โ | โ |
| Org-wide coverage with no rollout | โ | โ | โ | โ | โ | โ | โ |
| Seat and licence accounting | Partly via DevLake | โ | โ | โ | โ | โ | โ |
| Developer-experience survey | โ | โ | โ | โ | โ | โ | โ |
| Benchmarks you against other companies | โ by design | โ | โ | โ | โ | โ | โ |
| Raw data you can compute your own metrics from | โ raw SQL; MCP in beta | โ | โ SQL + MCP | โ | API | API | API |
| Publishes its own productivity claim | โ by design | โ | โ | โ | โ by design | โ | โ |
| Zero-setup | โ install, instrument, host | โ | โ | โ | โ | โ | โ |
| Agents covered | 3 + 2 by trailer | 1 each | 5 (3 via CLI) | IDE-level | 4 + custom | 5 | 11 |
| Price (vendor pages, 2026-09-17) | Free | Included in the plan | $25/eng/mo | ~$24/dev/mo | โฌ20โ39/dev/mo | ~$29โ59+/contributor/mo | ~$36k/yr (Vendr) |
โ What Claude Code, Codex and Antigravity report about themselves, to admins on a team or enterprise plan. Anthropic calls its own attribution a conservative undercount. Each sees only its own agent, and the answer lives in a console you lose access to when the subscription lapses โ whodunit's lives in the commit message.
Rows marked via DevLake come from the
Apache DevLake database whodunit publishes
into, not from whodunit itself โ DORA from DevLake's own delivery data, and
Copilot seat data from its
gh-copilot plugin,
which needs an enterprise token.
Benchmarking against other companies needs a corpus of many organisations' data held centrally โ the posture whodunit exists not to have. That โ is a consequence of the privacy design, not a missing feature.
The two published productivity claims point in opposite directions โ Jellyfish +113% PRs per engineer, โ24% cycle time (Aug 2025, 500+ companies), LinearB the inverse โ and neither publishes confidence intervals or confounder controls. whodunit models cost (The investment case) but won't collapse it into one number, because what counts as productivity is yours to define.
How each one decidesโ
| Tool | Mechanism | Nature |
|---|---|---|
| whodunit | Hashes each added line in the staged diff, intersects against the agent's own produced-line hashes | A record |
| Agent-native | Claude Code matches added lines in merged PRs against its own session output; Codex and Antigravity attribute nothing | A record, Claude only |
| Bilanc | An on-device open-source CLI records the session; an LLM then reads the merged PR and assigns authorship | A record at capture, an inference at attribution |
| Span | A classifier (span-detect-1) trained on code style, over 700โ3,000 character chunks across six languages โ 95% accuracy at 3,000, degrading below 500 | An inference |
| Swarmia | Commit trailers, co-author lines, PR labels, a 24-hour heuristic | Metadata |
| LinearB | The assistant vendor's own usage API | Vendor telemetry |
| Jellyfish | "Git, planning, and workflow data" โ undisclosed | Correlation |
Only the first four attempt to determine which code an AI wrote โ and the agent-native one only for Claude. The rest determine which developers had a tool active, which cannot tell heavy use on one PR from an idle licence.