early access
macOS 12+ on apple silicon · or use hosted
how it works
One feature, end to end: from the prompt you give your agent to the canvas on the merged PR.
01 · your agent
Prompt Claude, Codex or Cursor the way you already do. Narrate plugs in over MCP.
02 · the proposal
View proposed changes as an interactive map, without the noise.
03 · your call
you → claude
This is way over-engineered. … After publishing the canvas, let’s just make a best-effort POST to git host for the comment. … If the comment fails, so be it. …
04 · the result
The PR lands as a canvas too. reconcile calls _publish, then _comment_canvas_link, and that’s the whole change.
After we receive the GitHub webhook and publish the PR canvas, I want to comment back a URL onto the PR itself for easy access. Please generate a Canvas using the narrate MCP to represent the spec. Make no mistakes.
Write.docs/pr-canvas-link-comment.md
narrate · canvas_createIDE-138: Canvas link comment on GitHub
narrate · canvas_edit18 proposed symbols
The spec is written up and drawn as a canvas. _publish writes a PullRequestCanvasComment outbox row in the same transaction. A new controller posts it under a row lock, and the import sweep retries anything still PENDING.
→ app.withnarrate.dev/canvas/34139e50
+18 proposed symbolsnew table + migrationoutbox write in _publishrow lockretry sweep
−15 of 18 cutno new table, no outbox, no retryone best-effort comment after _publish
+3 new~3 changedno new model, no migrationa failed comment is logged and dropped
why narrate
01 · confidence
Focus on the high-risk pieces you care about, and skip the noise.
02 · judgement
Make the calls on UX, maintainability, and extensibility, with business context AI doesn’t have.
03 · velocity
Don’t get burnt out by endless walls of text.
get started
desktop · local only
Point the app at a repo on disk. Narrate indexes it locally and your agents talk over a local MCP. Your code never leaves your machine.
macOS 12 or later, Apple silicon. Other systems coming soon.
cloud · hosted by narrate
Connect GitHub and we index each pull request on our servers, then comment with a canvas your whole team can open.
faq
Python today, with TypeScript coming soon. If your repo is neither, please join the waitlist to let us know what to integrate next!
Narrate deterministically indexes your code using LSPs, without LLM involvement. Your agents can use Narrate as a shared canvas for you to collaborate on.
The desktop app runs entirely on your Mac. It indexes repositories already on disk, your agents connect to it over a local MCP, and there’s no GitHub App to approve. The cloud is hosted by Narrate: connect GitHub, and we index each pull request on our servers and comment with a canvas your whole team can open. The two are separate today, so canvases don’t move between them.
On desktop, your code, indexes and canvases never leave your Mac. In the cloud, we temporarily check out your code for indexing but do not retain your source code beyond metadata (such as symbols and relationships). Either way, we do not sell or use your data to train any models.
Neither. It’s where you go to understand something; the approving still happens where it happens today.
languages
Narrate maps Python today. Tell us what you write. We'll email you when it lands, along with the occasional product update.
Narrate canvas for this PR: app.withnarrate.dev/canvas/62142081
It follows the latest push.