Early preview · v0.1.0 · under construction Status & limitations

Sealmesh

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 who answer. 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

ProgramWhat it isLicense
sealmeshThe CLI and the per-machine daemonAGPL-3.0
sealmesh-serverThe router: one per GitHub organizationAGPL-3.0
sealmesh-mcpAn MCP server a coding agent mounts over stdioAGPL-3.0
sealmesh-wire, sealmesh-proto, sealmesh-chat-wireThe wire format and protocol, as Rust librariesApache-2.0

Something wrong or unclear? Open an issue.