Before you start
- Docker with Docker Compose. Give Docker at least 6 GB of memory: the app build needs it, and 60 GB of disk: the images and the build cache take about 40.
- Node.js 22, for
npx supabaseand the setup check. - Git.
- On a server: a domain for the app, one for the engine, and a reverse proxy for HTTPS. See On a server.
- An OpenRouter key from openrouter.ai/keys. It runs the Foreman and the default models of every coworker.
1. Get the code
2. Set up Supabase
Pick one. The first is simpler to keep running, the second is the full open source stack on your own server, the third is for trying Rerun on your own computer.- A project on supabase.com (recommended)
- Open source Supabase on your server
- Everything on this computer
- Create a free project on supabase.com. Note the database password you choose.
- In Project settings > API keys, copy the project URL, the publishable key (anon key on older projects) and the secret key (service_role on older projects).
- Apply the schema and the seed from your clone.
linkasks for the database password:
.supabase.co in the project URL.- In Authentication > Sign In / Providers, turn on Allow anonymous sign-ins and keep Confirm email on. A visitor lands on the board as an anonymous user, and signing up turns that user into an account.
- In Authentication > Email Templates, paste the template below into Magic Link, Confirm signup and Change Email Address. Rerun signs people in with a 6-digit code, and Supabase’s default templates only carry a link.
- In Authentication > URL Configuration, set the Site URL to the address people open, the same as
NEXT_PUBLIC_APP_URLbelow.
Email template
supabase/templates/magic_link.html. The template says 15 minutes: set Email OTP Expiration to 900 seconds in the email provider settings to match, and keep Email OTP Length at 6.Fill .env with what you copied:.env
3. Fill the rest of .env
Three more lines:
.env
NEXT_PUBLIC_APP_URL is the address people type in their browser, without a trailing slash. Keep http://localhost:3000 to try Rerun on this machine. For a team, use the address they will reach it at, for example https://rerun.example.com. ADMIN_EMAILS is baked in by the build, so set it now. Every other variable is optional: see Configuration.
4. Run the check
RERUN_ENGINE_API_KEY, FOREMAN_HUB_TOKEN_SECRET, BOARD_IMAGE_SECRET), checks the required values, and prints the exact command to start. It stops with a plain message on anything only you can fill, and warns when OPENROUTER_API_KEY is empty.
5. Start Rerun
- Supabase on supabase.com or your server
- Supabase on this computer
6. Check it runs
On a server
On your own computer, skip this section. On a server, people reach Rerun over HTTPS and nothing else stays open. Set the engine’s address in.env, before the build:
.env
Caddyfile
nftables rule does the same. Replace eth0 with your network interface:
/etc/nftables.conf
nft -f /etc/nftables.conf and systemctl enable nftables.
7. Sign in
Open http://localhost:3000, or yourNEXT_PUBLIC_APP_URL. You land on the board with a sign-in dialog on top.
Enter your email. A 6-digit code arrives, in your inbox or in Mailpit, and you type it in. There is no phone sign-in, and no Google or Apple button unless you configure them.
The emails in ADMIN_EMAILS see the admin switches in the app. See Administration.
8. Meet your first coworker
The Foreman, Rerun’s guide, greets you and asks what you need done. Answer in plain words: it plans a team and builds it. You can also click the board to create a coworker yourself and describe its job in the chat. The first coworker you place on the board needs a machine to run on. Your first workspace takes the engine that docker compose started, with nothing to configure. The second workspace, and every one after it, needs a server of its own. From here, the coworker works exactly as on Rerun Cloud: see the Quickstart from step 4.Updating
npx supabase db push for a project on supabase.com, the same command with --yes --db-url and the address from Install for open source Supabase, or npx supabase migration up for the local stack.
The values starting with
NEXT_PUBLIC_ are baked into the app when it is built. So is ADMIN_EMAILS. After changing one, rebuild with docker compose up -d --build. Other values only need docker compose up -d.