PRD — Local-agent vertical PoC (code reviewer on a Mac)
Goal
Prove the local-only specialist agent thesis on one concrete vertical: a code reviewer that runs entirely on the user’s Mac on a tinygpt fine-tuned 12B model, with zero cloud dependency, and beats (or matches within ε) a frontier-cloud baseline on a fixed code-review benchmark.
If this PoC clears the gate, the wedge — “agents Eve can’t reach because they’re cloud-native” — becomes a real product surface. If it doesn’t, we learn what the gap is before committing more roadmap area.
Why now (post-Eve)
Vercel’s Eve (June 2026) validates the agent-platform thesis at the infra layer, but Eve and all its cloud-native peers (Cursor, Replit Agent, Devin, Cognition) burn frontier-API tokens per invocation. None serves the buyer who needs:
- Zero data leaves the machine (regulated industries: legal, healthcare, defense, finance, classified codebases).
- Zero marginal cost after training (high-volume internal use: large-scale code review on monorepos, batch refactor across services).
- Offline operation (air-gapped environments, intermittent connectivity).
tinygpt already owns ~70% of the stack for this: QLoRA on 4-14B
(tinygpt sft), serve (tinygpt serve with B26 deferred tools), trace
recorder (B22), trace-to-training (B29), composite reward (B28), eval
gate (B32). What’s missing is one shipped vertical that proves the
loop runs.
See [[feedback_tinygpt_north_star]] — formula is (speed × accuracy) / cost. Cost = 0 dominates as long as accuracy is in the ballpark. This PoC is the experiment that measures the ballpark.
Scope — in
Phase 1 — baseline + benchmark (1 week)
- Pick the eval: SWE-bench-Verified code-review subset, or a
derived code-review-specific harness over the same repos. Choose
based on whether SWE-bench’s review signal is actually informative
(it’s primarily a fix-the-bug task). Fallback: build a derived
benchmark from
princeton-nlp/SWE-bench_Verifiedrows where the task is “given diff, predict whether the PR was approved + flag the issues the reviewer flagged.” - Frontier baseline: Claude Opus 4.7 + gemini-3 + gpt-oss-120b on the same eval. Three frontier numbers establish the ceiling.
- Open-baseline: gemma-3-12b-it-qat-4bit (current champion per [[project_drilldown_2026_06_12]]) zero-shot. This is the lower bar the PoC must beat after fine-tuning.
Phase 2 — specialist (1-2 weeks)
- Training data: PR-review pairs from public repos (the-stack-smol’s
cousin: PR + review-comment + accept/reject signal from GitHub Archive
via
B22style trajectory recording). - Base: Gemma-3-12B-it-qat-4bit or Qwen3-Coder-14B (decision deferred to Phase 1 once we see baseline numbers).
- Approach: QLoRA + composite reward (B28 dims: identifies-bug,
identifies-style, doesn’t-hallucinate, format-compliant). Trained via
tinygpt sftthen DPO on (preferred-review, dispreferred-review) pairs. - Eval-gate (B32) blocks ship until the specialist matches the open baseline within ε on the held-out review eval AND beats it on the unhappy-path slice (PRs the reviewer rejected — the harder signal).
Phase 3 — agent runtime (1 week)
- Thin agent harness:
tinygpt agentsubcommand, with the verb model derived from B26’s deferred-tools contract. Tools:read_file,list_diff,comment_inline,summarize_review. A 3-hop loop with composite-reward in-loop self-critique. - No new infra — reuse
tinygpt servefor the runtime, B26 for the tool surface, B22 for trace recording (which then feeds the next training iteration via B29). - Optional: VSCode extension or git-pre-push hook for distribution.
Phase 4 — the loop closes (ongoing)
- Every real user review run → B22 trace → B29 trains the next iteration.
- B32 gate blocks regressions; B30 keeps the training-mix balanced.
- This is the self-improving part: the more reviews users do, the better the model gets, all on their Mac.
Scope — out
- Multi-agent orchestration — that’s Eve’s pitch; we don’t compete.
- TypeScript SDK / cloud deployment — Vercel’s home turf.
- Slack/Discord channels — Eve has them; not a local-agent moat.
- Other verticals (legal review, SQL agent, refactor agent) — V2 after this PoC validates the loop.
Acceptance criteria
The PoC ships if all of these clear:
- Frontier baseline number recorded on the chosen eval (Phase 1).
- Open-baseline (zero-shot Gemma-3-12B) number recorded.
- tinygpt-specialist beats open-baseline by ≥ 5pp on accuracy (matches the [[feedback_tinygpt_north_star]] 5%/2-weeks bar).
- Specialist runs end-to-end on M5 Pro / 48 GB at ≥ 15 tok/s decode (informal target — the bar is “feels responsive”).
- One real codebase (TinyGPT itself? Or a public OSS repo) has a PR review generated by the agent that a human reviewer rates ≥ 3/5 on usefulness.
- Trace recording (B22) actually fires per agent step; the loop is provably closeable.
The kill criterion (be honest about the negative result)
If, after 4 weeks of focused work, the specialist can’t beat the zero-shot open baseline by 5pp on the chosen eval even on the slice we picked for friendliness, the local-only vertical thesis is weakened enough to deprioritize. Either:
- The QLoRA-on-12B / distilled specialist loop genuinely doesn’t move the needle vs zero-shot strong open models at our compute budget.
- We picked the wrong vertical and code review is too judgment-heavy.
- Frontier pulled too far ahead in 2026-H1 for a 12B specialist to matter.
In any of those cases, the answer isn’t “build harder” — it’s “publish the negative result and keep tinygpt narrow as a model factory, not an agent company.” Per [[feedback_research_first_doctrine]].
Reference shape
| Phase | Wall-clock | Compute cost | Likely blocker |
|---|---|---|---|
| 1 — baseline + benchmark | ~1 week | $0 (local) + frontier API tokens for ceiling | eval choice |
| 2 — specialist training | ~2 weeks | M5 Pro time, sequential per [[project_parallel_training_lesson]] | training-data scarcity |
| 3 — agent runtime | ~1 week | $0 | tool-call reliability on 12B |
| 4 — self-improving loop | ongoing | $0 | real-user uptake |
Open questions
- Should the agent ship Pace-style as a Mac app or CLI-first? Mac app gives distribution, CLI is faster to ship and matches the early-adopter buyer (developers).
- License story for training data. Hermes-FC + Apache-licensed PR corpora; do not let an APIGen-MT-style CC-BY-NC license through per [[project_specialists_research_2026_06_09]].
- Distribution. If the PoC succeeds, is it a public model in the gallery (B31), a paid Pace-style app, an OSS release with sponsorship arm, or all three?
What this PRD is NOT
A commitment to ship. It’s a kill-or-validate experiment. If the 4-week timebox runs out without clearing the bar, B35 is closed and the learning is published as a session retrospective per the user’s documentation-as-first-class doctrine.