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.
What you need
Section titled “What you need”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:
| why | if missing | |
|---|---|---|
| git | worktree per ticket | installed for you, mandatory |
| Python 3.13+ | the board itself | uv downloads a managed one |
| Node 20+ | builds the UI, runs the agent CLIs | installed for you |
claude CLI | the default engine | installed 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.
A. One-line install
Section titled “A. One-line install”curl -fsSL https://raw.githubusercontent.com/cpc-studio/rev0/main/install.sh | bashInstalls 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).
B. Docker
Section titled “B. Docker”echo "REV0_AUTH_TOKEN=$(python3 -c 'import secrets;print(secrets.token_urlsafe(32))')" >> .envdocker compose up -d --build # then open http://localhost:8000C. Hosted
Section titled “C. Hosted”The templates in deploy/ build the shared Dockerfile: Render, Railway
(deploy/railway.json), or Fly.io (fly deploy -c deploy/fly.toml).
D. Download the desktop app or a binary
Section titled “D. Download the desktop app or a binary”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.
On a Mac: the app
Section titled “On a Mac: the app”Needs macOS 13 or later on Apple Silicon.
- Download
rev0-macos.dmgand open it. - Drag rev0 onto Applications.
- 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.
On Linux: the app
Section titled “On Linux: the app”x86_64 only, as a .deb (Debian, Ubuntu and derivatives) or an AppImage (any distro).
# Debian / Ubuntucurl -fLO https://github.com/cpc-studio/rev0-releases/releases/latest/download/rev0-linux-amd64.debsudo apt install ./rev0-linux-amd64.deb
# Anywhere elsecurl -fLO https://github.com/cpc-studio/rev0-releases/releases/latest/download/rev0-linux-x86_64.AppImagechmod +x rev0-linux-x86_64.AppImage./rev0-linux-x86_64.AppImageThe .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/rev0if you set it). - Sandbox: the
.debinstalls 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.
On Windows: the app
Section titled “On Windows: the app”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.
- Set up WSL once, if you have not: run
wsl --installin PowerShell, restart Windows, then open Ubuntu from the Start menu and create your Linux user. - Inside that Linux shell, install
gitand theclaudeCLI, and signclaudein. - Download
rev0-windows-setup.exeand 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 theC:drive. Explorer shows them under\\wsl.localhost. - State and logs are in WSL too:
~/.rev0and~/.local/state/rev0of your Linux user. Show logs in the tray menu opens the folder in Explorer. - Which distro: the app uses your default one (
wsl --set-defaultchanges 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.
In a terminal: the binary
Section titled “In a terminal: the binary”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:
curl -fLO https://github.com/cpc-studio/rev0-releases/releases/latest/download/rev0-darwin-arm64chmod +x rev0-darwin-arm64./rev0-darwin-arm64 serve --with-runnerSwap 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.envyou can create there. Move or replace either freely; override the complete root withREV0_DATA_ROOT=/path/to/data. See Back up and restore the board. - No local speech-to-text.
faster-whisperis 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.
From source, for development
Section titled “From source, for development”git clone https://github.com/cpc-studio/rev0.gitcd rev0uv syncOne command brings up the database file, board UI, API, and the runner:
uv run -m rev0.cli serve --with-runnerOpen 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.
First launch
Section titled “First launch”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.
Sign in an agent CLI
Section titled “Sign in an agent CLI”- Open Settings > Agents (the wizard’s AI engines screen has a shorter form of the same controls).
- In Claude auth, Codex auth or Cursor auth, click Sign in.
- 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.
The access token
Section titled “The access token”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.
Updating
Section titled “Updating”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
.prevadded to its name; to roll back, stop the board and move it back, for examplemv 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.deband 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.
- Your first finished ticket takes a fresh board to a merged branch.
- Fix common problems covers a refused start, sign in errors and where the logs are.