README et CLAUDE.md reflètent désormais la réalité : découverte/reprise, worktrees multi-repo, états fins et dashboard sont livrés et testés. La prochaine phase est P4 (supervision mobile : answer + Web Push + PWA). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
49 lines
3.6 KiB
Markdown
49 lines
3.6 KiB
Markdown
# Arboretum
|
|
|
|
> A self-hosted web dashboard for your git worktrees and the Claude Code sessions running on them — from any device.
|
|
|
|
**Status: MVP.** The worktree-first dashboard, session discovery & resume, multi-repo worktree lifecycle, live session states and the web terminal are implemented and tested. Mobile supervision (PWA + push, approve/deny from your phone) is the next phase — see *Supervision from your phone* below.
|
|
|
|
## 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).
|