Skip to content
rev0Docs

Install rev0

Four ways to get the board running. A, B and D need no third-party account. Whichever you pick, the first time you open the board a setup wizard walks you through the rest, including signing in Claude Code, Codex or Cursor.

git is mandatory. Not just to fetch the source: the board gives every ticket its own git worktree and branch, so an agent cannot run without it. The one-line installer will install git for you if it is missing (brew or xcode-select on macOS; apt, dnf, pacman or apk on Linux) and stops with instructions if it cannot.

Everything else it provisions too, so a bare machine is fine:

whyif missing
gitworktree per ticketinstalled for you, mandatory
Python 3.13+the board itselfuv downloads a managed one
Node 20+builds the UI, runs the agent CLIsinstalled for you
claude CLIthe default engineinstalled via npm

The installer installs only the Claude Code CLI. Codex and Cursor are optional; see Run Codex or Cursor instead of Claude Code.

Signing the CLI in is the one thing nobody can install for you. On your own machine the board does it for you: see Sign in an agent CLI. On a hosted board or in a container, where no browser can reach the CLI, run claude setup-token on your laptop and set the CLAUDE_CODE_OAUTH_TOKEN it prints, or mount ~/.claude.

Terminal window
curl -fsSL https://raw.githubusercontent.com/cpc-studio/rev0/main/install.sh | bash

Installs the toolchain, builds the UI, generates an access token, and starts the board. The token is saved as REV0_AUTH_TOKEN in the .env of the installer’s checkout, ~/rev0/.env; on its first start the board copies it into ~/.rev0/.env, the file it reads from then on (see The access token). Env knobs: TS_AUTHKEY=... (non-interactive Tailscale and HTTPS), INSTALL_SERVICE=1 (run as a systemd --user service), REV0_AUTH_TOKEN=... (bring your own token).

Terminal window
echo "REV0_AUTH_TOKEN=$(python3 -c 'import secrets;print(secrets.token_urlsafe(32))')" >> .env
docker compose up -d --build # then open http://localhost:8000

The templates in deploy/ build the shared Dockerfile: Render, Railway (deploy/railway.json), or Fly.io (fly deploy -c deploy/fly.toml).

No Python toolchain. Releases after 0.1.0 attach a desktop app and one-file builds for Apple Silicon macOS (darwin-arm64) and x86_64 Linux (linux-x86_64), plus a Windows app that runs the Linux build inside WSL 2. Those only: Intel Macs and arm64 Linux are not built, so use A there.

Needs macOS 13 or later on Apple Silicon.

  1. Download rev0-macos.dmg and open it.
  2. Drag rev0 onto Applications.
  3. Open rev0 from Applications. macOS asks once whether to open an app downloaded from the Internet; the app is signed and notarised by Apple, so that is the only prompt.

The board opens in rev0’s own window, already signed in: on first launch the app creates an access token (REV0_AUTH_TOKEN in ~/.rev0/.env) and uses it for you. You only need the token to open the board somewhere else, a browser or your phone: Settings > Security > Access token copies it. Closing the window keeps the board running, and its notifications keep arriving as macOS notifications; click rev0 in the Dock to bring the window back. Quit rev0 (Cmd+Q) asks first, then stops the board and any running agents. The menu bar icon has the same controls plus Open in browser, the version and Show logs. Links to other sites open in your default browser and downloads go to ~/Downloads. If a board you started from a terminal is already serving ~/.rev0 on port 8000, the app shows that one instead of starting a second, signs in with that board’s own token, and leaves it running when you quit.

The app reads your login shell’s PATH, so tools installed with Homebrew or nvm are found. If git or claude is missing it says so when it starts, and the menu lists any missing optional tool (node, npx, codex). Logs are in ~/Library/Logs/rev0.

x86_64 only, as a .deb (Debian, Ubuntu and derivatives) or an AppImage (any distro).

