Prime Agent Deep-Dive Report
Subject: github.com/PrimeIntellect-ai/prime-agent · v0.9.1 (2026-09-01)
Audit date: 2026-09-02 · Method: local static code analysis + official docs review + tracing three source papers + community cross-checking
Key points
- **It isn't 'based on pi' — it *is* pi. The four sub-packages publish under pi's original npm names (
@earendil-works/pi-agent-core,pi-ai,pi-coding-agent,pi-tui), all versioned 0.9.1 in lockstep. The LICENSE carries dual copyright:Copyright (c) 2025 Mario ZechnerandCopyright (c) 2026 Prime Intellect— the legal signature of a fork. - Commit history confirms the lineage. PR #50 (
clean up legacy pi artifacts, 2026-05-20) and PR #75 (clean up prime agent branding, 2026-05-28) show an in-place brand migration. The August 5 public launch followed 4,473+ commits. Lineage: Mario Zechner (badlogic, libGDX author) → Earendil (co-founded by Armin Ronacher) → Prime Intellect fork. - An open question: the four
@earendil-workspackages exist on npm at matching versions, but theearendil-works/piGitHub repo returned 404 at audit time. The upstream source line is unverifiable (flagged as uncertain), though Prime Agent's monorepo itself contains the sources, so auditability of the code is intact. - The headline 95.5% on ARC-AGI-3 is misleading.** It was measured on the *public demo set* (25 environments / 183 tasks), which four teams had already nearly saturated a month earlier: Tycho 100.00, NVIDIA AVO 100, [schema] 98.98, PRO-LONG 97.4 — putting Prime Agent's 95.5% mid-pack on that subset. The verified historical high on semi-private/private splits is 7.78%, and the paper's '30% → 95.5%' narrative compares a baseline from one split with a result from another.
- No independent third-party replication exists as of the audit date, though Prime Intellect did disclose reward hacking, limitations, and reliance on competitors' official numbers.
coding-agentalone accounts for 138,166 lines (~88% of implementation code); the genuinely new RLM/CH logic is comparatively small — a hint at how much predates the Prime Agent brand.- Community complaints about giant files were verified as accurate, and contribution structure is highly concentrated.
- One caveat flagged in the report: whether the
earendil-works/piupstream repo becoming inaccessible affects long-term auditability (mitigated by the vendored sources). - RLM originates from MIT work with an honest failure record — a real idea, not marketing.
- Continual Harness is an elegant formalization whose own paper admits failure modes.
- nanoGPT speedrun is cited as a repeatedly marketed case that its own paper tempers.
Technical core: two abstractions, one REPL
RLM: context as a variable, sub-agents as function calls
Instead of a suite of JSON-schema tools (read_file, bash, …), Prime Agent gives the model a single tool: a persistent Python kernel (ipython). File operations, command execution, skills, and sub-agent spawning all happen via Python, so data is processed in place rather than being read into context token-by-token.
Sub-agents are spawned via await rlm(...), which returns a handle immediately at admission — it does not wait for the result. Children run full agent loops in separate processes, reply asynchronously via agent_message.send(...), and stay alive after finishing, retaining kernel and context. Messaging is restricted to the nuclear family (parent, siblings, children).
Recursion depth verified in source. Amid community dispute (Peter Wang claimed depth 1; co-author Alex L. Zhang was unsure), static analysis of agent-session.ts (lines 1595–1604) shows a hard-coded default of 2 (root → child → grandchild). The suspicious 1 is an unreachable fallback in parseDepth. A child's observed RLM_MAX_DEPTH env var (line 9351) reflects the parent's resolved value, explaining the disagreement. Notably, there is no TUI indicator of current depth — an observability gap even the paper's author tripped over.
Continual Harness: state as CR(U)D
Harness state is a quadruple H = (ρ, G, K, M) = (prompt, sub-agents, skills, memory), sharing one CRUD interface (rlm.harness.create_memory(...), etc.), stored as harness_state.json per session or in ~/.prime/agent/harness/ for global entries. The store watches file mtimes for external-change reload — an unusually careful concurrency detail.
The /refine self-improvement pipeline reads the agent's trajectory, makes a minimal edit (one prompt note/memory/skill/subagent spec), logs trigger and outcome, and runs in two stages. Hard rules: the base system prompt is immutable, every refinement is rollbackable by ID, and changes default to session-local.
Reality check: /refine does not rewrite the system prompt — it edits supplementary context entries (like sticky notes, not company policy). And in v0.9.1 the mechanism is thinly wired: orch.md (1,183 lines) mentions refine in only 4 lines; the REPL exposes only ipython and bash tools; official examples contain zero refine or harness usage demos. The data structures are solid; the closed self-improvement loop is not yet operational. The threejs demo's 4 harness writes are delimiter-free and schema-less — consistent with the CH paper's own finding that structured schemas hurt performance.
Engineering reality under 19,200 stars
Paper provenance
Practical guidance
Worth using when: long-horizon tasks with heavy file/data exploration where context bloat dominates; you want auditable, REPL-mediated agent work; you can read TypeScript and accept v0.9.x maturity.
Avoid when: you need proven, independently benchmarked performance claims; you require mature self-improvement loops out of the box; you depend on a publicly maintained upstream (pi).
Before adoption: (1) discount all benchmark numbers, especially ARC-AGI-3; (2) treat /refine as a framework you must wire yourself, not a working mechanism; (3) check recursion depth expectations explicitly — defaults are 2, but env/settings inheritance chains can change it invisibly.
Verdict: Prime Agent is solid engineering with a compelling paradigm and an over-driven narrative. Read the code, follow the paradigm — but discount the numbers.
Audit methodology note
Findings rest on first-hand static analysis of the local repository (v0.9.1), full reading of official documentation, tracing of three source papers, and direct verification of community claims. Unverifiable items (the fate of the earendil-works/pi repo) are explicitly flagged rather than asserted.