A terminal-based dashboard for managing AI agent coding sessions with Git worktree isolation, tmux integration, and real-time session monitoring.
Overseer is a TUI application that helps developers organize, launch, and monitor AI agent sessions across multiple Git repositories. It provides isolated worktree-based sessions, project management, pull request tracking, and live session preview β all from your terminal.
- Worktree Sessions: Create isolated git worktrees on new branches for each AI agent session. Automatically forks from a base branch, sets up tmux sessions, and keeps your main working directory clean.
- Project Sessions: Attach sessions directly to a project's working directory without creating worktrees β perfect for quick experiments or when you don't need branch isolation.
- Session Grouping: Sessions are automatically grouped by project in a collapsible tree view.
- Labels: Color-coded labels to categorize and visually distinguish sessions.
- Ordering: Reorder sessions within projects to prioritize your work.
- Tmux Integration: Automatically creates and manages tmux sessions for both the AI agent and a shell in the session's working directory.
- One-Key Attach: Attach to a session's tmux window directly from the dashboard.
- Editor Launch: Open a session's working directory in your configured editor (VSCode, Neovim, etc.).
- Live Session Preview: Toggle between Agent and Shell stream views to see what your AI agent is doing in real-time.
- Keyboard-Driven: Vim-inspired keybindings β navigate with
j/k, create withn, delete withd, and more. - Customizable: YAML configuration for themes, launchers, editors, labels, and dashboard dimensions.
- Fast & Lightweight: Built in Go with minimal resource usage.
The main dashboard shows your projects and sessions in a three-pane layout. Select a session to see its details in the middle pane β repository info, branch, and linked pull request status with CI checks.
Create a new session with a guided form. Choose between worktree mode (isolated branch) or project mode (direct working directory attachment).
Press ? at any time to see all available keyboard shortcuts.
- tmux (for session management)
- gh (GitHub CLI β optional, for PR tracking)
- A configured AI agent launcher (e.g., OpenCode, Claude Code, or custom)
brew tap dnlopes/overseer
brew install overseergo install github.com/dnlopes/overseer/cmd/overseer@latestRequires Go 1.24+.
git clone https://github.com/dnlopes/overseer.git
cd overseer
make buildThe binary will be available at bin/overseer.
overseerOn first run, Overseer creates a default configuration file at:
- macOS:
~/Library/Application Support/overseer/overseer.yaml - Linux:
~/.config/overseer/overseer.yaml
Press n to create a new session. If you haven't registered any projects yet, Overseer will prompt you to add a Git repository.
Fill out the session creation form:
- Name: A descriptive name for your session
- Repository: Choose from registered projects
- Create worktree: Enable for isolated branch-based sessions
- Base branch: The branch to fork from (e.g.,
main) - New branch: The branch name for this session (auto-generated if empty)
- Launcher: The AI agent to use (e.g., OpenCode, Claude Code)
- Editor: Your preferred editor
Select a session and press Enter to attach to its tmux window. Press e to open the session directory in your editor.
Overseer is configured via a YAML file. Here's the default configuration:
# overseer.yaml
theme: dark
disableEmoji: false
dashboard:
minWidth: 60
minHeight: 15
previewRefreshInterval: 500ms
logging:
level: info
storage:
dataDir: "" # Uses OS default if empty
launchers:
- displayName: "OpenCode"
command: "opencode"
- displayName: "Claude Code"
command: "claude"
editors:
- displayName: "VSCode"
command: "code"
- displayName: "Neovim"
command: "nvim"
labels:
- code: "urgent"
color: "#ff6b6b"
glyph: "!"
- code: "wip"
color: "#feca57"
glyph: "β―"
- code: "review"
color: "#54a0ff"
glyph: "π"
- code: "done"
color: "#1dd1a1"
glyph: "β"| Section | Option | Description |
|---|---|---|
theme |
β | UI theme (dark or light) |
disableEmoji |
β | Set to true to disable emoji glyphs |
dashboard |
minWidth |
Minimum terminal width required |
dashboard |
minHeight |
Minimum terminal height required |
dashboard |
previewRefreshInterval |
How often to refresh the preview pane |
logging |
level |
Log level (debug, info, warn, error) |
storage |
dataDir |
Directory for Overseer's data files |
launchers |
β | List of AI agent launchers |
editors |
β | List of code editors |
labels |
β | Custom labels for session categorization |
| Key | Action |
|---|---|
j / β |
Move down |
k / β |
Move up |
shift + β |
Reorder session down |
shift + β |
Reorder session up |
n |
Create new session |
d |
Delete selected session |
r |
Rename selected session |
l |
Cycle through labels |
Enter |
Attach to session (tmux) |
e |
Open session in editor |
g / G |
Go to next/previous project group |
| Key | Action |
|---|---|
Tab |
Toggle between Agent and Shell views |
| Key | Action |
|---|---|
? |
Show help menu |
q / Ctrl+C |
Quit |
Creates a fully isolated development environment:
- Forks a new branch from the base branch
- Creates a git worktree for the new branch
- Spawns tmux sessions (agent + shell) in the worktree directory
- Safe to run long-running or experimental agent tasks
- Easy cleanup: deleting the session removes the worktree
Attaches directly to the project's working directory:
- No branch or worktree manipulation
- Uses the project's current HEAD
- Useful for quick experiments or when you don't need isolation
We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to get started.
Quick links:
MIT Β© David Lopes


