Documentation
Building & Development
Task Runner Commands
Arbor uses just as its task runner.
All commands apply the pinned Rust nightly toolchain (nightly-2025-11-30) automatically.
| Command | Description |
|---|---|
| just setup-macos | Install macOS dependencies (one-time) |
| just setup-linux | Install Linux dependencies (one-time) |
| just format | Auto-fix formatting |
| just format-check | Check formatting without modifying files |
| just lint | Run clippy with -D warnings |
| just test | Run all tests |
| just ci | Full CI suite (format-check + lint + test) |
| just run | Build and run the desktop app |
| just run-httpd | Build and run the HTTP daemon |
Crate Architecture
The project is split into four crates:
| Crate | Description |
|---|---|
| arbor-core | Worktree primitives, change detection, agent hooks |
| arbor-gui | GPUI desktop app (arbor binary) |
| arbor-httpd | Remote HTTP daemon (arbor-httpd binary) |
| arbor-web-ui | TypeScript dashboard assets + helper crate |
CI
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:
- Linux (
x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu) - macOS (
aarch64-apple-darwin,x86_64-apple-darwin) - Windows (
x86_64-pc-windows-msvc)
Releases
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)
Changelog
This project uses git-cliff for changelog generation. Config lives in cliff.toml.
| Command | Description |
|---|---|
| just changelog | Generate/update CHANGELOG.md |
| just changelog-unreleased | Preview unreleased entries in stdout |
| just changelog-release <version> | Preview a release section tagged as v<version> |