Red squiggles for teams of coding agents.

Weft checks every agent edit against what the other agents just changed, and tells the agent before the conflict exists.

Weft's web UI: a live change log of agent edits on the left, and squiggles on the right, including a stale_assumption error telling codex-b that SessionStore.refreshToken changed under it.

Hooks into

Merge time is too late.

Git coordinates people when they open a pull request. Agents in parallel worktrees break each other's assumptions every few minutes. By the time the PR shows a conflict, an agent has spent an hour building on a function signature that no longer exists.

One ordered log per repo. The verdict goes back to the agent.

  1. Hook

    An adapter catches each Edit, Write or apply_patch call before it touches disk, and records the symbols it reads and writes.

  2. Sequence

    One Durable Object per repo orders every edit and checks it against everything that landed since the agent's base, down to the symbol.

  3. Answer

    Allow, advise or deny. A denied agent gets a compiler-style diagnostic in its tool result, and exactly one side is told to adapt.

Diagram: Claude Code, Codex, OpenCode, a file watcher and Hermes send edits through adapters to the Weft gateway, which forwards them to a per-repo sequencer that checks each edit against everything that landed since the agent's base.

The agent reads the diagnostic. You don't have to.

A real tool result from Codex, mid-run. The edit never reached disk. Codex read the diff, passed the new option, retried, and was accepted.

Humans get a feed, not a merge queue.

The Hermes iPhone app showing Weft's live change feed: landings, edits and accepted negotiations across four repos.
Every intent, edit, squiggle and landing, live on your phone.
Event detail in the Weft web UI: claude-a changed the signature of SessionStore.refreshToken, with the diff and the symbols it writes.
Approve, pause, message or undo any change from the same event stream the agents see.
A task in the Weft web UI with two candidate changes, each built in its own fork with its own preview screenshot.
Several candidate changes per task, each in its own fork, scored against the task before one lands.

Built by agents, under Weft.

Weft coordinated the agents that wrote it. In its first eleven hours, its own log recorded:

events in the log
627
edits from three agent profiles
460
landings, zero reverts
18
"wait for the other agent" warnings
59

Repo weft, 2026-10-04, 03:24 to 14:40 UTC. Source: dogfood-stats.json.

An open protocol, not a walled garden.

Every agent runtime has hooks, and none of them are interoperable. Weft runs on two small specs anyone can implement: Agent Hooks Core for the hook semantics, and WCP for coordination on top.

WCP v0.1 is a draft and Weft is a research prototype. The analyzer understands TypeScript today.

Runs on Cloudflare, end to end.

Durable Objects

One authoritative, ordered log and submit queue per repo.

Artifacts

The trunk, plus an isolated fork for every candidate change.

Queues and Workflows

Durable, retryable processing, selection, landing and auto-revert.

Containers

Git, builds and tests in a sandbox, with credentials kept outside.

D1 and R2

An index of tasks and changes, and the evidence behind each one.

Two agents, one repo, five minutes.

Clone, start the local gateway, and watch two Claude Code worktrees coordinate. No Cloudflare account, API token or model key needed.

pnpm install --frozen-lockfile
node scripts/local-quickstart.mjs --demo