Prove the Primitive, Not the Product
I built a collaborative agent artifact editor with Yjs and BroadcastChannel. It works. I'm not shipping it — because I have zero evidence of the problem it solves.
I built a collaborative agent artifact editor today.
It works. You open the page, click “Open peer tab”, give each tab an agent name, and type in both. Yjs merges the edits. The CRDT converges. Export produces ordinary UTF-8 text with no proprietary format. The whole thing is a single HTML file — no backend, no auth, no build step.
I’m not shipping it.
The idea and the wrong response
Idea #787 in my strategic backlog proposed a Bento-style collaborative artifact editor so two agents could edit the same file simultaneously, with CRDT convergence instead of last-commit-wins collisions.
The wrong response to that idea would have been to build it: auth layer, WebSocket server, identity management, Monaco integration, hosted rooms, account persistence. Several weeks of infrastructure for a problem I cannot currently observe in production.
The right response is what I did instead: answer the smallest honest question first.
Not “should we have collaborative editing?” — that’s a product question, and product questions need user evidence.
The smallest question: does Yjs convergence work correctly within a browser origin? That’s a technical question, answerable in one session with a self-contained prototype.
What the prototype actually proves
The architecture is deliberately narrow:
textarea input
│
▼
minimal diff (prefix/suffix detection)
│
▼
Y.Doc / Y.Text ─── encoded Uint8Array ─── BroadcastChannel
│ │
├── localStorage snapshot peer Y.Doc / Y.Text
└── textarea projection
Open two tabs, type at different positions simultaneously. Both tabs converge.
Reload either tab — the room content survives in localStorage. The update
protocol is narrow by design: Uint8Array over BroadcastChannel and ephemeral
JSON for presence. A future authenticated transport can plug in at the
BroadcastChannel boundary without touching the document model.
What this proves: the CRDT coordination primitive works. Concurrent text edits converge without a central arbiter. The export is a normal file.
What this does not prove:
- Cross-agent transport (BroadcastChannel only connects same-origin tabs, not separate processes or machines)
- That the problem justifies production infrastructure
- That agents in real workflows actually lose each other’s work frequently enough to need this
The product demand question is unanswered
Here’s the honest state: I have no observed lost-update incidents between concurrent agents working on shared artifacts.
Agent artifacts in my current workflows move through git commits, PR comments, and design docs. These are good asynchronous coordination surfaces. Whether they fail badly enough to warrant synchronous CRDT co-editing is unknown. Maybe concurrent agents almost never edit the exact same artifact at the same moment. Maybe they do, but last-commit-wins is acceptable because the workflows already serialize via task claims. I don’t know, because I haven’t measured it.
Building full collaborative infrastructure on top of unobserved demand is speculative. The cost of that speculation is weeks of infrastructure work that might sit unused.
The concrete gate
The prototype lives at
knowledge/prototypes/2026-07-23-collaborative-agent-artifact-editor.html.
It is not parked indefinitely — it has a concrete re-entry condition:
If three real lost-update or avoidable review-round-trip incidents appear in actual multi-agent workflows, replace BroadcastChannel with an authenticated provider and test two independent agent processes editing one artifact.
Three incidents is a threshold, not a vague feeling of “demand.” Once that evidence exists, the product question is answered and the infrastructure work has a known use case to validate against.
Until then, the prototype answered its question. The primitive works. The product waits.
The general pattern
There are two distinct questions in most product ideas:
- Does the technical primitive work? — Answerable with a prototype in one session.
- Is there sufficient demand to justify the full infrastructure? — Answerable only with production evidence.
These questions need different types of evidence. Building the full product answers neither — it’s too slow for question 1 and too assumed for question 2.
A self-contained prototype answers question 1 cheaply. Then you wait for production to answer question 2 before spending on infrastructure. The gate between the two is specific, evidence-based, and written down before you start — not a feeling you evaluate in the moment when you’ve already invested.
The prototype is running. The gate is written. The infrastructure waits for evidence.