/agent-talk

reindent1 pts0 comments

GitHub - reindent/agent-talk: Two agents. One shared file. A decision they can both live with. · GitHub

/" data-turbo-transient="true" />

Skip to content

Type / to search

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

reindent

agent-talk

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>2 Commits<br>2 Commits

assets

assets

skills

skills

.nojekyll

.nojekyll

CNAME

CNAME

LICENSE

LICENSE

README.md

README.md

index.html

index.html

View all files

Repository files navigation

/agent-talk

Two agents. One shared file. A decision they can both live with.

/agent-talk "pick a database" # Agent A starts session a1b2c3d4<br>/agent-talk a1b2c3d4 # Agent B joins

~/.agent-talk/a1b2c3d4.md # one shared canvas<br>~/.agent-talk/a1b2c3d4.history.md # turn-by-turn replay for humans

Agent A writes. END OF A.<br>Agent B rewrites. END OF B.<br>Repeat until: ## CONSENSUS REACHED

The canvas is the source of truth; the history file is only a replay for the<br>monitor. Site and live demo: https://agent-talk.reindent.com

Quickstart (humans)

Install the skills (protocol + monitor + timeout config) into your agent:

npx skills add reindent/agent-talk

Then:

In one agent: /agent-talk "your task here". It writes its opening<br>position, gives you a session ID, and hands you a link to watch the chat.

Give the ID to a second agent, any CLI: /agent-talk .

They take turns editing the same file until one writes<br>## PROPOSED CONSENSUS and the other upgrades it to<br>## CONSENSUS REACHED. A timeout ends sessions that will not converge.

Quickstart (agents without the skill)

Any agent that can read and write files can join. Point it at<br>skills/agent-talk/SKILL.md and the session ID.<br>The short version: read ~/.agent-talk/.md, check the<br>PROTOCOL: header matches the version you speak, register on the AGENTS:<br>line, and obey the turn rules below. Sessions are plain files in<br>~/.agent-talk/; there is nothing else.

The protocol

PROTOCOL: 2<br>TASK:<br>EXPIRES:<br>AGENTS: =initiator, =joiner<br>The shared working document. Both agents restructure it freely,<br>turn by turn, toward the answer.

END OF "># agent-talk sessionID><br>PROTOCOL: 2<br>TASK: one-line task><br>EXPIRES: UTC instant both agents must converge by><br>AGENTS: uuid>=initiator, uuid>=joiner<br>The shared working document. Both agents restructure it freely,<br>turn by turn, toward the answer.

END OF uuid-of-agent-who-just-finished>

Four rules:

One file. The session is a single markdown document on disk.

One writer at a time. You may edit only when the last END OF line<br>names the other agent.

One atomic write per turn. Compose fully, write once.

Modify, never append. The canvas is not a chat log; it converges into<br>the final answer.

After every turn, the writer appends a full snapshot of the canvas to<br>.history.md. That log powers the human view and is never read<br>back by agents. Version mismatches are handled explicitly: the session's<br>PROTOCOL: line pins the rules, and a v2 agent backfills missing snapshots<br>if its peer runs an older version.

The monitor

--open">~/.claude/skills/agent-talk-monitor/scripts/monitor.sh sessionID> --open

A read-only local web view of the session: initiator bubbles on the left,<br>joiner on the right, whose-turn status, a consensus badge, and the timeout<br>clock. Refreshes every 2 seconds. Without --open it just prints the URL,<br>which is how the initiator invites you to watch at session start.

Interop

Works with Claude Code, Codex, Grok, and any agent that can edit a file.<br>The protocol is the spec; the skill files are conveniences. Two Claudes,<br>Claude with Codex, or anything else that follows the SKILL.md.

Timeouts, troubleshooting, limitations

Sessions expire: EXPIRES in the header, timeout_minutes in<br>.meta.json (default 5). Change it with<br>/agent-talk-timeout .

Stuck session: read the canvas file; the last END OF line tells you who<br>the protocol is waiting on.

Two agents on one machine share ~/.agent-talk/; it is not private<br>across local users and not designed for adversarial peers.

Not a CRDT: one writer at a time is the concurrency model, on purpose.

License

MIT. Built by Diego Araos /<br>Reindent. Also from Reindent:<br>BOARDS.md.

About<br>Two agents. One shared file. A decision they can both live with.<br>Resources<br>Readme<br>MIT license<br>Activity<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository

Releases

Packages

Contributors

Languages

You can’t perform that action at this time.

agent talk agents session turn file

Related Articles