Install
Install the Caprock app for Claude Code.
Every coding agent you run, in one window — the claude sessions from your own terminal too. Who is waiting on you, who is stuck, how close each plan is to its limit, across every agent, in one fast app. Free. Then each pull request to release and what it cost, at list price. Apache-2.0, local-first, no account.
Notarized by Apple. One file for Apple silicon and Intel, macOS 13 or later.
Or run it yourself:
Paste in Terminal: it installs Caprock and opens it.Or with Homebrew: brew install --cask dspv/tap/caprock-app
Install the Caprock desktop app for me. It is open source (Apache-2.0), a local app for my coding agents: https://github.com/dspv/caprock What the install does and how to remove it: https://github.com/dspv/caprock/blob/master/docs/install-agent.md Run the install script for my system: https://caprock.dev/mac.sh, /win.ps1 or /linux.sh. Read it before you run it if you like. Leave my Claude Code settings alone; the app asks me itself. Tell me when it's open.
No desktop, or a server? Install it without the app.
1macOS
One universal file for Apple silicon and Intel, macOS 13 or later: Caprock-macOS.dmg. Open it and drag Caprock to Applications. The app is signed with an Apple Developer ID and notarized by Apple.
Or in Terminal: it downloads the same file, puts the app in Applications and opens it; run it again to update. Read the script.
Or with Homebrew:
The first launch
The first time you open it, macOS asks whether you are sure you want to open an app downloaded from the internet: click Open, once. Notarized means Apple checked the app for malicious software and found none. Apple's page.
2Windows
Download the installer, Windows 10 22H2 or later, x64: Caprock-Windows-setup.exe. It installs for your user only, with no administrator prompt. The installer is not code-signed yet, so the first time SmartScreen may say Windows protected your PC: click More info, then Run anyway. It asks once.
Or by hand, with no SmartScreen question: paste this into PowerShell. It downloads the same installer, installs Caprock for your user and opens it; run it again to update. Read the script.
3Linux
By hand, no sudo: paste this into a terminal. It puts the AppImage in your home directory, adds Caprock to your applications menu and opens it, and runs without FUSE 2 where that is missing. Inside WSL it points you to the Windows app instead; CAPROCK_WSL=1 installs the Linux one anyway. Read the script.
Or a download, x64, with WebKitGTK 4.1 (Ubuntu 22.04, Debian 12, Fedora 38 or newer): AppImage, .deb or .rpm. The .deb and .rpm pull in WebKitGTK themselves.
# AppImage chmod +x Caprock-Linux.AppImage ./Caprock-Linux.AppImage # Debian, Ubuntu sudo apt install ./Caprock-Linux.deb # Fedora, RHEL sudo dnf install ./Caprock-Linux.rpm
On first launch, on any system, the app uses a Caprock already running or asks once and starts its own. Quitting the app leaves your sessions running.
4What Caprock installs
The app, the daemon inside it — the background service that records your sessions (caprock and caprock-hook) — and one directory of its own. Nothing in your Claude Code settings changes unless you say yes.
The desktop app
Caprock in Applications (or your Start menu, or the AppImage) with the daemon inside. On first launch it uses a daemon already running, starts the one Homebrew installed (the caprock formula) if there is one, or starts its own. The screens it serves are the same ones your phone opens once paired.A data directory
Its SQLite database, config and logs. On macOS that is ~/Library/Application Support/caprock. This directory holds your Caprock history.~/.claude/settings.json, twice, with your consent
The hook shim, for live activity, and the status line, for the plan windows on the Cost screen. Say no to either. Both edits back the file up first; caprock hooks uninstall and caprock statusline uninstall remove them.Network features are opt-in
The daemon binds 127.0.0.1. No account, no telemetry. Nothing reaches the network unless you switch it on: a release check and the app's update download, the GitHub connection, a paired phone, Gemini on your own key, a weekly report and phone alerts to your own Telegram bot. Three things go to caprock.dev, each only when you press the button, after the screen says what goes: a survey answer, a bug report, and the week card you chose to post. Each is listed where it is switched on, with what it sends.
5Without the app (headless, servers, CI)
The daemon on its own, with the same screens in a browser at 127.0.0.1:22776: for a machine with no desktop, a server or CI. Check that Claude Code is there first — Caprock watches it, it does not replace it:
claude --version
Then install it:
Other ways to install
Have Go? go install github.com/dspv/caprock/cmd/caprock@latest — the screens are embedded, so there is no Node build.
Or download caprock and caprock-hook for your OS/arch from GitHub Releases, or build from source (Go 1.26, Node 22):
git clone https://github.com/dspv/caprock && cd caprock make ui && make build # → ./bin/caprock, ./bin/caprock-hook
Coming from the old Python caprock?
The earlier Python tool of the same name, on PyPI, will shadow this one. Uninstall it first, then check which caprock prints nothing. Its data in ~/.caprock is separate: Caprock does not read or need it.
pipx uninstall caprock # or: pip uninstall -y caprock which caprock # should now print nothing
Caprock imports the Claude Code transcripts still on disk when it first runs.
Then start it:
On first run it asks before each of its two edits to ~/.claude/settings.json:
The hook shim
Shows session activity as it happens. Without the hook, Caprock reads history and live sessions from their transcripts, a few seconds behind. Remove it with caprock hooks uninstall.The status line
Sets statusLine.command to caprock statusline so the Cost screen can show your plan-limit windows (5h/7d, Pro/Max). If you already have your own, Caprock leaves it alone and does not ask. Add or remove it later with caprock statusline install / uninstall. What the line shows →
Then run claude in any terminal; the session appears on the Home screen.
claude # any terminal — Caprock sees it caprock status # daemon, hooks, ingest, pricing in force caprock down # stop the daemon; your data (SQLite) is kept
The daemon does not restart after a reboot on its own. A service starts it at login: a LaunchAgent on macOS, a systemd user unit on Linux, a Startup-folder script on Windows. No root, nothing outside your home.
caprock service install # start at login, survives a reboot caprock service status # is autostart on, and which file defines it caprock service uninstall # remove it; the daemon and your data are untouched
6Control & run tasks (optional)
In the app, New agent (⇧⌘N) starts Claude Code, Codex, OpenCode, Gemini CLI, Hermes Agent or Grok Build CLI — whichever is installed — in a terminal tab you can type into or stop, and continues a Claude Code, Codex or OpenCode session after it ends. The dashboard in a browser has the same New session.
The Tasks screen runs queued tasks unattended behind a test gate. It is the one part of Caprock that starts sessions on its own, so it is off until you turn it on. Press Turn on the task runner (it confirms first, naming the queue directory and the repository), write a task, then press Start orchestrator. Each task lists the commands that must pass. Caprock runs one session per task in its own git worktree, then runs those commands itself. A task is done only when they pass.
Before you turn it on: those commands are not sandboxed. They run in a real checkout of your repository, with your privileges, unattended, up to five minutes each — go build ./... leaves a binary behind as it would in your own tree. Use it for independent tasks only: nothing merges branches, and nothing notices two sessions editing the same file. Details on the docs page.
7Update, or remove it
The app updates itself. When a newer Caprock is out, a card in the corner offers Update and restart, and the status strip keeps an Update button: it downloads while you work, checks it against Caprock's update key, installs and restarts, and your sessions keep running, with the same tabs and splits. On its first launch the app asks once whether to check for updates automatically; either way, Check for Updates… is in the app menu, the tray menu and the command palette.
This covers the macOS app (from the .dmg or Homebrew — move it to Applications first), the Windows installer and the Linux AppImage. A Homebrew cask install updates itself, and brew upgrade leaves it alone. The .deb and .rpm packages belong to your package manager: download the new one from the release page and install it the same way.
To remove the app, move it to the Trash (Settings → Apps on Windows, apt remove caprock or dnf remove caprock on Linux); your data stays.
The daemon alone, by the command matching how you installed it:
brew update && brew upgrade caprock # Homebrew scoop update caprock # Scoop go install github.com/dspv/caprock/cmd/caprock@latest # go install
Keep the brew update: brew upgrade refreshes a tap's local clone only through auto-update, at most once a day, so without it Homebrew can report already installed for a release out for hours.
Then restart so the new binary runs. caprock down keeps your database, so your history stays:
caprock down && caprock up
To remove it: caprock hooks uninstall and caprock statusline uninstall take Caprock back out of ~/.claude/settings.json, caprock service uninstall removes autostart, and deleting the data directory removes everything else.
Full source, issues and the roadmap are on GitHub.
See every coding agent you run.
Who is waiting on you, who is stuck, how close the limit is. Free and open source; nothing leaves your machine.
Notarized by Apple. One file for Apple silicon and Intel, macOS 13 or later.
Or run it yourself:
Paste in Terminal: it installs Caprock and opens it.Or with Homebrew: brew install --cask dspv/tap/caprock-app