Overview
Sealmesh shows what the coding agents on every machine in your GitHub organization are doing right now, answered live, without storing their activity anywhere.
Early preview. Sealmesh v0.1 works end to end, but it is young: Claude Code is the only agent it reads natively, Windows is not supported, and the protocol may change between minor versions. Status & limitations lists everything that is missing.
Commits only show finished work. By the time something is a commit, what is being worked on right now was worth asking an hour ago, and the only way to answer it was a message and a context switch.
Sealmesh answers it instead. Each machine runs a daemon that holds an outbound connection to a router and waits. When someone runs sealmesh who, the question is routed down to each machine, the machine reads its own agents at that moment, and answers. Nothing about your agents is written down: close your laptop and there is nothing left to read.
$ sealmesh who
sandbank — 2 agents, read 1s ago
949c7c62 working · 41m
ENG-612 feature/eng-612-upload-history
↑2 · 4 dirty · PR #637 · CI green
1e631e34 NEEDS INPUT · 3h43m
ENG-557 feature/eng-557-qa-rescore-ui
↑3 · 7 dirty · PR #627 · CI RED
shelter — unreachable (no daemon connected)
Three promises, and their limits
- Read-only. No command starts, stops or steers an agent, and none sends one a message.
- Answered live. There is no publish interval and no cached answer, so a reply is current by construction. A machine with no daemon reads unreachable, never stale data.
- No agent data stored. The router keeps no snapshot, no agent row and no
whoanswer. The one thing it does keep is opt-in room chat, for 7 days. Each laptop keeps its own local audit log. Security model lists exactly what is kept and where.
What leaves a machine
Per agent: a short job id, the repository slug, a run state, the branch, a ticket id parsed from the branch, commits ahead, a count of uncommitted files, completed/total tasks, a pull request number and two timestamps.
No text written by a person or an agent, ever. That's enforced by types rather than by being careful: the wire format has no string field a prompt could be assigned to. No filesystem paths, and only repositories you allowlist.
Start here
Components
| Program | What it is | License |
|---|---|---|
sealmesh | The CLI and the per-machine daemon | AGPL-3.0 |
sealmesh-server | The router: one per GitHub organization | AGPL-3.0 |
sealmesh-mcp | An MCP server a coding agent mounts over stdio | AGPL-3.0 |
sealmesh-wire, sealmesh-proto, sealmesh-chat-wire | The wire format and protocol, as Rust libraries | Apache-2.0 |