Requirements
Nautelle has two parts, and they can run on the same machine or on different ones:
- The server (control plane): the web app, the API, PostgreSQL, Redis and a Caddy proxy, installed with one compose file.
- A runner on each machine where your repositories live and your agents work. It connects out to the server; the server never reaches into it.
Server
Section titled “Server”- A Linux host on amd64 (x86-64) or arm64. The published images are multi-arch.
- Docker with Docker Compose 2.24 or newer, and a user that can run
docker(root, or a member of thedockergroup). The install checks both. curlorwget, to fetch the install script.- Memory: the compose file caps the services at about 3 GB together (PostgreSQL 1 GB, API 1 GB, web 512 MB, Redis 256 MB, Caddy 128 MB). These are limits, not what an idle install uses; a host with 4 GB is comfortable.
- Network, depending on the exposure mode: nothing for local mode, outbound HTTPS for a Cloudflare tunnel, or ports 80 and 443 reachable from the internet for your own domain with HTTPS.
Runner machines
Section titled “Runner machines”- macOS (arm64 or x64) or Linux (arm64 or x64). Windows is not supported.
- git and tmux: every card and every fleet slot runs in its own worktree and tmux session.
- Claude Code, signed in on that machine; its credentials never leave it. Card workers and fleet slots run Claude Code today. Codex sessions on the machine are listed too; Codex workers are not built yet.
- The GitHub CLI (
gh) signed in withgh auth login, for pull requests and checks. - Your repositories cloned on the machine. Only GitHub repositories can be connected.
The runner itself is a single binary from Homebrew, or an npm package that needs Node. See Pair a runner.