# Arboretum > A self-hosted web dashboard for your git worktrees and the Claude Code sessions running on them — from any device. **Status: early development (pre-MVP).** The design study and architecture are complete; implementation is in progress. Not usable yet. ## The problem Working with AI coding agents changed how we use git: one feature = one worktree = one Claude Code session, several of them in parallel. But the tooling didn't follow: - `git worktree list` across multiple repos is a chore, worktrees pile up, each needs its `node_modules` and `.env`. - Claude Code sessions are scattered: some running in terminals, some resumable from history, with no consolidated view of *which one is waiting for your input*. - When you step away from your desk, a session blocked on a permission prompt stays blocked. ## What Arboretum does A single Node.js daemon you run on your dev machine (`npx git-arboretum`), serving a web UI usable from your desktop, phone or tablet: - **Worktree-first, multi-repo dashboard** — every worktree of every registered repo, with its git state (branch, ahead/behind, dirty files) *and* the state of its Claude Code session (busy / waiting for input / idle / resumable). - **Full worktree lifecycle** — create (with per-repo post-create hooks: `npm ci`, copy `.env`…), adopt worktrees created by hand, delete with guardrails, prune orphans. - **Session discovery & resume** — sessions you launched in your own terminal show up automatically; resume dead ones, observe or fork live ones. Never corrupts a live session. - **Web terminal** — full xterm.js terminal to every managed session, surviving browser disconnects. - **Supervision from your phone** *(post-MVP)* — PWA with push notifications when a session needs you, approve/deny without opening a terminal. ## What makes it different | | Arboretum | GitKraken Agent Mode / Conductor / Nimbalyst | Happy / CloudCLI | Anthropic Remote Control | |---|---|---|---|---| | Web UI, any device | ✅ | ❌ desktop apps | ✅ | ✅ | | Visual worktree management (multi-repo) | ✅ | ✅ (single repo, desktop) | ❌ | ❌ | | Discovers & resumes *existing* terminal sessions | ✅ | ❌ | partial | ❌ | | 100% self-hosted — zero traffic through third-party servers | ✅ | ✅ | relay server | ❌ relayed through Anthropic | | Linux-first | ✅ | varies | ✅ | Desktop app has no Linux build | | Open source | MIT | ❌ / partial | MIT / AGPL | ❌ | Anthropic's Remote Control is great at piloting *one* session from your phone. Arboretum is the layer it doesn't provide: the consolidated, self-hosted board of all your worktrees and sessions across all your repos. ## Security model A web terminal is remote code execution *by design*. Arboretum binds to `127.0.0.1` by default, authenticates every request **and** every WebSocket upgrade with revocable tokens, and strictly checks the `Origin` header. The recommended way to reach it from other devices is [Tailscale Serve](docs/tailscale.md) (valid HTTPS, tailnet identity, no open ports). Never expose it directly to the internet. ## A note on Claude usage Arboretum wraps the **interactive** Claude Code CLI in a PTY — the same thing you run in your terminal, displayed in your browser. It does not use the Agent SDK or headless mode. Anthropic's usage policies around programmatic use may evolve; Arboretum will track CLI releases and document any impact transparently. ## License MIT — see [LICENSE](LICENSE).