{"slug": "santree-backlog-shipped-in-parallel", "title": "Santree: Backlog, Shipped in Parallel", "summary": "Santree released a macOS desktop app that runs OpenAI Codex and Anthropic Claude Code agents in parallel across a repository's tickets, giving each agent an isolated git worktree that users can watch, steer and merge. The app requires git and at least one coding agent CLI, uses the user's own login and subscription without handling credentials, and integrates with Linear and Jira for tickets and triage queues with SLA clocks. Santree is signed and notarized, self-updates on stable or beta channels, and adds an AI co-reviewer that drafts PR comments held locally until the user publishes them.", "body_md": "**Your backlog, shipped in parallel.**\n\nsantree is a desktop app that runs Codex and Claude Code across your repo's tickets. Each agent gets an isolated git worktree you can watch, steer, and merge. Triage in, PRs out.\n\n[**Website**](https://santree.toscanini.me) · [** Docs**](https://santree.toscanini.me/docs) · [** Download for macOS**](https://github.com/santree-ai/santree/releases/latest/download/santree-macos.dmg) · **Changelog**\n\nRunning one coding agent is easy. Running five is a workflow problem: they step on each other's diffs, you lose track of who's blocked on you, and the actual job (tickets in, reviewed PRs out) lives scattered across a tracker, a terminal multiplexer, and a browser.\n\nsantree puts the whole loop in one window. Every task gets an **isolated git\nworktree** with a **real terminal** running the real Codex or Claude Code CLI:\nyour login, your subscription, no credentials handled by santree. Around the\nterminals it builds the workflow: a permanent sidebar that shows every agent's\nstate across every project, your team's triage queue with its SLA clock, your\ntickets as a list or a dependency graph, a review inbox with an AI\nco-reviewer, and a work queue that turns failing checks and review comments\ninto an agent's next task. Nothing is mocked: every view is backed by live\ndata, and an unconnected view shows its honest empty state.\n\nThe sidebar is the app's index. It never leaves: search, your tickets, the\ntriage queue, and every project with its worktrees and the agents running on\nthem, each with a dot that says *working*, *just finished*, or *needs you*.\nThe area beside it is whatever you picked.\n\n- **Triage** lives in the sidebar. Who is on rotation, the tickets waiting\nwith their SLA, and a snoozed group. Open one and it gets a workspace: the\nticket, an**Investigate** agent digging through the project's main\ncheckout, and a shell. With Jira, the queue is a query you set per project.\n- **Tickets** is your Linear or Jira queue as a list grouped by project and\nmilestone, or as a dependency graph. Every row says whether it is ready or\nwhat blocks it.**Run** starts a ticket in a new worktree; the launch queue\nstarts several at once, each with its own agent.\n- **Trees** is where you spend your time. One worktree per task, and a tab per\nagent or shell it has open. Beside the terminal: the ticket, the files, the\nbranch's changes with a commit box, session history you can resume, and,\nonce a PR exists, the PR itself and its**AI work queue** .\n- **Reviews** is the inbox: other people's pull requests, per project, ordered\nby what needs you. The PR page has the conversation, commits, checks and\nfiles. An**AI review** reads the diff and writes a brief and draft comments\nthat stay local until you publish them.\n- **Your own PR** is worked on next to its worktree, not in the inbox. A\nfailing check, a reviewer's comment, an AI draft or a diff line you flag all\nland in one queue, and**Start work** hands the whole queue to an agent.\n- **Settings** holds the integrations, a provider and model per workflow\n(triage, work, reviews), the prompts every launch renders (Jinja templates\nyou can edit and preview), environment variables, and usage.\n\n| <sub>**The work queue.** Failing checks, review comments and AI drafts, drained by one agent.</sub> | <sub>**Tickets.** Grouped by project and milestone; every row says what blocks it.</sub> | \n| <sub>**Triage.** The ticket, an investigating agent, and the project it runs on.</sub> | <sub>**Reviews.** A teammate's PR with its AI review beside it, drafts held until you publish.</sub> | \n\nsantree runs on macOS: [download the DMG](https://github.com/santree-ai/santree/releases/latest/download/santree-macos.dmg).\nIt's signed and notarized, and keeps itself up to date (pick the stable or\nbeta channel in *Settings → General*).\n\nYou'll also want:\n\n- **git** : worktrees, diffs, and branches are the real thing.\n- At least one coding agent: **[Codex](https://developers.openai.com/codex/cli/)** or**[Claude Code](https://www.anthropic.com/claude-code)** , installed and\nlogged in. santree drives the CLI you already have and never touches its\ncredentials.\n- **[GitHub CLI](https://cli.github.com)** (`gh` ), signed in. Optional; it\npowers Reviews, the PR panes and the checks.\n- A **[Linear](https://linear.app)** workspace or a**[Jira Cloud](https://www.atlassian.com/software/jira)** site. Optional; it\npowers Tickets and Triage, and each project picks which one it reads.\n\nYou need [Rust](https://rustup.rs) (the pinned toolchain installs\nautomatically), **Node 22+**, **pnpm**, and the Xcode Command Line Tools\n(`xcode-select --install`).\n\n```\npnpm install\npnpm dev        # first run compiles the Rust side, a few minutes, then fast\n```\n\nArchitecture, data flow, testing, the release pipeline, and the terminal\ninternals live in [DEVELOPMENT.md](https://github.com/santree-ai/santree/blob/main/DEVELOPMENT.md). The ground rules for how\nsantree is allowed to interact with agent CLIs are in\n[COMPLIANCE.md](https://github.com/santree-ai/santree/blob/main/COMPLIANCE.md); they're load-bearing.\n\nThe screenshots above come from the app's screenshot fixture mode, a fake\ncompany (Mallard Labs, makers of QuackStack) served to the real views; see\n`src/dev/fixtures/README.md` to retake them.\n\nsantree is pre-release and moving fast. Bug reports and small PRs are very welcome; for anything bigger, open an issue first so we can talk it through.\n\n[MIT](https://github.com/santree-ai/santree/blob/main/LICENSE) © Santiago Toscanini", "url": "https://wpnews.pro/news/santree-backlog-shipped-in-parallel", "canonical_source": "https://github.com/santree-ai/santree", "published_at": "2026-10-25 19:55:37+00:00", "updated_at": "2026-10-25 20:12:18.272752+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["Santree", "OpenAI Codex", "Claude Code", "Linear", "Jira", "macOS", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/santree-backlog-shipped-in-parallel", "markdown": "https://wpnews.pro/news/santree-backlog-shipped-in-parallel.md", "text": "https://wpnews.pro/news/santree-backlog-shipped-in-parallel.txt", "jsonld": "https://wpnews.pro/news/santree-backlog-shipped-in-parallel.jsonld"}}