# Spool (Claude Code) Spool is an open-source, [[Self-hosting|self-hosted]] tool that keeps a fleet of persistent [[Claude Code]] sessions alive. It calls them "loops". You talk to them through a web control room, Telegram or Slack, and they talk to each other. The tagline: "Your Claude Code loops, working together and keeping you in the conversation." It's written in [[Go]] and maintained on GitHub by enes-alatas. Why does it exist? Once you run several Claude Code terminals in parallel, YOU become the message bus. You copy a result from one session into another, check which one is waiting for an answer, and restart the ones that died. Spool takes that relay job off your hands: the loops coordinate among themselves and come to you when they need a decision. You spend your time deciding what they should work on and reviewing what they produce. How a loop runs: - **Plain `claude` CLI underneath**: each loop is a `claude` subprocess speaking stream-json over stdin/stdout. It uses your normal Claude Code login, plan and session limits. No API key, no SDK - **Sleeps when idle**: the process exits and resumes later with full context, so a waiting loop costs nothing - **Three ways to wake up**: a tick (every 30 minutes by default), any message sent to it, or a time the loop picks itself with a `[next-wake: 45m]` trailer, clamped to bounds you set. Paused loops queue their mail How they work together: - Loops send explicitly addressed messages to a shared fleet channel or to private conversations - `@mention` routing works from the web UI, from Telegram or Slack, and from another loop's message - Loop-to-loop chains are "storm-guarded", so two loops can't keep pinging each other forever The control room streams each loop's output live, shows its schedule and the cost of every turn and every day, and lets you pause, wake or kill any loop. The plan guardrails protect your subscription limits: Spool reads your plan's 5-hour and 7-day usage windows from the loops' own streams. Past 90% of either window (the default), every loop sleeps until that window resets. Messages wait and nothing gets lost; a "Resume now" button lifts the pause early. On the security side: - **Contained by default**: each loop runs in its own [[Docker]] container (images `spool-workstation` and `spool-egress`) with an egress allowlist. The only route back to your machine is one hub port that serves the loops' MCP endpoint - **Permission prompts are bypassed** inside loops (see [[Claude Code Permissions]]), which is exactly why containment matters. Without Docker, Spool refuses to start. `--runtime bare` is the opt-in escape hatch: each loop then runs as a plain process under your account, with your files and your network, badged "uncontained" - **Sender allowlist**: only users you've added and linked can reach the loops. Anyone else messaging your bots is ignored without a reply - **Secrets sealed** under `hub.key` in the data directory (bot tokens, connection secrets); back it up apart from the database - **Isolation per loop** through [[Git Worktree|git worktrees]], plus a written threat model (`docs/THREAT-MODEL.md`) and a containment doc that also says what containment does NOT do Getting started requires Linux, macOS or WSL2, with Docker, git, Go 1.25+, Node 20.19+ (or 22.12+) and Claude Code on a Claude subscription. You clone the repo, run `make build image`, then `./bin/spool`, and open http://127.0.0.1:8080. The first start prints a one-time password for the `admin` user. A setup page then walks you through three steps: sign in with Claude, create your first loop (name and mission), attach a Telegram or Slack bot. There are no prebuilt binaries yet; releases are planned after v0.5.1. The project is [[Apache 2.0 License|Apache-2.0]] and pre-1.0. The repository was created in August 2026 and had about 39 stars and 814 commits by mid-October 2026. Spool is built by Spool. Four loops running on it work in the repo's issues and PRs, commits are co-authored by the model that wrote them, and every change goes through a pull request that has to pass CI before the operator reviews and merges it. That's [[Human-in-the-Loop]] applied to the tool's own development. I see Spool as a "Claude Code as a daemon" pattern: an always-on agent team you can reach from your phone. It fills a gap between Anthropic's own features. [[Claude Code Channels]] pushes chat messages into ONE open session, [[Claude Code Remote Control]] mirrors one local session to another device, and [[Claude Code Routines]] run on Anthropic's cloud. Spool keeps a whole team running on your own machine, and the members can talk to each other. It's close in spirit to [[Paperclip (AI Agent Orchestration)|Paperclip]], but much smaller: no org chart, no budgets per agent, just loops, a channel and you. It's also a nice illustration of [[Loop Engineering]]: you write the mission and the wake rules once, and the loop runs. One thing to keep in mind though: the subscription. Because Spool drives the official `claude` CLI, it stays clear of Anthropic's block on subscription sign-ins in third-party harnesses (details in [[Claude Code]]). But a fleet waking every 30 minutes around the clock on a consumer Pro or Max plan is heavy, unattended usage, and the usage windows exist to limit exactly that. The plan guardrails are Spool's answer to it. Check Anthropic's current terms before you leave background loops running on a personal plan. ## References - GitHub repository and README: https://github.com/enes-alatas/spool - Containment (what contains a loop, and what doesn't): https://github.com/enes-alatas/spool/blob/main/docs/CONTAINMENT.md - Threat model: https://github.com/enes-alatas/spool/blob/main/docs/THREAT-MODEL.md - Vision and milestone ladder: https://github.com/enes-alatas/spool/blob/main/docs/VISION.md - Operations (server install, backups, upgrades): https://github.com/enes-alatas/spool/blob/main/docs/OPERATIONS.md ## Related - [[AI Agent Orchestration]] - [[Multi-Agent System (MAS)]] - [[Agentic loops]] - [[Paperclip (AI Agent Orchestration)]] - [[Multica]] - [[Claude Code Agent Teams]] - [[Claude Code Channels]] - [[Claude Code Remote Control]] - [[Docker Sandboxes]]