swarm

module
v0.13.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 2, 2026 License: MIT

README

swarm

Every coding agent on your machine. One calm, keyboard-driven view.

Run agents in the background, see what needs you, and keep every session alive when the terminal closes or the daemon upgrades.

Release Go 1.25 or newer

swarm brings Claude Code, Codex, and other coding-agent CLIs into one Agent View-style terminal dashboard. Sessions sort themselves by what they need from you and run under durable per-session supervisors, so closing the wrong tab no longer kills the work.

Inspired by Claude Code's Agent View, but agent-agnostic and open source.

Why swarm

  • One view for every agent. Watch supported CLIs from a single board instead of a wall of terminal tabs.
  • Attention comes first. Needs input, Working, Ready for review, and Completed keep the next human action obvious.
  • Background by default. Each session owns a real PTY through its own shim process and continues after the TUI exits.
  • Safe daemon upgrades. Restart or upgrade swarm while agents are running; the replacement daemon finds and reconnects to them.
  • Keyboard-native control. Launch, attach, rename, hand off work, and stop sessions without leaving the terminal.
  • Remote companion. The Android app in this repository can securely watch and control agents running on your computer.

How it works

A disposable swarm TUI reaches a central replaceable daemon, which reconnects to three independent persistent session shims

One binary plays a few clear roles:

  1. swarm is the thin terminal client. On first run it starts swarm daemon automatically.
  2. The daemon owns the protocol, registry, status engine, and CLI adapters.
  3. Every agent session gets a tiny shim process that owns its PTY, VT screen grid, and transcript.
  4. Session metadata is written to disk, allowing a replacement daemon to rebuild the registry and reconnect safely.

Clients never talk to shims directly. Everything crosses the daemon's versioned Unix-socket protocol—the same product spine used by the remote companion.

Why sessions survive

One uninterrupted session trail continues after the terminal closes and while a replacement daemon reconnects

The terminal is only a view, and the daemon is replaceable. The per-session shim is the durable process: it keeps the agent, PTY, screen state, and transcript alive. After a restart, the daemon reads each session's meta.json, verifies process identity by PID and start time, and reconnects without taking ownership away from the shim.

Install

swarm ships as a single static binary with no runtime dependencies.

# Homebrew · macOS
brew install --cask Nathandela/swarm/swarm

# Go · macOS or Linux
go install github.com/Nathandela/swarm/cmd/swarm@latest

Or download a signed archive and checksum from the releases page. See docs/install.md for platform details and upgrade notes.

swarm version

Quickstart

swarm

The daemon starts automatically and opens the session board.

Key Action
↑ ↓ Move through sessions
⏎ Attach to the selected agent; ctrl+q returns to swarm
n Start a session and choose its CLI and working directory
e Rename the selected session
h Hand work to another supported CLI
ctrl+x Kill a live session or delete a finished one; confirm with y
esc Close the TUI while agents keep running

Attach mode is raw passthrough: the agent's native full-screen interface remains untouched. swarm adds only a thin session header, which can be hidden. Ended sessions offer r to resume as a fresh linked session where the adapter supports it.

Status is the interface

Four ordered lights represent Needs input, Working, Ready for review, and Completed

swarm combines process, turn, and interaction signals into one actionable group:

Group What it means
Needs input The agent asked a question or requested permission. Always sorted first.
Working A turn is active. The last meaningful output appears underneath.
Ready for review The turn finished. Attach, review the diff, or send the next prompt.
Completed The process exited or was lost. It remains until you delete it.

Structured events are preferred when a CLI exposes them—Claude Code uses configured hooks. Otherwise swarm reads the emulated screen grid and applies adapter-specific detection; it never guesses from arbitrary raw byte fragments.

The terminal board

The swarm terminal board listing coding-agent sessions grouped by status, with Needs input first

Bring existing Claude sessions into swarm

Inspect Claude Agent View background sessions that can be adopted:

swarm reattach --cli claude --all --dry-run

Transfer active sessions from Claude's background supervisor to swarm:

swarm reattach --cli claude --take-over

Add --all to include completed and stopped sessions. Interactive sessions are never imported. The operation is idempotent: swarm reuses a row with the same native Claude session ID instead of creating a duplicate.

Supervised handoff

Select a source session at an ordinary prompt or ready for review and press h. Choose the target CLI, model, and supervision mode. The source writes a context document, launches the linked child, and can monitor it with swarm watch, swarm peek, and swarm send.

swarm handoff --cli claude --model opus --supervision passive --context-file /tmp/handoff.md

Supervision modes:

  • passive — the daemon notifies the source when the child needs input, becomes ready for review, or completes.
  • manual — the source agent runs the watch/peek/send loop itself.
  • none — the source reports the child session ID and leaves supervision to you.

Permission requests are never approved by handoff automation; they remain explicit human decisions.

Supported agents

Agent Status
Claude Code Supported
Codex Supported
agy / Antigravity CLI Supported
OpenCode Supported
Hermes Agent Supported on Apple Silicon macOS and Linux

Every integration is a self-contained adapter covering detection, spawn arguments, status signals, and resume behavior. Characterization harnesses record real CLI output so adapters are tested against observed behavior rather than assumptions. See the Hermes adapter evidence for its current upstream limitations.

Android companion

The Android app pairs with a computer running swarm, displays the same session priorities, and supports encrypted remote observation and control. There is no swarm account: the phone and computer pair directly, and the relay transports encrypted envelopes it cannot read.

The application source lives under android/. Product, privacy, pairing, and self-hosted relay documentation is indexed from docs/INDEX.md.

Upgrading

The daemon keeps running when the binary on disk changes. After an upgrade, move it to the new build with:

swarm daemon restart

Running sessions survive and reconnect by design. See docs/install.md for the complete upgrade path.

Project status

Public and released—latest v0.13.8. Building requires Go 1.25 or newer.

The daemon, per-session shim supervision, TUI, VT emulator, status engine, worktree isolation, production CLI adapters, inter-session handoff, and Android remote-control foundation are implemented and covered by verification evidence under docs/verification/.

Known limitation: sessions make progress only while the host computer is awake. Sleep pauses agent processes; they resume automatically on wake with their state intact.

Documentation

Build and test

go build ./...
go test ./...
go vet ./...
golangci-lint run

All gates must pass before a feature closes. Contributions follow the TDD, evidence, and ADR conventions in AGENTS.md and CLAUDE.md.

License

swarm is licensed under the MIT License. Bundled third-party components and assets remain subject to their respective license notices.

Directories