Terminal window
# Debian / Ubuntu
curl -fLO https://github.com/cpc-studio/rev0-releases/releases/latest/download/rev0-linux-amd64.deb
sudo apt install ./rev0-linux-amd64.deb
# Anywhere else
curl -fLO https://github.com/cpc-studio/rev0-releases/releases/latest/download/rev0-linux-x86_64.AppImage
chmod +x rev0-linux-x86_64.AppImage
./rev0-linux-x86_64.AppImage

The .deb adds rev0 to your applications menu and a rev0-desktop command; it never shadows the rev0 CLI. It works like the Mac app: its own window, signed in with the token it creates, the board keeps running when you close the window, and Quit rev0 (Ctrl+Q) asks first. The window looks the same too. Only its buttons differ: they follow your desktop’s own layout (stock GNOME shows just close).

  • The tray icon needs a desktop that shows tray icons. KDE, Cinnamon, XFCE and Ubuntu’s GNOME do; stock GNOME needs the AppIndicator extension. Without one, open rev0 again to bring back a closed window.
  • Logs are in ~/.local/state/rev0 ($XDG_STATE_HOME/rev0 if you set it).
  • Sandbox: the .deb installs an AppArmor profile so Chromium keeps its sandbox on Ubuntu 24.04 and later. The AppImage turns the sandbox off only on systems that do not allow it to run.

Needs Windows 10 22H2 or Windows 11 on x64, with WSL 2. The window, the tray icon and the installer are native Windows. The board itself, and every agent it runs, is the Linux build inside your WSL distro: rev0 does not run on Windows directly.

  1. Set up WSL once, if you have not: run wsl --install in PowerShell, restart Windows, then open Ubuntu from the Start menu and create your Linux user.
  2. Inside that Linux shell, install git and the claude CLI, and sign claude in.
  3. Download rev0-windows-setup.exe and run it. The installer is not signed yet, so Windows shows Windows protected your PC: choose More info, then Run anyway. It installs for your user only and asks for no administrator rights.

It works like the Mac app: its own window, signed in with the token it creates, the board keeps running when you close the window, and Quit rev0 (Ctrl+Q, or the tray icon) asks first.

  • Your repositories live in WSL. The board sees the Linux filesystem, so clone the repositories your agents work on inside WSL (under ~), not on the C: drive. Explorer shows them under \\wsl.localhost.
  • State and logs are in WSL too: ~/.rev0 and ~/.local/state/rev0 of your Linux user. Show logs in the tray menu opens the folder in Explorer.
  • Which distro: the app uses your default one (wsl --set-default changes it).
  • Upgrading: download the new installer and run it over the old one.
  • Windows on ARM is not supported: the Linux build is x86_64 only.

If the app says it could not start the board, see Troubleshooting.

Every release carries each build under a stable name, rev0-darwin-arm64 and rev0-linux-x86_64, so the latest one is always one URL away:

Terminal window
curl -fLO https://github.com/cpc-studio/rev0-releases/releases/latest/download/rev0-darwin-arm64
chmod +x rev0-darwin-arm64
./rev0-darwin-arm64 serve --with-runner

Swap in rev0-linux-x86_64 on Linux. The same builds are also attached under versioned names (rev0-<version>-darwin-arm64, rev0-<version>-macos.dmg, rev0-<version>-linux-amd64.deb, …), for pinning a release. The macOS binary is signed and notarised like the app, so Gatekeeper accepts it even when a browser downloaded it; it still needs the chmod +x.

Verify the download against the release’s SHA256SUMS, which lists every asset: sha256sum -c --ignore-missing SHA256SUMS (shasum -a 256 -c --ignore-missing SHA256SUMS on macOS).

The app and the binary remove the Python toolchain requirement and nothing else. The board drives external CLIs that cannot be bundled, so you still need git, node and npx, and at least one agent CLI (claude, codex or Cursor’s agent) installed and signed in, plus uv if the quality gate should measure coverage in a Python repo. A installs all of that for you.

  • State lives in ~/.rev0/, for the app and the binary alike: the database, uploads, scratch workspaces, plugin clones, background jobs, and a .env you can create there. Move or replace either freely; override the complete root with REV0_DATA_ROOT=/path/to/data. See Back up and restore the board.
  • No local speech-to-text. faster-whisper is left out to keep the download small; run from source for voice input.
  • Plugin hooks can only import what ships inside the build. A hook that needs another package needs a source install. Plugins themselves, UI surfaces included, load fine.
