OrbitDock is mission control for AI-assisted product development.
The problem: when you're building multiple products with AI agents, your work scatters across terminal windows, browser tabs, and session windows. Context is lost between sessions. You can't see what agents are doing, what needs attention, or where you left off.
OrbitDock brings it together. It shows you all your AI agents in one place — Claude Code and Codex tracked from a unified dashboard. You can monitor their work in real-time, steer them mid-task, review what they changed, and preserve context across sessions.
It's not a replacement for Linear (ticket management) or GitHub (code management). It's the orchestration layer that connects them and gives you the bird's-eye view while keeping the ground-level context.
Organized by area.
- Multi-provider support — Claude Code and Codex tracked from one dashboard
- Dual integration modes — Passive (hook-based / FSEvents file watching) and Direct (bidirectional control) for both providers
- Live session updates — Conversations stream in real-time via WebSocket
- 5 status states — Working (cyan), Permission (coral), Question (purple), Reply (blue), Ended (gray)
- Activity banners — See what tool the agent is currently using
- Token and cost tracking — Per-session and per-turn usage stats with context window fill indicator
- Subagent tracking — See when Claude spawns Explore, Plan, or other agents
- Context compaction events — Know when a session compacts its context window
- Activity stream dashboard — Active agents grouped into attention, working, and ready zones
- Multi-server merge — Sessions from multiple connected endpoints are merged into one dashboard view
- Endpoint-safe identity — Duplicate session IDs across servers are isolated by endpoint-scoped IDs
- Desktop sidebar — Quick agent list, project filter, and usage snapshot on larger screens
- Live filters — Filter by provider (All / Claude / Codex), sort active sessions, and focus by urgency
- Command strip — Today's stats, usage gauges, library toggle, and new-session actions
- Keyboard navigation — Arrow keys + Emacs bindings (C-n, C-p, C-a, C-e)
- Loading skeleton — Smooth loading state before first data arrives
- Project archive — Browse active and ended sessions grouped by project
- Search and filters — Search by title, prompt, project, or last message; filter by provider; sort by recent, name, cost, tokens, or status
- Shared session rows — Library reuses the same naming precedence and row language as the dashboard
- Full transcript display — Messages, tool calls, and results
- Rich tool cards — Read, Edit, Write, Bash, Glob, Grep, Task, MCP, WebFetch, WebSearch, Shell, Skills, PlanMode, TodoTask, AskUserQuestion, ToolSearch, and more
- Code diffs — Before/after visualization for edits
- Syntax highlighting — Code blocks with copy buttons
- Auto-scroll — Follows new messages, pauses when you scroll up
- Turn grouping — Messages grouped by turn with token counts
- Fork origin banner — When viewing a forked session, shows which session it was forked from with a clickable link
- Layout modes — Conversation only, split (conversation + review), or review only
A magit-style code review interface for reviewing agent changes:
- File list navigator — Browse changed files with add/update/delete indicators
- Diff hunk view — Unified diffs with syntax highlighting
- Cursor navigation — C-n/p (line), C-f/C-b or n/p (section jump), TAB (collapse), RET (open in editor), q (close), f (follow mode)
- Inline comment threads — Click + button or drag to select a range, then write a comment with optional tag
- Comment-to-steer — Select specific comments and send structured feedback to the agent (S key)
- Resolved comment markers — Resolved comments collapse into grouped markers, reopen with r key
- Mark and range selection — C-space sets mark, mouse drag for multi-line selection
- Turn diff history — View "All Changes" vs per-turn diffs
- Split layout —
⌘Dtoggles conversation + review side by side,⌘⇧Dfor review-only - Diff available banner — Auto-appears when new changes arrive with "Review Diffs" CTA
- Risk classifier — Low/Normal/High risk detection with DESTRUCTIVE badge for patterns like
rm -rf,git push --force,DROP TABLE,sudo - Risk severity strip — Color-coded bar at top of approval card with shadow glow
- Diff preview — See file changes before approving patch executions
- Keyboard triage —
yapprove,Yallow for session,!always allow,ndeny,Ndeny & stop,dtoggle deny-with-reason panel - Deny with reason — Text field to explain why, with "Interrupt turn" toggle
- Approval history — Turn sidebar tab showing session-scoped and global approval history
- Takeover for passive sessions — "Take Over & Review" / "Take Over & Answer" CTA promotes passive sessions to direct control
Full control over Claude Code sessions from the app:
- Create sessions — Start new Claude sessions with project directory picker
- Model picker — Sonnet 4.5, Opus 4.6, Haiku 4.5, or custom model input
- Permission modes — Default, Accept Edits, Plan (read-only), Bypass Permissions — settable at creation and live during a session
- Tool restrictions — Allowed and disallowed tool lists with Bash glob patterns (e.g.,
Bash(git:*)) - Send messages — Chat directly with Claude
- Steer mid-turn — Inject guidance while Claude is working without stopping it
- Take over passive sessions — Promote hook-monitored sessions to direct control
- Resume ended sessions — Continue where a session left off
Full control over Codex sessions without leaving the app:
- Create sessions — Start new Codex sessions with project path and model selection
- Send messages — Chat directly with the Codex agent
- Shell mode —
⌘⇧Ttoggle or!commandprefix to run shell commands in the session's working directory - Steer mid-turn — Inject guidance while the agent is working
- Approve/deny tools — Handle tool execution requests inline
- Interrupt turns — Stop the agent mid-turn
- Undo last turn — Roll back the most recent turn
- Fork conversation — Branch off a new session from the current conversation, optionally from a specific message
- Compact context — Trigger context compaction when token usage is high
- Token context strip — 3px progress bar showing context window fill, color-coded by utilization
- Model and effort picker — Switch models and reasoning effort on the fly
- Autonomy picker — 6 levels from Locked to Unrestricted
- Skills picker — Browse and attach skills to messages,
$skill-nameinline autocomplete - File mentions —
@filenameautocomplete against project file index - Image attachments — Attach images via file picker, paste from clipboard, or drag-and-drop
- MCP servers tab — View connected MCP servers and their tools
- Resume ended sessions — Continue where a session left off
Side panel for direct sessions with multiple tabs:
- Approval history — Past approval requests and decisions
- Diff review — Per-turn and cumulative diffs
- Review comments — Inline code annotations with selective send
- Skills — Browse and toggle skills
- MCP servers — Connected servers and their tools
- Rail presets —
⌘⌥1Plan focused,⌘⌥2Review focused,⌘⌥3Triage
- Unified search — Sessions, commands, and dashboard access
- Full keyboard navigation — Arrow keys, Enter to select, Escape to close
- Inline actions — Focus terminal, open in Finder, rename, copy resume command, close session
- Recent sessions — Collapsed section for recently ended sessions
- Fork badges — Visual indicator on forked sessions
- Command mode — Type
>to filter commands (Go to Dashboard, Rename, Focus Terminal, etc.)
- Primary-endpoint usage — Usage requests run through the endpoint selected as primary on this device
- Claude rate limits — 5-hour and 7-day window tracking via OAuth API
- Codex rate limits — Primary and secondary rate windows
- Visible error states — Usage cards stay visible and show auth/transport errors instead of disappearing
- Menu bar gauges — Quick usage check without opening the app
- Auto-refresh — Updates every 60 seconds
- Multiple active connections — Connect to local, LAN, and remote servers at the same time
- Default endpoint per device — Session creation defaults to the endpoint selected on that client
- Server role metadata — Endpoints can publish primary/secondary role and per-device primary claims
- Single-endpoint simplification — Create-session sheets hide endpoint pickers when only one endpoint is configured
- Focus terminal (⌘T) — Jump to the iTerm2 tab running a session
- Resume sessions — Copy resume command for ended sessions
- Toast notifications — In-app alerts when sessions need attention
- System notifications — macOS notifications for permission/question states
| Shortcut | Action |
|---|---|
| ⌘K | Quick Switcher |
| ⌘T | Focus Terminal |
| ⌘0 | Go to Dashboard |
| ⌘D | Toggle split (conversation + review) |
| ⌘⇧D | Review only layout |
| ⌘⇧T | Toggle Shell Mode |
| ⌘⌥1 | Rail preset: Plan focused |
| ⌘⌥2 | Rail preset: Review focused |
| ⌘⌥3 | Rail preset: Triage |
| ⌘⌥R | Toggle turn sidebar |
| ⌘R | Rename session (in Quick Switcher) |
| ⌘, | Settings |
| ↑/↓ | Navigate sessions |
| C-n/C-p | Next/Previous (Emacs) |
| Enter | Select |
| Escape | Close/Back |
Approval card:
| Key | Action |
|---|---|
| y | Approve once |
| Y | Allow for session |
| ! | Always allow |
| n | Deny |
| N | Deny & stop |
| d | Deny with reason |
Review canvas:
| Key | Action |
|---|---|
| C-n/C-p | Navigate lines |
| n/p or C-f/C-b | Jump sections |
| TAB | Collapse/expand |
| RET | Open in editor |
| q | Close review |
| f | Follow mode |
| C-space | Set mark |
| c | Open composer |
| r | Resolve/reopen comment |
| x/X | Toggle selection / Clear selections |
| S | Send comments to model |
| ]/[ | Jump to next/prev unresolved comment |
- Cosmic Harbor theme — Deep space aesthetic optimized for OLED displays
- 5 status colors — Distinct colors per state for instant recognition
- Model badges — Opus (purple), Sonnet (blue), Haiku (teal)
- Spring animations — Smooth transitions throughout the UI
- Custom design tokens — Full color system in Theme.swift
Autonomous issue-driven agent orchestration. Poll issue trackers, create per-issue git worktrees, and launch coding agents with human-in-the-loop controls.
- Pluggable tracker —
Trackertrait with Linear adapter (GraphQL, paginated). Extensible to GitHub Issues. - MISSION.md config — Repo-local YAML front matter with sections for provider, agent, trigger, orchestration, plus a Liquid prompt template body
- Provider strategies — Three dispatch modes:
single(one provider),priority(primary up to limit, overflow to secondary),round_robin(alternate between providers) - Multi-provider support — Configure primary and secondary providers (Claude, Codex) per mission with concurrency limits
- Trigger configuration — Polling with configurable interval, label/state/project/team filters, or manual-only mode
- Orchestration pipeline — Issues flow through Queued → Claimed → Running → Completed/Failed states
- Per-provider agent settings — Configure model, effort, and permission/autonomy level per provider under
agent.claude/agent.codexin MISSION.md - Mission-safe defaults — Agents default to headless-safe permission modes (Auto for Claude, On-Request/Workspace-Write for Codex) to prevent stalling
- Agent dispatch — Creates OrbitDock sessions with worktrees, provider selection based on strategy, configured model/effort/permissions
- Eligibility engine — Priority + date sorting, concurrency gating, retry queue with exponential backoff
- Dashboard tab — Missions tab in the dashboard shows all configured missions with status capsules (Active/Paused/Disabled)
- Mission list — Per-mission cards with active/queued/completed/failed counts and action menus (Pause/Resume, Enable/Disable, Delete)
- Create mission — Reuses ProjectPicker and provider picker from session creation. Scaffolds MISSION.md with top-level schema.
- Mission detail tabs — Tab bar with Overview (stats, orchestrator status, quick config capsules), Settings (trigger, provider, orchestration, prompt template), and Issues (pipeline grouped by state)
- Settings write-back — Edits in the Settings tab write back to MISSION.md on disk via
PUT /api/missions/:id/settings - Global settings pane — Mission Control pane in the Settings window for tracker API keys (Linear status + source indicator) and default provider strategy/primary/secondary
- Issue badges — Mission-spawned sessions show issue identifier badges in the activity stream
- REST API — Mission reads, settings, issue transitions, scaffolding, tracker keys, and orchestrator actions use normal
/api/missions/{id}/...resources. - CLI —
orbitdock mission enable/list/status/pause/resume/disable/dispatch, plusorbitdock mission provider get/set/config/testfor mission-owned remote workspace provider management - Cross-platform — Works on both macOS and iOS
- macOS — Native AppKit-backed conversation timeline with NSTableView for performance
- iOS — UICollectionView-backed timeline with compact layouts adapted for phone