Path Synopsis
android
gate
Package gate holds the Go-side build gate for the Android client (Phase B slice S13).
Package gate holds the Go-side build gate for the Android client (Phase B slice S13).
cmd
swarm command
Command swarm is the single distributed binary for the swarm system.
Command swarm is the single distributed binary for the swarm system.
swarm-char command
Command swarm-char is the characterization harness (E9.3 / T-6): it drives a real agent CLI in a PTY and records a versioned fixture plus a capability matrix entry.
Command swarm-char is the characterization harness (E9.3 / T-6): it drives a real agent CLI in a PTY and records a versioned fixture plus a capability matrix entry.
swarm-char/hookprobe command
Command hookprobe is a TEST-ONLY stand-in for a real agent CLI's hook.
Command hookprobe is a TEST-ONLY stand-in for a real agent CLI's hook.
swarm-fake-agent command
Command swarm-fake-agent is a scripted stand-in for a real agent CLI, driven by internal/fakeagent.
Command swarm-fake-agent is a scripted stand-in for a real agent CLI, driven by internal/fakeagent.
swarm-fake-codex command
Command swarm-fake-codex is a stand-in for the real `codex` binary IN ITS TWO MODES, so a test can drive the whole Wave R7 topology -- daemon -> shim -> app-server -> agent -- without a real ChatGPT account and without spending the owner's money (hard rule 10).
Command swarm-fake-codex is a stand-in for the real `codex` binary IN ITS TWO MODES, so a test can drive the whole Wave R7 topology -- daemon -> shim -> app-server -> agent -- without a real ChatGPT account and without spending the owner's money (hard rule 10).
swarm-publish command
Command swarm-publish uploads an Android App Bundle to Google Play and promotes it to a track, replacing the manual Console upload.
Command swarm-publish uploads an Android App Bundle to Google Play and promotes it to a track, replacing the manual Console upload.
swarm-pushgw command
Command swarm-pushgw boots the Swarm push gateway (docs/specifications/push-gateway-api.md, ADR-015).
Command swarm-pushgw boots the Swarm push gateway (docs/specifications/push-gateway-api.md, ADR-015).
swarm-relay command
Command swarm-relay boots the untrusted rendezvous/mailbox/push relay from a single config file (R-REL.9).
Command swarm-relay boots the untrusted rendezvous/mailbox/push relay from a single config file (R-REL.9).
swarm-remote command
Package main's config assembler for the gateway binary (slice G1): resolveGatewayParams reads the provisioned state (machine identity, relay.json, the paired-device registry) and returns everything remotegw.Service needs except the dialed relay Mailbox (that dial happens in slice G2).
Package main's config assembler for the gateway binary (slice G1): resolveGatewayParams reads the provisioned state (machine identity, relay.json, the paired-device registry) and returns everything remotegw.Service needs except the dialed relay Mailbox (that dial happens in slice G2).
internal
adapter
Package adapter is the FROZEN anti-corruption boundary (Epic 9, T-1/T-5/T-6) between swarm's core (daemon/shim/wire/TUI) and the concrete agent CLIs it drives.
Package adapter is the FROZEN anti-corruption boundary (Epic 9, T-1/T-5/T-6) between swarm's core (daemon/shim/wire/TUI) and the concrete agent CLIs it drives.
adapter/agy
Package agy is the Antigravity CLI (agy) adapter (v1.1 CLI duo, issue agents-tracker-5gv, plan .claude/tmp/cli-duo-implementation-plan.md Phase D): a stateless, goroutine-safe strategy object over the `agy` CLI.
Package agy is the Antigravity CLI (agy) adapter (v1.1 CLI duo, issue agents-tracker-5gv, plan .claude/tmp/cli-duo-implementation-plan.md Phase D): a stateless, goroutine-safe strategy object over the `agy` CLI.
adapter/claude
Package claude is the Claude Code adapter (Epic 11, E11.2/E11.6/E11.8): a stateless, goroutine-safe strategy object over the `claude` CLI.
Package claude is the Claude Code adapter (Epic 11, E11.2/E11.6/E11.8): a stateless, goroutine-safe strategy object over the `claude` CLI.
adapter/codex
Package codex is the Codex adapter (Epic 11, E11.4/E11.6/E11.8): a stateless, goroutine-safe strategy object over the `codex` CLI.
Package codex is the Codex adapter (Epic 11, E11.4/E11.6/E11.8): a stateless, goroutine-safe strategy object over the `codex` CLI.
adapter/detect
Package detect is the host-I/O side of adapter detection (E9.1 / E9.2).
Package detect is the host-I/O side of adapter detection (E9.1 / E9.2).
adapter/fixtureio
Package fixtureio is the DISK side of the fixture corpus (E9.2 / E9.4).
Package fixtureio is the DISK side of the fixture corpus (E9.2 / E9.4).
adapter/hermes
Package hermes implements Swarm's pure adapter strategy for the NousResearch Hermes Agent classic CLI.
Package hermes implements Swarm's pure adapter strategy for the NousResearch Hermes Agent classic CLI.
adapter/opencode
Package opencode is the opencode adapter (Phase E, R-E1..R-E8): a stateless, goroutine-safe strategy object over the `opencode` CLI.
Package opencode is the opencode adapter (Phase E, R-E1..R-E8): a stateless, goroutine-safe strategy object over the `opencode` CLI.
adapter/refadapter
Package refadapter is the fixture-only REFERENCE ADAPTER (E9.5 / T-5).
Package refadapter is the fixture-only REFERENCE ADAPTER (E9.5 / T-5).
adapter/registry
Package registry is the Epic 11 adapter registry: the single table mapping a stable agent name ("agy" / "claude" / "codex" / "hermes" / "opencode" / "reference") to the constructor that builds that adapter.Adapter.
Package registry is the Epic 11 adapter registry: the single table mapping a stable agent name ("agy" / "claude" / "codex" / "hermes" / "opencode" / "reference") to the constructor that builds that adapter.Adapter.
appserver
Package appserver is the DAEMON-OWNED JSON-RPC client for `codex app-server --listen unix://PATH` (Wave R7, Mirror M4.2/M4.3; ADR-013 §R7.2d).
Package appserver is the DAEMON-OWNED JSON-RPC client for `codex app-server --listen unix://PATH` (Wave R7, Mirror M4.2/M4.3; ADR-013 §R7.2d).
attach
Package attach is the Epic 8 PART A raw attach passthrough (E8.1-E8.5): the client-side loop that puts the controlling terminal in raw mode, paints the one snapshot (S10), then streams live frames straight to the terminal while forwarding keystrokes and resizes to the session — and ALWAYS gives the terminal back (on detach, session end, panic, and SIGINT/SIGTERM/SIGHUP).
Package attach is the Epic 8 PART A raw attach passthrough (E8.1-E8.5): the client-side loop that puts the controlling terminal in raw mode, paints the one snapshot (S10), then streams live frames straight to the terminal while forwarding keystrokes and resizes to the session — and ALWAYS gives the terminal back (on detach, session end, panic, and SIGINT/SIGTERM/SIGHUP).
contextguard
Package contextguard contains the provider-independent, side-effect-free policy for ContextGuard auto-compaction.
Package contextguard contains the provider-independent, side-effect-free policy for ContextGuard auto-compaction.
converge
Package converge decides, and then performs, `swarm daemon restart --unattended`: the nightly step that moves the RUNNING daemon and gateway onto the binary Homebrew has already installed (docs/specifications/auto-upgrade-plan.md revision 5, section 3, layer L2).
Package converge decides, and then performs, `swarm daemon restart --unattended`: the nightly step that moves the RUNNING daemon and gateway onto the binary Homebrew has already installed (docs/specifications/auto-upgrade-plan.md revision 5, section 3, layer L2).
daemon
Package daemon is the Epic 5 daemon core: the lifecycle authority that can die (kill -9) and come back without losing any agent (S1).
Package daemon is the Epic 5 daemon core: the lifecycle authority that can die (kill -9) and come back without losing any agent (S1).
design
PB-TOK-7: the colours this product COMPUTES rather than declares.
PB-TOK-7: the colours this product COMPUTES rather than declares.
engine
Package engine is the Epic 10 status-detection engine: the single, CLI-agnostic authority that turns raw session signals into a session's authenticated, fresh, never-confidently-wrong status.
Package engine is the Epic 10 status-detection engine: the single, CLI-agnostic authority that turns raw session signals into a session's authenticated, fresh, never-confidently-wrong status.
hookclient
Package hookclient is the Epic 10 hook transport (E10.1, G4): the thin poster that `swarm hook <event>` uses to send an authenticated status callback to the daemon socket, plus the daemon-side Decode that reverses it.
Package hookclient is the Epic 10 hook transport (E10.1, G4): the thin poster that `swarm hook <event>` uses to send an authenticated status callback to the daemon socket, plus the daemon-side Decode that reverses it.
idempotency
Package idempotency is the daemon's two-phase durable idempotency store (ADR-007 D6, plan R-IDP, amendment D.0-A3): a crash-safe `prepared -> executing -> completed/failed` request record keyed by operation_id, fsync'd BEFORE the side effect, so a duplicate request replays the cached outcome and executes nothing, and a crash between the side effect and the commit never double-executes.
Package idempotency is the daemon's two-phase durable idempotency store (ADR-007 D6, plan R-IDP, amendment D.0-A3): a crash-safe `prepared -> executing -> completed/failed` request record keyed by operation_id, fsync'd BEFORE the side effect, so a duplicate request replays the cached outcome and executes nothing, and a crash between the side effect and the commit never double-executes.
journal
Package journal is the daemon-owned durable event journal (ADR-007 D6, plan R-JRN): a single daemon-wide append-only log of versioned records (schema_version, monotonic cursor, ts, session_id, type, payload) under <stateDir>/journal/, written at the daemon's saveMetaLocked choke point (A7).
Package journal is the daemon-owned durable event journal (ADR-007 D6, plan R-JRN): a single daemon-wide append-only log of versioned records (schema_version, monotonic cursor, ts, session_id, type, payload) under <stateDir>/journal/, written at the daemon's saveMetaLocked choke point (A7).
persist
Package persist is the durable source of truth for session state (ADR-003): one meta.json per session under <root>/<id>/, written atomically so a crash mid-write is observed as old-or-new and never torn, and so a single corrupt session file never prevents scanning the rest.
Package persist is the durable source of truth for session state (ADR-003): one meta.json per session under <root>/<id>/, written atomically so a crash mid-write is observed as old-or-new and never torn, and so a single corrupt session file never prevents scanning the rest.
phonecore
Package phonecore is the gomobile-ready phone-side client logic for remote control (R-PHC): pairing, transport, command signing, and consuming the daemon journal -- all in Go, tested against itself on the build machine (ADR-007 D12).
Package phonecore is the gomobile-ready phone-side client logic for remote control (R-PHC): pairing, transport, command signing, and consuming the daemon journal -- all in Go, tested against itself on the build machine (ADR-007 D12).
phonesim
Package phonesim is a simulated phone that drives the REAL phonecore over a REAL relay, with no mobile app in the loop.
Package phonesim is a simulated phone that drives the REAL phonecore over a REAL relay, with no mobile app in the loop.
play
Package play uploads an Android App Bundle to Google Play through the Publishing API v3 (edits -> upload -> track -> commit), using only the standard library.
Package play uploads an Android App Bundle to Google Play through the Publishing API v3 (edits -> upload -> track -> commit), using only the standard library.
procstart
Package procstart is the process-creation-time identity token shared by the daemon (which matches a shim by (pid, start-time), S3/D-4) and the shim (which records the same pair for its backend so a RESTARTED daemon can tell a live app-server from an unrelated process that inherited a recycled pid, ADR-013 §R7.2c).
Package procstart is the process-creation-time identity token shared by the daemon (which matches a shim by (pid, start-time), S3/D-4) and the shim (which records the same pair for its backend so a RESTARTED daemon can tell a live app-server from an unrelated process that inherited a recycled pid, ADR-013 §R7.2c).
protocol
Package protocol is the Epic 6 client<->daemon control surface (ADR-002): a versioned, capability-negotiated RPC (JSON control ops in wire.TControl frames) plus a data plane (wire.TDataIn/TDataOut/TSnapshot binary frames), layered over the shared G1 frame envelope (internal/wire).
Package protocol is the Epic 6 client<->daemon control surface (ADR-002): a versioned, capability-negotiated RPC (JSON control ops in wire.TControl frames) plus a data plane (wire.TDataIn/TDataOut/TSnapshot binary frames), layered over the shared G1 frame envelope (internal/wire).
protocol/schema
Package schema holds the daemon-free wire message types of the client<->daemon control surface: the Control envelope, its payload types, and the canonical remote-command tuple a phone signs (remote.go).
Package schema holds the daemon-free wire message types of the client<->daemon control surface: the Control envelope, its payload types, and the canonical remote-command tuple a phone signs (remote.go).
pushgw
Package pushgw implements the Swarm push gateway HTTP service specified by docs/specifications/push-gateway-api.md ("the spec") and ADR-015 (WakeV1, the capability model): registration, token rotation, address allocation, wake submission and revocation, each behind the auth, quota, retention and error-vocabulary rules the spec sections cited throughout this package's files require.
Package pushgw implements the Swarm push gateway HTTP service specified by docs/specifications/push-gateway-api.md ("the spec") and ADR-015 (WakeV1, the capability model): registration, token rotation, address allocation, wake submission and revocation, each behind the auth, quota, retention and error-vocabulary rules the spec sections cited throughout this package's files require.
pushreg
Package pushreg owns the serialization shared by the phone's Play Integrity request and the push gateway's independent recomputation.
Package pushreg owns the serialization shared by the phone's Play Integrity request and the push gateway's independent recomputation.
remote/crypto
Package crypto is the remote-control cryptographic foundation (ADR-007 D2/D3/D4; implementation-plan R-CRY.1-.16, R-PAIR.4).
Package crypto is the remote-control cryptographic foundation (ADR-007 D2/D3/D4; implementation-plan R-CRY.1-.16, R-PAIR.4).
remote/device
Package device is the daemon-side durable registry of paired remote-control devices (R-DEV.1).
Package device is the daemon-side durable registry of paired remote-control devices (R-DEV.1).
remote/enroll
Package enroll is the machine-side enrollment keystone: it turns an affirmatively-confirmed pairing outcome (internal/remote/pairing) into the two durable artifacts the runnable remote stack needs.
Package enroll is the machine-side enrollment keystone: it turns an affirmatively-confirmed pairing outcome (internal/remote/pairing) into the two durable artifacts the runnable remote stack needs.
remote/grant
Package grant persists and transports the initial sealed EpochGrant that bootstraps a freshly paired device's E2EE session (ADR-007 amendment 2026-07-24, decision C5).
Package grant persists and transports the initial sealed EpochGrant that bootstraps a freshly paired device's E2EE session (ADR-007 amendment 2026-07-24, decision C5).
remote/grantwire
Package grantwire is the WIRE half of the epoch-grant bootstrap: the tagged plaintext frame the gateway appends to a device mailbox, and its parser.
Package grantwire is the WIRE half of the epoch-grant bootstrap: the tagged plaintext frame the gateway appends to a device mailbox, and its parser.
remote/machineid
Package machineid implements the machine's pairing identity bundle (A4-1a): the Noise-static/recipient X25519 keys, the grant-signing and relay-auth Ed25519 keypairs, epoch keys, epoch id, grant seq, hostname, and routing id that `swarm remote init` persists and internal/skeleton's pairingConfig consumes.
Package machineid implements the machine's pairing identity bundle (A4-1a): the Noise-static/recipient X25519 keys, the grant-signing and relay-auth Ed25519 keypairs, epoch keys, epoch id, grant seq, hostname, and routing id that `swarm remote init` persists and internal/skeleton's pairingConfig consumes.
remote/pairing
Package pairing orchestrates the swarm remote-control device<->machine pairing slice (R-PAIR.1-.9).
Package pairing orchestrates the swarm remote-control device<->machine pairing slice (R-PAIR.1-.9).
remote/push
Package push implements the FCM v1 sender behind relay.PushSink (PB-PUSH-2): it turns a generic alert plus an opaque ciphertext envelope into an HTTP/2 request Google's messaging API accepts, and turns Google's answers back into the two verdicts the relay acts on — retry, or prune this token.
Package push implements the FCM v1 sender behind relay.PushSink (PB-PUSH-2): it turns a generic alert plus an opaque ciphertext envelope into an HTTP/2 request Google's messaging API accepts, and turns Google's answers back into the two verdicts the relay acts on — retry, or prune this token.
remote/qrterm
Package qrterm renders a payload string as a scannable QR symbol for a terminal (PB-PAIR-1).
Package qrterm renders a payload string as a scannable QR symbol for a terminal (PB-PAIR-1).
remote/relay
Package relay is the untrusted rendezvous/mailbox/push relay (R-REL.*, ADR-007 D9/D11).
Package relay is the untrusted rendezvous/mailbox/push relay (R-REL.*, ADR-007 D9/D11).
remote/relaycfg
Package relaycfg owns <stateDir>/remote/relay.json: the relay a machine is provisioned against, and the optional certificate pin it verifies that relay with.
Package relaycfg owns <stateDir>/remote/relay.json: the relay a machine is provisioned against, and the optional certificate pin it verifies that relay with.
remote/relaypurge
Package relaypurge is the durable half of ADR-007 D9's deferred relay purge: "an offline-at-revoke machine defers the purge to reconnect".
Package relaypurge is the durable half of ADR-007 D9's deferred relay purge: "an offline-at-revoke machine defers the purge to reconnect".
remote/supervise
Package supervise generates the swarm-remote gateway's supervision unit and installs it through the owner-invoked CLI.
Package supervise generates the swarm-remote gateway's supervision unit and installs it through the owner-invoked CLI.
remote/transport
Package transport is what remains of slice S6's client-side relay session after ADR-007 B98: the two INBOUND-DRAIN PACING primitives the gateway uses, and nothing else.
Package transport is what remains of slice S6's client-side relay session after ADR-007 B98: the two INBOUND-DRAIN PACING primitives the gateway uses, and nothing else.
remotegw
Package remotegw is the supervised gateway sidecar (R-GW): a standalone process that dials the daemon's dedicated remote-tier socket (R-GW.8) and, later, the untrusted relay, bridging the daemon's journal/events and the phone's commands.
Package remotegw is the supervised gateway sidecar (R-GW): a standalone process that dials the daemon's dedicated remote-tier socket (R-GW.8) and, later, the untrusted relay, bridging the daemon's journal/events and the phone's commands.
shim
Package shim is the Epic 4 shim engine: the per-session process that owns the PTY, execs the agent in its own process group from an argv array + captured env, serves the per-session UDS (G2 message set), pipes PTY bytes into the VT emulator + transcript, and — surviving the daemon indefinitely — always drains the PTY, then on agent exit writes the final snapshot + exit side-file (G3).
Package shim is the Epic 4 shim engine: the per-session process that owns the PTY, execs the agent in its own process group from an argv array + captured env, serves the per-session UDS (G2 message set), pipes PTY bytes into the VT emulator + transcript, and — surviving the daemon indefinitely — always drains the PTY, then on agent exit writes the final snapshot + exit side-file (G3).
shimwire
Package shimwire is the G2 daemon<->shim message set (build-plan.md gap resolution G2): the JSON control payloads carried inside wire.TControl frames on the per-session shim socket.
Package shimwire is the G2 daemon<->shim message set (build-plan.md gap resolution G2): the JSON control payloads carried inside wire.TControl frames on the per-session shim socket.
skeleton
Package skeleton is the Epic 8 daemon ASSEMBLY: the wiring that turns the three independently-built layers into the running walking skeleton (GG-1).
Package skeleton is the Epic 8 daemon ASSEMBLY: the wiring that turns the three independently-built layers into the running walking skeleton (GG-1).
smoke
Package smoke holds the Epic 14 real-CLI smoke / characterization harness (Epic 11 deferrals D1/D2, bead agents-tracker-54z VERIFY list).
Package smoke holds the Epic 14 real-CLI smoke / characterization harness (Epic 11 deferrals D1/D2, bead agents-tracker-54z VERIFY list).
status
Package status defines the session status model shared by every package that observes or reports on agent sessions: three orthogonal dimensions (process, turn, interaction) and the derivation of a single display Group from them.
Package status defines the session status model shared by every package that observes or reports on agent sessions: three orthogonal dimensions (process, turn, interaction) and the derivation of a single display Group from them.
submitframe
Package submitframe is the shared submit-boundary framing rule (bead agents-tracker-abyz, ADR-010 Amendment 1 A2): how input bytes are cut into PTY writes so a CLI reads a submit as a submit, and how far a submit is held off the text before it.
Package submitframe is the shared submit-boundary framing rule (bead agents-tracker-abyz, ADR-010 Amendment 1 A2): how input bytes are cut into PTY writes so a CLI reads a submit as a submit, and how far a submit is held off the text before it.
testbin
Package testbin builds the swarm and swarm-fake-agent binaries once per test binary run, shared by the skeleton, protocol, and e2e integration suites that each need a real subprocess to shim/agent against.
Package testbin builds the swarm and swarm-fake-agent binaries once per test binary run, shared by the skeleton, protocol, and e2e integration suites that each need a real subprocess to shim/agent against.
transcript
Package transcript is the append-only transcript writer for a session's PTY byte stream (Epic 3, build-plan.md).
Package transcript is the append-only transcript writer for a session's PTY byte stream (Epic 3, build-plan.md).
tui
Package tui is the Epic 7 client-side terminal UI: a screen router that hosts the general view (grouped session board), the launch, handoff and options forms, and an attach placeholder (attach passthrough is Epic 8).
Package tui is the Epic 7 client-side terminal UI: a screen router that hosts the general view (grouped session board), the launch, handoff and options forms, and an attach placeholder (attach passthrough is Epic 8).
upgrade
Package upgrade is the update transaction (lifecycle plan R2): resolve the latest release, decide whether this install may act, download, verify, and STAGE -- never activate.
Package upgrade is the update transaction (lifecycle plan R2): resolve the latest release, decide whether this install may act, download, verify, and STAGE -- never activate.
version
Package version holds the build-time version identity stamped into the swarm binary.
Package version holds the build-time version identity stamped into the swarm binary.
vt
Package vt is the Epic 2 in-shim terminal emulator: a thin wrapper around github.com/charmbracelet/x/vt (ADR-005) that feeds raw PTY bytes into a grid and serializes the visible screen to a versioned, hostile-escape-free snapshot.
Package vt is the Epic 2 in-shim terminal emulator: a thin wrapper around github.com/charmbracelet/x/vt (ADR-005) that feeds raw PTY bytes into a grid and serializes the visible screen to a versioned, hostile-escape-free snapshot.
wire
Package wire is the shared G1 frame envelope (build-plan.md gap resolution G1): one length-prefixed, type-tagged frame carries every message on both the client<->daemon and daemon<->shim sockets.
Package wire is the shared G1 frame envelope (build-plan.md gap resolution G1): one length-prefixed, type-tagged frame carries every message on both the client<->daemon and daemon<->shim sockets.
worktree
Package worktree implements Epic 12's launch-time isolation (S-3/R-3): Create prepares an isolated git worktree + branch for a session and Remove tears it down.
Package worktree implements Epic 12's launch-time isolation (S-3/R-3): Create prepares an isolated git worktree + branch for a session and Remove tears it down.
Package swarmmobile is the ONE gomobile-bound surface of the swarm phone client (PB-BIND-1).
Package swarmmobile is the ONE gomobile-bound surface of the swarm phone client (PB-BIND-1).
scripts
e2e2session command
Command e2e2session starts ONE session on a running daemon and exits, so that scripts/pbe2e2-emulator-smoke.sh has something for the phone to observe, take control of and type into.
Command e2e2session starts ONE session on a running daemon and exits, so that scripts/pbe2e2-emulator-smoke.sh has something for the phone to observe, take control of and type into.
releasemanifest command
releasemanifest emits the release's compatibility card (compat.json) from the source tree's own constants -- one source of truth with the running code, so the card cannot drift from the build it describes.
releasemanifest emits the release's compatibility card (compat.json) from the source tree's own constants -- one source of truth with the running code, so the card cannot drift from the build it describes.
signchecksums command
signchecksums signs a goreleaser checksums.txt with the release's ed25519 key (lifecycle plan R2): stdin-free, two flags, zero dependencies beyond the standard library -- the verifying half is internal/upgrade.VerifyChecksums, and the two share nothing but the key format, which is the point (a self-contained verifier must not import a signing stack).
signchecksums signs a goreleaser checksums.txt with the release's ed25519 key (lifecycle plan R2): stdin-free, two flags, zero dependencies beyond the standard library -- the verifying half is internal/upgrade.VerifyChecksums, and the two share nothing but the key format, which is the point (a self-contained verifier must not import a signing stack).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL