durable terminal agents that SWIM between clients π built in Zig
curl -fsSL https://marlin.wtf/install.sh | sh
marlin is a daemon-native terminal AI agent harness. The daemon owns structured sessions; the TUI and headless CLI are thin clients. Close a terminal and the turn keeps running. Reattach laterβor from another terminal over SSHβand the transcript, status, approvals, and full tool results are still there.
/sessions, recent-session switching, per-session view state, background activity and child status./reboot --build while developing Marlin inside Marlin.task call creates a durable, attachable, read-only child with a budget, cancellation cascade, and structured result.$ curl -fsSL https://marlin.wtf/install.sh | sh $ export OPENROUTER_API_KEY=... $ marlin run "why is my build broken" # ...the daemon keeps the structured session... $ marlin # attach the TUI $ marlin ls # short stable handles, including children $ marlin attach 63df # any unique prefix (minimum four)
Tagged builds target macOS and Linux on aarch64 and x86_64. The installer
verifies a published SHA-256 checksum and writes to
~/.local/bin without sudo.
Tracking main instead? Clone the
repository and run
zig build with Zig 0.16.0.
| track | where it is | status |
|---|---|---|
| M0βM3 | agent loop, daemon, TUI, context engine, self-hosting reboot | β BUILT |
| M3.5 | permissions + secret boundary | π§ HARDENING |
| M4 | structured session multiplexer | β VERIFIED |
| M5 | MCP, executable tools, hooks, skills | π DOGFOODING |
| M6a | durable child sessions + task primitive | π FIRST SLICE |
| M6 next | ordered concurrent children + review councils | π¨ ACTIVE |
| later | workspace snapshots/isolation + remote/PWA decisions | π EVIDENCE FIRST |
The source-of-truth details live in the milestones and the active M6 execution plan.
/land, and /discard remain one deliberately later trackSOURCE on GH made w/ ZIG RELEASES ARCHITECTURE
one handcrafted HTML file. the fish rejected React.