CONTRIBUTING.md at the root of the repository.
Run it from source
You need Node 22, pnpm 8 (corepack enable), Docker for the local Supabase, and an OpenRouter key.
1
Install and start Supabase
2
Configure the app
.env, set NEXT_PUBLIC_APP_URL=http://localhost:3050, NEXT_PUBLIC_SUPABASE_URL=http://localhost:54421, the two keys from npx supabase status, and OPENROUTER_API_KEY. Then generate the secrets and hand the file to the app:RERUN_ENGINE_URL gives the engine below to the first workspace that needs one.3
Start the app
4
Start the engine
In another terminal:In
apps/engine/.env, set RERUN_API_KEY to the RERUN_ENGINE_API_KEY of .env, and RERUN_HUB_BASE_URL=http://localhost:3050. Then:pnpm dev:docs and open http://localhost:3333.
Checks
The code
CLAUDE.md holds the conventions of the codebase, and is what coding agents read. Three of them matter most:
- Supabase access goes through the typed helpers for reads, and every write states its payload type.
- Responsive from the first version: every screen works on a phone, a tablet and a desktop.
- Engine data-dir migrations: anything that changes what the engine keeps on disk is a new numbered step at the end of its ladder, never an edit of a shipped one. Details in
apps/engine/README.md.
pnpm db:new <name> creates the file, and pnpm db:reset replays every migration and the seed on the local stack.
apps/ui/cloud/ is the seam where Rerun Cloud plugs in billing, paid apps, emails and its machine pool. In this repository it holds the self-hosted behaviour. Pull requests that change what it exports are unlikely to be merged.
Pull requests
- Open an issue first for anything bigger than a fix, so you agree on the direction before writing code.
- Keep a pull request to one change, with tests where the code has them.
- Sign the CLA when the bot asks: once, for all your contributions.
apps/ui/cloud/, a dependency with a license incompatible with the AGPL, or a feature that only makes sense for one deployment.