Mission control for parallel agent work.
One panel for every branch you have in flight: its worktree, its agents, its pull request and its ticket.
Click a row and you're in that branch's own workspace.
Running five agents on five branches means five checkouts, a pile of terminals, and losing track of which agent is stuck waiting for you. Overseer is a Tern plugin that keeps them all in one panel.
- One session per worktree. Each branch gets its own Tern session with its own tabs and agents. Switching is one click.
- See every agent at a glance. Working, waiting for you, finished or failed, right on the row.
- Sub-worktrees. When an agent splits a task into one branch per fix, the fixes nest under the task, and their agents keep each other informed.
- PRs and tickets on the row. GitHub PR state and the Linear ticket, one click away.
- Quiet worktrees. Creation and deletion run through Worktrunk in the background, hooks and all.
- Visualize PR. Turns a pull request into a diagram-first outline for review.
| Any agent CLI | omp | |
|---|---|---|
| Sessions per worktree, status on every row, PRs and tickets | ✓ | ✓ |
| Overseer's wake-ups and briefs, with agent coordination on | ✓ | ✓ |
| Agents started from a ticket, Visualize PR, sub-worktrees made by agents | ✓ | |
| Family news before each prompt, agents messaging each other | ✓ |
Claude Code, Codex, Gemini, Aider and others get the panel, their status and Overseer's messages; omp unlocks the rest. Nothing else to install.
Run this in any terminal:
tern plugin install github.com/mmnavarr/overseerThat's it. Tern downloads Overseer into its own plugins folder and loads it; no clone, no build. Press ⌘⌥⇧P to open Projects.
You'll need macOS, Tern 0.9.15 or later, and Worktrunk (brew install worktrunk; tested with 0.40 and 0.81). These are optional and add features:
| Add | To get |
|---|---|
GitHub CLI (gh), signed in |
PR badges, Visualize PR |
Linear CLI (linear), signed in |
Ticket links |
| omp | Ticket agents, Visualize PR, sub-worktrees made by agents, agents messaging each other (Overseer sets up its omp side itself) |
Update with the Update button that appears beside the cog in the Projects header when a newer version is out, or with tern plugin install github.com/mmnavarr/overseer --force. Uninstall with tern plugin remove overseer (and omp plugin uninstall overseer-omp if you use omp).
- Show Projects with ⌘⌥⇧P.
- Add a repo with + in the panel's header.
- Open a worktree by clicking its row.
- Start a new one with + next to a project.
- Right-click a worktree or project for everything else, and open Settings with the cog next to Projects: the Ice Box, each project's base branch, Linear workspace and agent coordination, your GitHub and Linear sign-ins, and the changelog.
Ask Tern's assistant:
Create an overseer worktree for ENG-123
You get the branch, its session and an omp agent already reading the ticket.
A task's worktree can own the worktrees of its sub-tasks. Agents create them for you (or use Move under…), each with its own session, PR and ticket, folded under the task with ▾ N.
Turn on agent coordination from a project's right-click menu and their agents stay in touch: the task's agent is woken when a sub-task's agent needs an answer, fails or opens a PR, sub-tasks hear when the task's branch moves, and Brief sub-worktrees… messages them all. omp agents also hear their family's news before every prompt and can message each other. Messages only inform; they never trigger actions. It's off until you turn it on, per repository.
Right-click a worktree with a pull request → Visualize PR. It's read-only: the agent writing the outline can't push, comment or edit anything.
flowchart LR
you(["You"]) --> panel["Projects panel"]
panel -- "create / remove" --> wt["Worktrunk"]
wt --> trees[("git worktrees")]
panel -- "one session each" --> sessions["Tern sessions"]
sessions --> agents["omp · claude · codex · …"]
panel -. "PR state" .-> gh["GitHub"]
panel -. "tickets" .-> linear["Linear"]
Worktrunk owns the worktrees, Tern owns the sessions, and Overseer never deletes a branch.
- "Worktrunk (wt) was not found". Run
brew install worktrunk. Overseer looks on Tern's PATH, then in/opt/homebrew/bin,/usr/local/bin,~/.bun/binand~/.local/bin. - No PR badges. Sign in with
gh auth login. Badges only show for repositories whoseoriginis on GitHub. - No ticket links. Sign in with
linear auth login, or pick a workspace with Set Linear workspace… on the project's right-click menu. The branch name needs a ticket ID such asENG-123. - A new worktree says "needs you?". Setup is asking a question, usually a Worktrunk hook approval. Click the row, or Answer on its notification, to answer it.
- Agents in a task don't hear from each other. Turn on agent coordination from the project's right-click menu. omp sessions started before Overseer linked its omp side need
/new. - Anything else. Show Overseer's operation log in the command palette shows what Overseer did and how it ended, newest first, over the tab you're in. If that doesn't explain it, open an issue with your Tern and Worktrunk versions.
Bug reports and pull requests are welcome. Please open an issue before starting on a feature, so we can check it isn't already there or planned. CONTRIBUTING.md covers setup and the checklist; AGENTS.md is the full reference to how Overseer works.
Built on Tern, Worktrunk and omp. PR icons from Primer Octicons; Visualize PR follows humanlayer/skills' visual-pr skill; the ticket icon is Linear's logo mark, a trademark of Linear Orbit, Inc. See CHANGELOG.md for releases and LICENSE (MIT).



