Start
Install
Install the Pilothouse binary on macOS or Linux with the install script or Homebrew, verify the checksum, set it up as a user service, and uninstall cleanly.
Pilothouse is one static binary. There is no runtime to install and nothing to sign up for.
| Supported | |
|---|---|
| Operating systems | macOS, Linux |
| Architectures | amd64 (x86_64), arm64 (Apple Silicon, Graviton, Raspberry Pi 4/5) |
| Agents | Claude Code, Codex |
| Windows | Not yet — on the roadmap |
Install script
curl -fsSL https://pilothouse.dev/install.sh | sh
The script:
- detects your OS and architecture,
- downloads the latest release archive and
checksums.txtfrom GitHub Releases, - verifies the archive’s SHA-256 checksum and stops if it doesn’t match,
- installs
pilothouseto/usr/local/binif that directory is writable, otherwise to~/.local/bin(and tells you if that isn’t on yourPATH).
It never runs sudo for you. Read it first if you like — it’s short: pilothouse.dev/install.sh.
Options
| Variable | Effect |
|---|---|
PILOTHOUSE_VERSION |
Install a specific version, e.g. 0.1.0 or v0.1.0. Default: latest. |
PILOTHOUSE_INSTALL_DIR |
Install somewhere else, e.g. $HOME/bin. |
curl -fsSL https://pilothouse.dev/install.sh | PILOTHOUSE_VERSION=0.1.0 PILOTHOUSE_INSTALL_DIR="$HOME/bin" sh
Homebrew
brew install xasdta/tap/pilothouse
Upgrade with brew upgrade pilothouse.
Manual download
Every release has archives named pilothouse_<version>_<os>_<arch>.tar.gz (for example pilothouse_0.1.0_linux_arm64.tar.gz) and a checksums.txt. To verify by hand:
grep pilothouse_0.1.0_linux_arm64.tar.gz checksums.txt | sha256sum -c -
# macOS: shasum -a 256 -c
Set up
pilothouse setup
This installs the agent hooks, installs and starts the user service, and runs the same checks as pilothouse doctor. You can do each part separately:
pilothouse hooks install # Claude Code + Codex hooks (merged, backed up)
pilothouse service --help # manage the launchd / systemd user service
pilothouse doctor # check everything, print what to fix
Hook installation merges into the agent’s settings and never removes hooks you already have. Before changing ~/.claude/settings.json Pilothouse writes a backup next to it (settings.json.pilothouse-bak-<timestamp>). Pilothouse’s own entries are the ones whose command contains pilothouse hook.
Running agents as a service on Linux
The daemon runs as a systemd user service. On a headless server where you log in over SSH, enable lingering so it keeps running after you log out:
loginctl enable-linger "$USER"
Where things live
| Path | What |
|---|---|
~/.pilothouse/config.yaml |
Configuration (reference) |
~/.pilothouse/policy.yaml |
Your rules |
~/.pilothouse/trusted-repos.yaml |
Repos whose allow rules you trust |
~/.pilothouse/pilothouse.db |
Event log (SQLite) |
~/.pilothouse/logs/ |
Daemon and holder logs |
The data directory is created with mode 0700; the database, keys and config are 0600. Set PILOTHOUSE_HOME to move it.
Updating
Run the install script again, or brew upgrade pilothouse. Pilothouse checks for new versions once a day with an anonymous request (version, OS, architecture and a random ID that rotates monthly). Turn that off with update_check: false in config.yaml or PILOTHOUSE_NO_UPDATE_CHECK=1.
Uninstall
pilothouse hooks uninstall # removes only Pilothouse's hook entries
pilothouse stop
Then remove the user service (pilothouse service --help shows how), delete the binary (which pilothouse), and delete ~/.pilothouse if you don’t want to keep your rules and history.
Found a mistake? Open an issue.