Terminal window
git clone https://github.com/cpc-studio/rev0.git
cd rev0
uv sync

One command brings up the database file, board UI, API, and the runner:

Terminal window
uv run -m rev0.cli serve --with-runner

Open http://127.0.0.1:8000. Without the runner (manual agent sessions only), drop --with-runner. To run the runner separately: uv run -m rev0.cli run.

Every setting the board reads from the environment is listed in Configuration.

The first time you open a new board, the setup wizard, Welcome to rev0, opens before anything else. In four or five short screens it asks your name and a name for the board, lets you pick a profile (see Choose a profile), installs and signs in the AI engines you want, and shows how a request goes from asking to result. Then the Getting started coach shows you around the board.

The board does not ask for notification permission on load. It asks the first time you open the bell, or when you tick Enable notifications on this device in Settings > Workspace > Browser notifications.

  1. Open Settings > Agents (the wizard’s AI engines screen has a shorter form of the same controls).
  2. In Claude auth, Codex auth or Cursor auth, click Sign in.
  3. Click the Open the … authorize page link, and approve in the page that opens.

Result: on the board’s own machine the panel finishes by itself and reads Signed in as your account. From another device, you land on a localhost page that cannot load: paste that whole address (or, for Claude, the code it shows) into the panel and click Submit. No terminal is needed, and a login made in a terminal (claude, codex login, agent login) counts too.

A board with REV0_AUTH_TOKEN set asks for it once per browser: paste it where it says Paste your REV0_AUTH_TOKEN and click Sign in. The board reads the token from its environment first, then from ~/.rev0/.env. The installer, the desktop app and a Docker .env all set one for you. On a board you are signed in to, Settings > Security > Access token copies it for another browser or your phone.

With INSTALL_SERVICE=1, the service loads ~/rev0/.env as its environment, which wins over ~/.rev0/.env: if you change the token, change it in both files, then restart the board.

Every 6 hours while the board is open, rev0 checks whether a newer release is out. When one is, you get one notification for that version, and Settings > Advanced > Updates shows the changelog and how to take it. Nothing is ever installed without a click.

  • Binary (D): Download and upgrade downloads the release’s build for your platform, checks it against the release’s checksum, checks that it starts (on macOS, also that it is signed by the same Apple developer as the one you run), swaps it in and restarts the board. Runs in progress are interrupted and resume after the restart. The previous binary is kept next to the new one with .prev added to its name; to roll back, stop the board and move it back, for example mv rev0-darwin-arm64.prev rev0-darwin-arm64. If the board cannot write to the folder the binary lives in (for example /usr/local/bin), the section shows the commands to run instead.
  • Mac app (D): the section shows a command that opens the new rev0-macos.dmg; drag rev0 onto Applications again to replace it. The app never patches itself in place, which would break its signature.
  • Linux app (D): the section shows a command that downloads the new AppImage over the one you run, or, for the .deb, downloads rev0-linux-amd64.deb and installs it with apt. On a platform with no published app, it points you to the releases page instead.
  • One-line install or source (A): the section shows the pull, sync and UI build command for your checkout, then a Restart server button.
  • Docker (B): no image is published, so the section shows git pull && docker compose up -d --build.

The check is one anonymous download of latest.json from the public rev0-releases repository, which holds the builds and nothing else; nothing leaves the machine. REV0_UPDATE_URL points the check at another copy of that file. Turn it off with the switch in the Updates section, or with REV0_UPDATE_CHECK=0.

The agent CLIs are kept up to date separately, by the Auto-update the agent CLIs setting; see Run Codex or Cursor instead of Claude Code.