Self-hosting
Prerequisites
What you need before starting the self-host setup.
Software
- Node 22 or newer —
node --versionshould printv22.xor higher. - pnpm 10 —
corepack enable && corepack prepare pnpm@10 --activate(Node ships Corepack since 16.13). - Docker with Docker Compose v2 —
docker compose versionshould succeed. - Git.
Accounts and access
- A GitHub organization where you can create a GitHub App and install it on the repos Sinatra should work in. A personal GitHub account works for evaluation.
- A Linear workspace with admin access — you'll create an OAuth app under workspace settings.
- An LLM account with API access — Anthropic (Claude) for direct Claude access, or OpenRouter for access to OpenAI (GPT-5, GPT-4o), Google (Gemini), Meta (Llama), and more. You'll need at least one. See LLM keys.
- (Optional) A Daytona account if you want managed cloud sandboxes. Free for evaluation. Skip if you'll use the local sandbox provider.
Network
-
A way to expose your API publicly so Linear and GitHub can deliver webhooks to it. Options, easiest → most production-ready:
cloudflared tunnel --url http://localhost:8080— free, random URL each run.ngrok http 8080 --domain=...— free tier with a stable subdomain.- A named cloudflared tunnel on a domain you own — free, stable URL.
- A real domain pointing at a load balancer in front of your API.
See Expose the API publicly for the full breakdown.
For laptop evaluation you can use a tunnel and skip a real domain entirely. For production, point a domain at your API ingress.
Disk and resources
The Compose stack runs Postgres, the Temporal dev server, the API, and the worker. On a laptop:
- ~2 GB RAM headroom while running.
- Sandbox storage: if you use the
localprovider, agent work happens in/tmp/sinatra-<id>/. Each run is a fresh clone of the target repo — budget a few hundred MB per concurrent run.daytonaruns in the cloud, no local disk impact.