TermAl

Agent Coordination Boards

Small, versioned JSON facts scoped to one local project, shared by that project’s root sessions. The board is level-triggered state — durable truth that peers read at their own pace — and is the deliberate complement of durable agent mailboxes, which carry edge-triggered events that wake sessions. Board writes never wake anyone: if a change needs someone’s attention now, send a mailbox message pointing at the key.

Tracker: tm-uwx.7 (design v1.1 on the bead records the negotiated contract with code citations). Store: src/coordination_board.rs. HTTP surface: src/board_routes.rs. MCP tools: src/delegation_mcp.rs (termal_board_list / termal_board_get / termal_board_set).

Board tables live beside mailbox tables in ~/.termal/coordination.sqlite. Both stores retain one long-lived connection and share coordination-local FIFO writer admission, isolated from termal.sqlite session/transcript persistence.

Model

Write semantics (CAS + idempotency)

Every write carries expectedRevision and an author-scoped idempotencyKey.

Intent Input Against Result
Create expectedRevision: 0 + value never-existed key revision 1
Create expectedRevision: 0 + value live head or tombstone 409 with current head / tombstone revision in detail
Update exact live revision + value matching head revision +1
Restore exact tombstone revision + value tombstoned key revision +1 (conscious resurrection — the only way back)
Delete exact live revision + delete: true (no value) matching head tombstone, revision +1
Delete exact tombstone revision tombstoned key 404 “already absent”
Delete mismatched revision tombstoned key 409 with the tombstone revision in detail
Delete any revision never-created key 404

Read semantics

Limits and lifecycle

Relationship to mailboxes

  Mailbox (doc) Board (this doc)
Trigger model Edge — messages activate sessions Level — facts sit still
Ordering Dense per-mailbox sequence, FIFO Per-key revisions + scope generation
Read discipline Cursor CAS (processedThrough) Plain reads; CAS only on write
Wakes the peer Yes (metadata-only notification) Never
Typical use “Review round 2 is ready for you” activity.rust-suite, freeze fingerprints, gate status

Convention: coordinate who does what next through the mailbox; publish what is currently true on the board. A mailbox message may simply say “board key gates.union changed — read it when convenient.”

See SQLite session storage for the two-database layout, migration, and boot ordering.