Part of @sahil87's open source toolkit — see all projects there.
Web-based agent orchestration dashboard. Monitor and interact with tmux sessions from the browser — session overview, live terminal windows, and fab-kit integration for change tracking.
brew tap sahil87/tap
brew install rkTo upgrade later, run rk update — it pulls the latest version via Homebrew and restarts the daemon so the new binary takes effect immediately.
rk serve -d # start daemon (default :3000)
rk serve --restart # restart daemon (idempotent)
rk serve --stop # graceful shutdown
rk update # upgrade via Homebrew and restart- Node.js (v20+)
- pnpm
- tmux installed and on your
PATH - just task runner
- Go (1.22+)
- air Go live-reload for development
- direnv for automatic
.envloading via.envrc
brew install node pnpm tmux just direnv go
go install github.com/air-verse/air@latestRun just doctor to verify all dependencies are installed.
just doctor
just setup
just dev # watch mode
# OR
just prod # Runs from built binarySome browser features (e.g., copy to clipboard) require a secure context and only work over HTTPS. Accessing rk from other machines on your tailnet also requires HTTPS. To enable it:
- Enable HTTPS at DNS > HTTPS Certificates.
- Run
tailscale serve --bg http://localhost:3000. - Open
https://<machine>.<tailnet>.ts.net.
For custom hostnames, Funnel, and other options, see the Tailscale guide.
rk runs as a daemon in a dedicated tmux session. Lifecycle is managed via CLI flags on rk serve:
rk serve -d— start daemon in a tmux session (rk-daemonserver)rk serve --restart— idempotent restart (stop existing if running, start new)rk serve --stop— graceful shutdown via SIGINT
Key properties:
- Tmux-based — daemon runs in a dedicated tmux server (
rk-daemon), separate from agent sessions (runkit) - Kill-and-restart — no polling loop or signal files; restart sends C-c then starts the new binary
- Idempotent —
--restartworks whether or not a daemon is currently running - tmux-independent — the daemon server never touches agent tmux sessions; agent sessions survive restarts unaffected


