Arbor is a Rust workspace for a desktop Git worktree manager inspired by tools like Superset and Conductor.
arbor-core: worktree primitives (list/add/remove, porcelain parsing)arbor-gui: GPUI desktop app (arborbinary)arbor-httpd: remote HTTP daemon (arbor-httpdbinary)arbor-web-ui: TypeScript dashboard assets + helper crate
crates/arbor-corecrates/arbor-guicrates/arbor-httpdcrates/arbor-web-ui
Use just as the task runner.
just formatjust format-checkjust lintjust testjust runjust run-httpd
Run the remote daemon:
just run-httpd- or
ARBOR_HTTPD_BIND=0.0.0.0:8787 cargo +nightly-2025-11-30 run -p arbor-httpd
HTTP API:
GET /api/v1/healthGET /api/v1/repositoriesGET /api/v1/worktreesGET /api/v1/terminalsPOST /api/v1/terminalsGET /api/v1/terminals/:session_id/snapshotPOST /api/v1/terminals/:session_id/writePOST /api/v1/terminals/:session_id/resizePOST /api/v1/terminals/:session_id/signalPOST /api/v1/terminals/:session_id/detachDELETE /api/v1/terminals/:session_idGET /api/v1/terminals/:session_id/ws
If crates/arbor-web-ui/app/dist/index.html is missing, the daemon attempts an on-demand build with npm.
Desktop daemon URL override:
~/.config/arbor/config.tomldaemon_url = "http://127.0.0.1:8787"
GitHub Actions runs format, lint, and test checks on pushes to main and pull requests:
- Workflow:
CI
On pushes to main, CI also runs a cross-platform build matrix for:
- Linux (
x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu) - macOS (
aarch64-apple-darwin,x86_64-apple-darwin) - Windows (
x86_64-pc-windows-msvc)
Push a tag in YYYYMMDD.NN format (example: 20260301.01) to trigger an automated release:
- Workflow:
Release - Artifacts:
- macOS
.appbundle (zipped, universal2, withInfo.plistand app icon) - Linux
tar.gzbundles (x86_64andaarch64) - Windows
.zipbundle (x86_64)
- macOS
This repo uses git-cliff for changelog generation.
just changelog: generate/updateCHANGELOG.mdjust changelog-unreleased: preview unreleased entries in stdoutjust changelog-release <version>: preview a release section tagged asv<version>
Config lives in cliff.toml.