rea.run

2026-10-12

Linux startup benchmarks: community snapshot from #1998

@CassieFox23 published How fast REA's server starts on Linux (discussion created 2026-10-12; last updated for 6.4.0 and main tip 13e03e943). This page paraphrases methodology and copies the published numbers — we do not invent benches. If you have not replayed locally, treat tables as community report, pending your reproduction.

Method (as stated by the author)

  • Host: Linux; timings are seconds from process start.
  • Warm-up run, then median of 5 timed runs; brackets show min–max where published.
  • Started server as node + package script (not the npx launch path) so Node version is certain.
  • No client config; no Ghidra/Hopper/IDA wired for the startup table.
  • Not run: macOS/Windows, cold disk cache, other Node lines, npx path.

Tool-list table (copied from #1998)

TargetToolsNodeTool list median (min–max)Init median
6.3.0139221.90 (1.88–1.91)1.68
6.3.0139241.59 (1.56–1.61)1.39
6.3.0139261.38 (1.37–1.42)1.21
6.4.0170222.16 (2.12–2.17)1.84
6.4.0170241.75 (1.72–1.80)1.48
6.4.0170261.55 (1.52–1.58)1.31
main 13e03e943170221.78 (1.76–1.80)1.47
main 13e03e943170241.47 (1.46–1.50)1.21
main 13e03e943170261.30 (1.28–1.33)1.06

main vs 6.4.0 on tool list (author’s derived columns)

Node6.4.0mainSavedFaster by
222.16 s1.78 s0.38 s17.8%
241.75 s1.47 s0.28 s16.0%
261.55 s1.30 s0.26 s16.5%

Interpretation from the discussion (paraphrase): 6.4.0 is slower than 6.3.0 on list by 0.17–0.26 s while listing 31 more tools (170 vs 139). Main tip is faster than 6.4.0 by 16–18% on list. Node 26 fastest / Node 22 slowest in every target. Reverse-order checks moved no tool-list median by more than 0.04 s.

First real job (Node 24 only) — copied

Seconds from process start to job reply; median of 5; job-alone in brackets (reply minus tool-list reply):

Job6.3.06.4.0main 13e03e943
Browser capture1.76 (0.49)1.89 (0.50)1.91 (0.71)
Script analysis3.35 (2.10)3.95 (2.51)3.63 (2.46)
Android app scanfailed2.03 (0.66)1.79 (0.64)
Ghidra overview7.49 (6.31)7.62 (6.30)7.45 (6.36)

Author notes: Playwright load moved from startup to first capture on main (#1691 context); first capture can consume the list saving. 6.3.0 Android failure message cited: artifact path collision res/2f.xml vs res/2F.xml. 6.4.0/main succeed on the same Coffee app file.

OSS fixtures named in #1998

JobFixture (as published)Notes
Script analysisStretchly 1.22.1 app/main.js (BSD-2-Clause)Whole app folder exceeded 10 MiB reply limit; one file + REA_MCP_MAX_RESPONSE_BYTES=268435456
Android scanCoffee 2.27 (coffee_47.apk, Apache-2.0)SHA-256 published in discussion
Ghidra overviewOwn 3-line C → ELF (t.c)SHA-256 published in discussion

How to rerun (appendix from discussion)

mkdir -p /tmp/rea-bench/6.4.0
npm install --no-save --prefix /tmp/rea-bench/6.4.0 [email protected]
# Author used a local mcp-time.mjs wrapper (1 warm-up + 5 timed runs).
# Prefer the scripts linked from discussion #1998 rather than inventing timers.

For main, author archived commit 13e03e943, npm ci && npm run build, then timed scripts/rea.mjs. Load gate example: start rows only if load average ≤ 2.0 (24-thread box mentioned).

Reading for operators

  1. More tools ≠ slower business jobs — Android scan gains in 6.4 even if list costs more.
  2. Prefer Node lines upstream supports (discussion used 22/24/26; README pulse cites 22.19+/24.11+/26+).
  3. Cross-link /docs/linux-fedora/#startup and /blog/rea-agents-6-4-0/.
  4. Do not paste commercial binaries into public benches.

Compliance

  • Cite @CassieFox23; do not invent rows.
  • OSS fixtures only in public write-ups.
  • Authorized/own targets when you extend benches — /compliance/.

Sources

Verification checklist before you cite these numbers

  1. Tool counts still 139 / 170 with a link to #1998?
  2. Warm-up + median of 5 stated (not a single magical run)?
  3. List latency separated from first-job latency?
  4. Fixtures limited to Stretchly / Coffee / own C as published?
  5. “Not run” caveats listed (macOS/Windows/cold cache/npx)?
  6. “Pending your reproduction” disclaimer present when unreproduced?

Treat this page as a citation layer: when sharing externally, keep the discussion URL and commit 13e03e943. If your replay differs, publish your logs and update via discussion/issue — do not silently rewrite someone else’s table.

What we refuse to invent

  • Absolute rankings of macOS vs Linux (not in #1998 startup table).
  • npx-path timings (author explicitly did not run them for the main table).
  • Commercial APK benches.
  • Per-commit micro-benchmarks beyond what #1998 attributes to #1691 qualitatively.

If a screenshot on social media shows different seconds, ask for Node version, commit/tag, warm cache vs cold, and load average — the discussion already shows the same box can print 1.75 s vs 1.38 s for 6.4.0 list depending on pass load.