@orangeworks/orangetree
v0.10.0
Published
Branching session-tree work-tracking tool (local-first, TypeScript)
Readme
Orange Tree (@orangeworks/orangetree)
Branching session-tree work-tracking tool. Local-first desktop app: break work into a DAG of nodes, run each node as an isolated Claude session, sync results graph-locally, and track progress on a canvas.
Runs on the user's PC against their own claude CLI (zero inference cost). The reference implementation
is the JS-based orange-tree; this repo is the all-TypeScript rebuild (canonical: otree-docs/docs).
Status: 0.2.0 — core feature set in place. A draggable canvas of branching Claude sessions (fork, lifecycle, live streaming); projects with read-only/read-write folders, per-project instructions and context files; a document explorer + viewer; light/dark/system theming; and the 120-COLLAB collaboration engine — graph-local context sync, result return-flow, code-change propagation, and isolated git worktrees with auto-merge + AI conflict resolution. Design canon lives in
otree-docs/docs/20-design.
Requirements
- Node.js >= 20
- A working
claudeCLI onPATH(or setOTREE_CLAUDE_BIN)
Develop
pnpm install
git config core.hooksPath .githooks # enable the commit gate (integrity + tsc --noEmit)
pnpm dev # esbuild-watch the frontend + node --watch the server
pnpm build # one-shot build -> dist/
pnpm start # run the built server (dist/server.js)
pnpm typecheck # tsc --noEmit (also runs in the pre-commit hook)The app serves its UI on 127.0.0.1 (loopback only) and opens a browser.
Runtime state (git-excluded)
All per-project runtime state lives in app-data, outside any repo (DES-PLATFORM-002):
<OTREE_DATA>/ # default ~/.orangetree (env OTREE_DATA wins) — a DIRECTORY
global.json # project registry + projectless nodes + settings
scratch/ # cwd for folderless sessions
projects/<projectId>/
tree.json # this project's node graph
decisions.md # audit log (append-only)Environment
| Var | Meaning |
|---|---|
| OTREE_DATA | app-data root directory (default ~/.orangetree) |
| OTREE_CLAUDE_BIN | explicit path to the claude executable |
| OTREE_PORT | preferred port (default 4100, scans upward if taken) |
| OTREE_OPEN | set 0 to not auto-open the browser |
