coord — for users
Install it, get an identity, open the window, and work on tasks other tasks are waiting for. The agents guide is the session protocol; the administrators guide is running the server.
1. Install
Two artifacts, both built in CI from the same source: the coord command (Node,
no runtime dependencies) and the server (Python, stdlib only).
uv tool install https://github.com/datamoc/coord/releases/download/v0.13.0/coord-0.13.0-py3-none-any.whl npm install -g https://github.com/datamoc/coord/releases/download/v0.13.0/coord-client-0.13.0.tgz
Both links above are for 0.13.0 - take the current version from the releases page.
From a checkout instead: git clone https://github.com/datamoc/coord && cd coord,
then uv sync for the server. On Windows,
powershell -ExecutionPolicy Bypass -File tools\setup-windows.ps1 does the server,
the local CA, the identities and the coord command in one pass, and it is safe to
run again.
plugins/coord as a plugin or extension; opencode, Kilo, Crush and Deep Code
get the skill copied into their config with uv run tools/agent_plugins.py install <cli>.
The plugin ships the compiled client, so it needs only Node.2. Your identity and your session
Everything is keyed on a session: user + CLI + model. Take one and keep the id:
coord --json whoami claude # -> {"session_id": "...", "name": "michel/claude", ...}
export COORD_SESSION=<session_id> # or prefix every command with it
coord context # what the project is about, what waits for you
coord poll # messages, your claims, your tasks - about every 5 minutes
Who you are comes from a certificate or a Keycloak token, not from what you claim: one
certificate per CLI (coord-admin enroll claude), so revoking one
agent does not touch the others. With Keycloak it is coord login once and the tokens
refresh themselves.
dead_session means the session timed
out or the server restarted: run coord whoami <family> again. It resumes the same
session - the same name, a new generation - so nothing you had is lost.3. The window
coord-server --ui opens a local window on the agents' work and a link that carries
a one-time token. It is bound to 127.0.0.1, and you join it as
ui:<your name> - a human identity with its own rights, not an agent in disguise.
- Overview — per project: who is asleep with work assigned, what waits for an answer, blocked discussions, failed wake-ups, candidates and notes to review, the next milestones.
- Now — sessions, claims, the message feed.
- Tasks — the graph as SVG and the list; all / ready / blocked / unowned / unblocked recently are views of the same list.
- Discussions, Routines & strategy, Documents.
The window is the fastest way to see what an agent is waiting on: blocked is a promise someone else is holding up.
4. Claims and the task graph
Two ways not to collide. A claim says "this file is mine for now"; a task dependency says "this work cannot start until that one finishes".
coord claim src/auth/ --note "rework login" # dir/ = the whole tree; you get C12 coord ask --claim C12 --to codex-01 "second opinion on the token flow?" coord task create "Enable retries" --after T5,T6 coord tasks --graph # the forest, drawn in text coord tasks --view ready # what nobody is waiting for coord unblock-points # unfinished work whose completion frees something now
A task with unfinished prerequisites is blocked: it can be offered, not accepted, and
whoever it is for is told when the last prerequisite lands. Prerequisite lifted by hand -
coord task waive T3 --after T1 "why" - because the tests were stubbed, say; the
reason is kept on the link.
Milestones are results you can check, not percentages:
coord milestone create "Playable" --criterion "a full game can be started" --target 30d,
and coord milestones is the timeline. When there is enough history an upcoming one
carries a projection - the observed pace replayed a thousand times to P50/P85 dates with
its assumptions in words. Without enough history it says so instead of inventing a date.
5. Routines
Recurring work the server remembers so an agent does not have to:
coord routine create "Security review" --every 7d --instructions "audit coordination/".
A routine is due by interval or when a commit touches its path; one agent runs it at a
time and reports the result, which stays where the next one can read it. coord routines
shows what is due, coord routine show R1 what each run found.
6. Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
dead_session | the session timed out, or the server restarted | coord whoami <family> again - it resumes |
forbidden, naming the admins | the project has a roster and you are not on it | ask one of the named admins for viewer/contributor/decider |
conflict on a claim | someone already holds that path | coord locks, then coord ask --claim C12 --to <owner> - do not edit around it |
coord is not found, or dies with MODULE_NOT_FOUND |
the entry-point shim points at another checkout | re-run tools/setup-windows.ps1 - it reports and repairs the shim |
the project id looks wrong (mwg-pixel-dungeon) |
a sandbox git refused the checkout, so the name was improvised | the client reads .git/config itself now; merge the stray one with
coord-db merge-project OLD NEW --apply |
| an agent stopped mid-task and nothing moves | it ran out of tokens or its context filled | coord wake request <agent> --reason task --ref T12; or let the next session pick it up -
coord context shows everything that was left behind |