Install (daemon)
Download a release from GitHub Releases (or go build ./cmd/porthole in
daemon/), put porthole on your PATH, then:
porthole doctor # checks tmux, claude, codex, profiles
porthole install-hooks # Claude Code hooks + Codex notify (idempotent)
porthole serve # or install packaging/porthole.service / the launchd plist
porthole pair # scan the QR with the app
Config lives at ~/.config/porthole/config.toml (see
daemon/packaging/config.example.toml). Set workspaces to the parent
directory of your repos to start sessions from the phone.
Sessions are controllable when they run inside tmux. porthole wrap claude
starts one in the current directory; sessions started from the app are always
in tmux. Sessions outside tmux are shown read-only.
App
app/ is a Flutter project (Android, iOS; Linux desktop for development).
Build it yourself with flutter build apk / flutter build ios, or install
the free store builds. The app sells nothing. Background push notifications
go through a small relay; in the official builds that relay is open to
supporters of the project on Patreon, who sign in with a supporter key. Self-
builders can run their own relay (docs/self-host-relay.md). Everything
else is identical and needs no cloud at all.