a marlin leaping out of the ocean, majestically, at 64 colors

~*~ marlin ~*~

durable terminal agents that SWIM between clients  πŸŸ  built in Zig

⚑ install the latest tagged build (macOS + Linux):
curl -fsSL https://marlin.wtf/install.sh | sh
β˜…β˜…β˜… WELCOME to marlin.wtf β˜…β˜…β˜… one binary β˜… daemon-owned sessions β˜… structured scrollback β˜… TUI multiplexer β˜… MCP + hooks + skills β˜… CHILD AGENTS HAVE ENTERED THE WATER β˜… written in ZIG β˜…β˜…β˜…

>> what IS marlin??

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.

DEVELOPMENT PREVIEW Marlin is already self-hosting and useful for real work, but it is not a stable 1.0 product. The multiplexer and extension foundations are built; M6 is actively widening child sessions into concurrent delegation and review councils. Config and protocol details may still move.

>> what works TODAY

Focused TUIMultiline composer, mouse selection + OSC52 copy, command completion, readable tool/reasoning output, model and effort controls.
Real multiplexerDurable concurrent sessions, short stable handles, /sessions, recent-session switching, per-session view state, background activity and child status.
Context that admits realityInline output caps, full content-addressed blobs, pruning, compaction, usage accounting, and durable reconnect replay.
Self-hosting loopHeadless runs, steering, approvals, interruption, and coordinated /reboot --build while developing Marlin inside Marlin.
Extension boundariesOwned TOML config, executable tools, MCP stdio, asynchronous hooks, and on-demand skills through one schema + approval path.
Permission foundationScrubbed tool environments, approval policy, protected-path rules, managed network filtering, and verified macOS shell sandboxing with safe fallback.
First child-agent sliceA synchronous task call creates a durable, attachable, read-only child with a budget, cancellation cascade, and structured result.
Provider choiceOpenRouter-first model catalog plus OpenAI-compatible and Anthropic provider paths, with per-session model and reasoning effort.

>> take it for a swim

$ 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.

>> development STATUS

trackwhere it isstatus
M0–M3agent loop, daemon, TUI, context engine, self-hosting rebootβœ… BUILT
M3.5permissions + secret boundaryπŸ”§ HARDENING
M4structured session multiplexerβœ… VERIFIED
M5MCP, executable tools, hooks, skillsπŸ• DOGFOODING
M6adurable child sessions + task primitive🐟 FIRST SLICE
M6 nextordered concurrent children + review councilsπŸ”¨ ACTIVE
laterworkspace snapshots/isolation + remote/PWA decisionsπŸ“‹ EVIDENCE FIRST

The source-of-truth details live in the milestones and the active M6 execution plan.

>> NOT shipped yet (honesty zone)

>> sign my guestbook... i mean, links

SOURCE on GH made w/ ZIG RELEASES ARCHITECTURE

one handcrafted HTML file. the fish rejected React.