Skip to main content

Benchmarks

Static code quality benchmarks compare Acolyte with eight current open-source terminal coding agents using source, dependency, test, and type-safety metrics.

For feature and architecture comparisons, see Comparison. Both documents use the same competitor set.

All metrics are extracted with scripts/benchmark.ts.

Methodology

  • Source lines = total lines in included source files, including code, comments, and blanks
  • code, comment, and blank line counts are reported separately; comment classification is based on leading comment markers
  • test files, known generated directories, and source files over 10k lines are excluded
  • metrics normalized per 1k source lines where applicable
  • dependencies are direct declarations detected in the included project manifests and shown as runtime + development; Go modules do not distinguish development dependencies
  • each project is measured from a fresh shallow clone of its origin’s default branch
  • installed dependencies are excluded, so an imported agent harness is not counted while a vendored or self-written one is; Kimchi imports the pi harness
  • snapshot revisions tie each result to the exact source measured
  • projects are ordered by language (TypeScript, Rust, Go), with Acolyte first and others alphabetical within each language

These are structural signals, not measures of model quality, runtime correctness, or task success. Repository-wide counts are especially difficult to compare when a project includes multiple clients, products, or bundled applications.

Closed systems

This methodology requires a comparable public source repository. Claude Code, Cursor, and GitHub Copilot are excluded from the source analysis.

Projects compared

ProjectRevisionLanguageSource linesCodeCommentsBlankFilesDependencies
Acolytee13d6e0de793TypeScript35,23830,5121,4003,32627912 + 6
Kimchi4d40b544fc6aTypeScript134,47699,80620,42814,24266525 + 19
Kodec7f6fccf7ec4TypeScript140,184121,2053,20815,7711,05957 + 46
OpenCode755ebdb94ee7TypeScript487,347439,9079,72037,7202,497219 + 107
Qwen Code4b5396c69a35TypeScript1,025,545787,967168,03369,5452,747150 + 129
Codex94311d447587Rust1,141,643979,31971,86690,4582,912343 + 93
Goosef87c4d73d186Rust253,997209,51717,13627,344492170 + 24
Grok Build9684fa3cdbf2Rust1,559,5801,208,983239,632110,9652,479338 + 80
Reasonixe6218fc1ddf2Go413,808339,97840,12533,7051,86655 + 0

Dependency surface area

Measures how much of a codebase depends on external packages.

MetricAcolyteKimchiKodeOpenCodeQwen Code
External imports / 1k LOC7.17.127.716.54.6
Runtime dependencies122557219150

TypeScript projects only.

Acolyte has the fewest runtime dependencies and lowest external-import density among the TypeScript projects except Qwen Code’s slightly lower import count.

Input validation density

Counts .parse(), .safeParse(), and .validate() call sites per 1k source lines. This measures validation patterns, not runtime path coverage.

MetricAcolyteKimchiKodeOpenCodeQwen Code
Parse and validation calls / 1k LOC3.11.10.70.40.6
.safeParse() calls / 1k1.30.00.20.00.0

TypeScript projects only.

Acolyte has the highest measured validation-call density in this TypeScript comparison.

TypeScript type safety signals

Per 1k source lines.

MetricAcolyteKimchiKodeOpenCodeQwen Code
as any0.00.40.50.80.1
: any annotations0.00.21.80.50.3
@ts-ignore / @ts-expect-error0.00.00.00.20.0
Lint ignores0.10.80.10.00.2
: unknown usage2.94.74.82.23.8

Acolyte has the lowest measured TypeScript escape-hatch density in this comparison. These counts do not establish correctness.

Language-specific type safety signals

Per 1k source lines.

MetricCodexGooseGrok BuildReasonix
unsafe (Rust)0.80.20.8
.unwrap() (Rust)2.818.416.8
.expect() (Rust)15.42.44.4
any / interface{} (Go)3.0
panic() (Go)0.1
nolint (Go)0.0

Test density

MetricAcolyteKimchiKodeOpenCodeQwen CodeCodexGooseGrok BuildReasonix
Test files2695332217342,099516514501,456
Test lines41,211164,28927,671176,4831,585,127354,98125,482170,125374,308
Ratio1.171.220.200.361.550.310.100.110.90

This ratio measures test volume, not executed coverage or test effectiveness.

Test types include:

  • unit (*.test.ts)
  • integration (*.int.test.ts)
  • TUI visual regression (*.tui.test.tsx)
  • performance (*.perf.test.ts)

Module size

MetricAcolyteKimchiKodeOpenCodeQwen CodeCodexGooseGrok BuildReasonix
Avg lines / file126202132195373392516629222
Files > 500 lines6 (2%)60 (9%)22 (2%)243 (10%)509 (19%)621 (21%)153 (31%)890 (36%)200 (11%)
Largest file1,0194,7591,7927,2209,6618,6246,2088,2128,435
Barrel / index files13834708786512088

Acolyte has the smallest average module size and one of the lowest large-file densities in this snapshot.

Error-handling patterns

Per 1k source lines.

MetricAcolyteKimchiKodeOpenCodeQwen Code
.safeParse() calls1.30.00.20.00.0
try { ... } blocks6.07.06.11.06.2
.catch() calls0.61.10.31.41.0

TypeScript projects only.

Acolyte has the highest .safeParse() call density among the TypeScript projects. The count is a proxy for validation structure, not proof that every runtime path is validated.

Key takeaways

At this snapshot, Acolyte has:

  • the lowest measured TypeScript escape-hatch density
  • the smallest average module size and one of the lowest large-file densities
  • the fewest runtime dependencies
  • the highest measured TypeScript validation-call density
  • a 1.17 test-to-source line ratio

These signals describe source structure and engineering patterns. They do not rank model quality or user-visible reliability.

Updated 28 August 2026.