Santree: Backlog, Shipped in Parallel 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. Your backlog, shipped in parallel. santree 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. 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 Running 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. santree puts the whole loop in one window. Every task gets an isolated git worktree with a real terminal running the real Codex or Claude Code CLI: your login, your subscription, no credentials handled by santree. Around the terminals it builds the workflow: a permanent sidebar that shows every agent's state across every project, your team's triage queue with its SLA clock, your tickets as a list or a dependency graph, a review inbox with an AI co-reviewer, and a work queue that turns failing checks and review comments into an agent's next task. Nothing is mocked: every view is backed by live data, and an unconnected view shows its honest empty state. The sidebar is the app's index. It never leaves: search, your tickets, the triage queue, and every project with its worktrees and the agents running on them, each with a dot that says working , just finished , or needs you . The area beside it is whatever you picked. - Triage lives in the sidebar. Who is on rotation, the tickets waiting with their SLA, and a snoozed group. Open one and it gets a workspace: the ticket, an Investigate agent digging through the project's main checkout, and a shell. With Jira, the queue is a query you set per project. - Tickets is your Linear or Jira queue as a list grouped by project and milestone, or as a dependency graph. Every row says whether it is ready or what blocks it. Run starts a ticket in a new worktree; the launch queue starts several at once, each with its own agent. - Trees is where you spend your time. One worktree per task, and a tab per agent or shell it has open. Beside the terminal: the ticket, the files, the branch's changes with a commit box, session history you can resume, and, once a PR exists, the PR itself and its AI work queue . - Reviews is the inbox: other people's pull requests, per project, ordered by what needs you. The PR page has the conversation, commits, checks and files. An AI review reads the diff and writes a brief and draft comments that stay local until you publish them. - Your own PR is worked on next to its worktree, not in the inbox. A failing check, a reviewer's comment, an AI draft or a diff line you flag all land in one queue, and Start work hands the whole queue to an agent. - Settings holds the integrations, a provider and model per workflow triage, work, reviews , the prompts every launch renders Jinja templates you can edit and preview , environment variables, and usage. |