maw is a command-line tool for running several AI agents at once, on one machine or across many. Each agent is woken in a tmux window; from a single terminal you send it tasks, watch its screen, bring it into another session, and see what the run cost. The same commands apply whether one node or twenty are involved.
Federation connects nodes over HTTP with HMAC-SHA256 signing. Peers are named in a configuration file, addresses take the form node:agent:window, and commands such as hey, peek, and ping behave the same against a remote node as a local one. A separate React frontend, maw-ui, reads the same API and renders the mesh in a browser, resolving which backend to show from a query parameter at runtime.
Beyond its own commands, maw is a plugin host. A plugin manifest can declare CLI commands, capabilities, APIs, lifecycle hooks for wake, serve, and sleep, and long-running served processes; plugins are installed from a registry or peer-to-peer from another node. Wake itself is treated as a lifecycle, with dry-run previews, recorded snapshots, and restore from a previous launch. The backend and CLI are TypeScript on Bun.
Features
- Agent orchestration in tmux: wake, sleep, and move agents between sessions and windows from one terminal
- Federation: signed HTTP messaging between nodes, with named peers and node:agent:window addressing
- Screen access: peek at an agent's pane on the local machine or a remote node
- Federation API: endpoints for node config, fleet config, a live event feed, peer status, and signed command relay
- Browser lens: the separate maw-ui frontend visualises the mesh and can point at any node's backend
- Plugin system: manifests add CLI commands, APIs, lifecycle hooks, and served UIs, from a registry or a peer
- Wake lifecycle: dry-run plans, wake snapshots, and restoring a session from a snapshot
- Team workspaces: a shared tmux session with a lead shell and one window per specialist agent
- Path resolution: config, state, data, and cache roots with a non-destructive migration to XDG locations
- Federation testing: a Docker harness runs two nodes on one network and probes the peer handshake both ways
