Intercept
The plan stops before the code.
When your agent finishes planning, Redline catches the plan and holds the session open while you read.
Redline Meta-Harness
Catch the mistake in the plan, not the pull request. Redline intercepts the plan from your coding agent, opens it as a document with tracked changes and line comments, and holds the agent until you approve.

How it works
The round trip between your coding agent and the document, one step per scroll.
Intercept
When your agent finishes planning, Redline catches the plan and holds the session open while you read.
Redline
Edit the text and every change is tracked. Pin questions and feedback to the line they’re about.
Send
Questions come back answered with the plan unchanged. Edits come back as a new revision.
Resolve
Each comment returns with a resolution to accept or reopen. Approve when it’s right, and build.
Protect the API from bursts without breaking well-behaved clients.
Count requests per IP address, in a one-minute sliding window.
Over the limit, return 429 with a Retry-After header.
user ~ % claude› Plan rate limiting for the public API── plan intercepted by redline ──Discussion
Click Discuss on any comment and Redline forks the session that wrote the plan. The fork knows everything the planner knew — the code it read, the reasons it had — and talks it through with you while the original agent waits, untouched.
Claude Code and Codex fork their own sessions; Cursor and Antigravity plans get a Claude sidecar seeded with the plan. Forks are read-only — they never edit files or touch the held session.
Teams behind one shared key will hit this fast. Per-seat limits?
One bucket per seat, with the key’s bucket as a ceiling — a heavy user can’t starve the rest of the team, and the key still has a hard limit.
| per key | per seat + ceiling | |
|---|---|---|
| fairness | one seat can starve the team | each seat has its own budget |
| redis keys | 1 per key | 1 per seat + 1 per key |
Grounded in src/middleware/rateLimit.ts and v1 of your plan.
I’d go per seat with the key as a ceiling — otherwise one noisy seat still takes the whole team down. The catch is Redis: that’s a key per seat. Worth it, I think. Want the key layout next?
The browser
Open your dev server in Redline’s browser and click through it like a tester. Highlight anything, say what’s wrong, and it lands in the Cart — filed under the page you were on, with a pointer to the exact component. Twenty pages, forty pages: the list keeps the map. Then open it in the Prompt Drafter, add the context only you have, and send it.
The location is read off the element you highlighted — “Apply button”, “Job card title” — and a background agent sharpens the name. You only write the problem.
Notes group by page in the order you visited, and coming back to a page adds to its section instead of starting another.
Every tab has its own agent that reads and drives the page. Ask it about any note and it can read the repo for the answer.
The workspace
localhost:3000Stoplocalhost:8080Stoplocalhost:4321Run ▶localhost:5173Run ▶Localhost finds the servers you have running and the project each one came from. Stop one, open it, or bring back a recent one with a click — no cd, no npm run dev.
Real shells, side by side — up to fourteen tiles — with the file tree and the plan next to them.
~/web % claude --resume 4f2a…2 unsent comments carried over
Closed the terminal or restarted the Mac? Restore the plan session and Redline resumes the agent, re-opens the plan and carries your unsent comments onto it.
Browse each revision of a plan, restore an earlier one, and export any of them.
- const key = req.ip+ const key = req.apiKey ?? req.ipAI pre-review · consider per-seat keysAnnotate the diff line by line, get an AI pre-review as draft comments, and commit or push to any branch without switching to it.
Every prompt and decision is kept by Polis and searchable by your agents. Polis Memory System
Also: native runs on Claude Code or Codex, voice and on-device dictation, missions across browser tabs, and one chat that follows you across every surface.
The structure
In a chat, a plan is a message you answer and scroll past. In Redline it has an identity, a state, a history, and an approval at the end.
Identity
Each block carries a stable id that survives every edit, revision and export. Comments stick to the paragraph, not a position — rewrite the section in v7 and your note from v3 is still on it.
State
A comment moves from draft to submitted to resolved to accepted, or back to reopened. The agent owes a resolution for each one, and only you accept it.
History
v1 through vN, each one restorable and exportable as Markdown or DOCX. The document isn’t the latest message about the plan. It is the plan, and how it got there.
Approval
Nothing proceeds until you approve. Then the held agent builds from the approved plan — now, later, or with a team of agents.
The protocol
Redline isn’t another coding agent. It sits in front of the one you already use, through that agent’s own hooks, and holds it while you review. Three modes set how firmly.
A PreToolUse hook on ExitPlanMode sends the plan to Redline’s local daemon and holds the session.
A Stop hook and a plan contract catch the proposed plan. Approval queues the build back in Codex.
Prompt, response and stop hooks catch the plan; your revision returns as the agent’s next message.
Preview. A held Stop hook reads the latest plan from the conversation transcript.
Every plan blocks and waits for your review.
A decision window with a countdown: claim it to review, or let it approve itself.
A kill switch. Plans pass straight through and nothing is captured.
A held plan waits up to twelve hours for your review, with the agent’s session open the whole time.
Send only questions and the plan comes back answered and unchanged. Send anything else and it comes back as a new revision.
The next revision carries a resolution for each comment. Accept it, or reopen it with a note for the next round.
The philosophy
Not a message, not a prompt, not a stage on the way to the real artifact. Builds, reviews and the memory of what you decided are all downstream of it.
“In agent-driven work, the plan document is the unit of work.”
By the time an agent has written four hundred lines, every decision that shaped them was made in the plan. That’s where a minute of your review is worth the most.
“The leverage moved upstream. The tooling stayed where it was.”
When the plan is right, what follows is mostly execution. When it’s wrong, no amount of diff review saves it — the decision is already load-bearing.
“Get the document right and most of what follows is bookkeeping.”
Every comment gets a resolution, and you decide whether it’s accepted. Nothing closes itself.
“Nothing is auto-accepted.”
A plan lives in one internal model, and every file format — Markdown, DOCX — is an adapter at its edge, not the thing itself.
“The internal document model is the product.”
The daemon listens on localhost only. The network is reached only when you act: browsing, your agents’ model calls, optional cloud voices.
“There is no analytics, crash-reporting, or licensing phone-home.”
Quoted lines are from the Redline thesis and documentation.
Built by a lawyer who wanted to mark up plans the way contracts get marked up: tracked changes, margin comments, and nothing accepted until it’s resolved.
An early release for macOS, built from source. Free and open source, local-first, with no account and no telemetry.
macOS 11+ · Node.js 22.12+ (or 20.19+) · Rust · Xcode Command Line Tools · CMake. Keep Claude Code installed for the full workspace.
Full setup guidegit clone https://github.com/sersiousSenpai/redline.git
cd redline
npm ci
npm run redlineBuilds, installs, and opens Redline on your Mac.