Ocean Documentation
Ocean is the platform and trust layer for coding agents. It gives teams using Claude, Codex, Cursor, Gemini, and other agents isolated workspaces, validation evidence, spend control, PR status, and safe merge paths before code reaches production.
Ocean is available for macOS on Apple Silicon. Download the current release from GitHub.
Core Concepts
Isolated Agent Workspaces
Every agent session runs in its own copy-on-write workspace, so risky refactors and experiments stay separate until a human reviews and merges them.
Control Plane
Ocean tracks agent state, files touched, PR readiness, review status, CI checks, local ports, notifications, and spend so teams can govern agentic development from one platform.
Validation Before Merge
Use the merge panel, git visualizer, PR runtime, command history, and status surfaces to decide which agent work is safe to promote.
Local Audit Trail
Sessions, command history, workspace state, usage quota data, and project organization are persisted locally so developers can inspect what happened without sending terminal content to Ocean.
Platform Map
Repo-aware environments with isolated sessions, split panes, projects, and local state.
Detection and status tracking for Claude, Codex, Cursor, Gemini, Aider, Copilot, Cody, and Devin.
Git visualizer, PR polling, review decisions, CI checks, conflict detection, and AI-assisted merge.
Usage quota notifications, plugin permissions, team relay auth, local privacy boundaries, and audit data.
Installation
macOS (Apple Silicon)
-
Download the latest release from the Releases page
- Extract the archive:
tar -xzf Ocean_*_aarch64.app.tar.gz - Move
Ocean.appto your Applications folder:mv Ocean.app /Applications/ - On first launch, macOS may block the app. Open System Settings > Privacy & Security
and click Open Anyway, or run:
xattr -cr /Applications/Ocean.app - Double-click
Ocean.appto launch
Getting Started
When Ocean launches, you'll see a single session in the Default workspace. From there you can create isolated agent sessions, connect a repository, organize work into projects, and monitor status from the sidebar and top status bar.
The Interface
┌──────────────────────────────────────────────────────┐
│ NetworkIndicator SystemMetrics GitStatus │ Status Bar
├──────────┬───────────────────────────────────────────┤
│ SESSIONS │ ● Shell 1 │ Pane Header
│ │ │
│ Default │ ~ $ │ Terminal
│ ● Shell 1│ │
│ ● Shell 2│ │
│ │ │
│ Settings │ │
├──────────┴───────────────────────────────────────────┤
│ docker ● │ flutter ● │ node ● │ Connectors
└──────────────────────────────────────────────────────┘
- Sidebar (left): Workspaces and sessions
- Terminal area (center): Active shell and agent panes
- Status bar (top): System metrics, network, git info
- Connector bar (bottom): Detected dev tools
Sessions
Sessions are individual terminal instances, each running its own shell process.
| Action | Shortcut |
|---|---|
| New session | Cmd+T |
| Spawn child session | Cmd+N |
| Close session | Cmd+W |
| Switch tabs | Cmd+1 through Cmd+9 |
| Previous / next tab | Cmd+[ / Cmd+] |
- Rename: Double-click the session name in the sidebar
- Closed sessions: Move to the Closed section. Click to view scrollback history.
Split Panes
Work on multiple things side by side within the same tab.
| Action | Shortcut |
|---|---|
| Split vertical (side by side) | Cmd+D |
| Split horizontal (stacked) | Cmd+Shift+D |
Sidebar Indicators
Sessions sharing a split show direction-aware badges:
| Badge | Meaning |
|---|---|
┃2 |
2 panes side by side (vertical) |
━2 |
2 panes stacked (horizontal) |
┼3 |
3+ panes, mixed layout |
Resizing
- Drag the divider between panes
- Click ⇔ in the pane header to auto-resize to your configured width
- Up to 5 panes per tab
Workspaces
Workspaces group sessions around a project or repository. Repo workspaces are the main unit for isolated agent development, git tracking, merge review, and PR shipping.
- WS button: Create a blank workspace
- Repo button: Create a workspace linked to a git repository
- Copy Workspace Path: Right-click the workspace header to copy the Ocean workspace directory
at
~/.ocean/workspaces/{id}
Repo Workspaces
When linked to a git repo, workspaces show:
- Branch name, ahead/behind counts in the pane header
- Staged, modified, and untracked file counts
- Ship to PR capability (Cmd+Shift+S)
Projects
Projects organize related workspaces in the sidebar. They are local to your machine and are not synced through team relay.
| Action | How |
|---|---|
| Create project | Click the folder button in the sidebar header |
| Move workspace | Right-click a workspace and choose Move to Project... |
| Manage project | Right-click the project header to rename, change color, create a workspace, or archive |
| Collapse state | Saved locally and restored after reload |
Keyboard Shortcuts
Pro Tip: Use Cmd+Shift+P at any time to open the Command Palette. It's the fastest way to discover and run any command in Ocean.
Essential
| Shortcut | Action |
|---|---|
| Cmd+T | New session |
| Cmd+W | Close session |
| Cmd+D | Split vertical |
| Cmd+Shift+D | Split horizontal |
| Cmd+1-9 | Switch tabs |
| Cmd+P | Quick session switcher |
| Cmd+Shift+P | Command palette |
| Cmd+B | Toggle sidebar |
| Cmd+, | Settings |
Git
| Shortcut | Action |
|---|---|
| Cmd+G | Git panel |
| Cmd+Shift+V | Git visualizer |
| Cmd+Shift+S | Ship to PR |
Merge & Conflicts
| Shortcut | Action |
|---|---|
| Cmd+Shift+M | Merge panel |
| Cmd+Shift+S | Ship to PR |
Panels
| Shortcut | Action |
|---|---|
| Cmd+Shift+H | Terminal history |
| Cmd+Shift+E | Snippet library |
| Cmd+Shift+G | Session DAG view |
| Cmd+Shift+J | Agent dashboard |
| Cmd+Shift+N | Notifications |
| Cmd+Shift+L | Activity timeline |
| Cmd+Shift+A | API inspector |
| Cmd+K | Toggle connectors |
| Cmd+Shift+O | Ports panel |
| Cmd+Option+F | File picker (paste path into terminal) |
All shortcuts are searchable in Settings > Commands tab.
Command Palette
Cmd+Shift+P opens the command palette — a searchable list of every command, shortcut, and saved snippet.
Cmd+P opens the quick switcher to jump to any session by name.
Terminal History
Cmd+Shift+H opens the history panel showing commands across all sessions.
- Type to search
- Enter to re-run a command
- Exit codes shown: [SUCCESS], [ERROR] failure with code
Snippet Library
Cmd+Shift+E opens the snippet library for saved commands.
- Name: Descriptive label
- Command: Shell command (supports
${variable}templates) - Category: general, dev, git, docker, etc.
Run snippets from the library or from the command palette.
AI Agent Detection
Ocean detects AI coding agents running in your sessions:
Detected agents show a colored badge in the pane header. View all agents in the Agent Dashboard (Cmd+Shift+J).
Git Visualizer
Cmd+Shift+V opens the Git Visualizer showing:
- Staged, modified, and untracked files
- File diffs
- Staging controls
Pull Request Runtime
Ocean tracks pull request status for repo workspaces in the background using your existing gh CLI
authentication. It refreshes branch and PR state on a 30 second interval.
| Signal | Where it appears |
|---|---|
| PR state | Status bar detail panel and workspace PR snapshot |
| Review decision | Approved, changes requested, pending, or none |
| CI checks | Aggregated success, failure, pending, or none, with individual check runs |
| Branch sync | Local branch and head SHA are watched while the workspace is tracked |
Useful commands include track_workspace_pr, refresh_workspace_pr, and
get_workspace_pr_status. The frontend receives pr-status-update events.
Conflict Resolution
When multiple sessions edit the same files, Ocean detects and resolves conflicts automatically.
Why this matters for AI: Traditional terminals share the same filesystem. If an AI agent runs a destructive command or a buggy refactor, it affects your entire project. In Ocean, agents work in isolated clones, meaning you only commit their changes once you've reviewed and merged them safely.
How It Works
Each session runs in its own copy-on-write clone of the workspace. When you merge a session back, Ocean:
- Detects conflicts at the file and line level
- Classifies severity: disjoint (auto-merge safe), overlapping (review), or conflicting (manual)
- Shows a merge panel with inline diffs and per-hunk resolution controls
Merge Panel
Open with Cmd+Shift+M when conflicts are detected. The conflict banner at the top shows the count.
| Action | Description |
|---|---|
| Accept A | Keep the current session's version |
| Accept B | Keep the other session's version |
| Accept Both | Include both changes |
| Accept Base | Revert to the original |
| Manual Edit | Write your own resolution |
| AI Suggest | Ask Claude to merge intelligently |
AI-Assisted Merge
Click AI Suggest on any conflict to get a Claude-powered merge suggestion with a confidence score. Review the result and accept, edit, or dismiss.
Requires ANTHROPIC_API_KEY environment variable. See the Configuration section for details.
Supporting Features
| Feature | Description |
|---|---|
| Pre-conflict warnings | Alert when 2+ sessions start editing the same file |
| Merge queue | Recommended merge order based on conflict complexity |
| File locks | Advisory locks to prevent concurrent edits |
| Session stash | Save/restore session state mid-merge |
| Merge undo | Automatic pre-merge snapshots with one-click rollback |
| Dependency graph | Declare session dependencies, enforce merge order |
| Activity heatmap | Bird's-eye view of which files are "hot" |
| Health dashboard | Aggregate workspace health and conflict metrics |
Port Forwarding
Share local ports publicly using built-in tunneling.
Right-click a detected port in the Ports Panel to create a tunnel via:
- Bore (lightweight, open-source)
- Cloudflared (Cloudflare)
Ocean auto-installs the tunnel provider on first use.
File Workflows
Ocean has native path workflows for feeding files into agents without manually typing long paths.
| Workflow | How it works |
|---|---|
| File drop | Drag files onto the focused terminal pane to paste shell-escaped paths. Ocean shows a dashed overlay while dragging. |
| File picker | Press Cmd+Option+F or use the command palette action Pick File to Paste Path. Multi-select is supported. |
| Workspace path | Right-click the workspace header and choose Copy Workspace Path. |
| Env vars popover | Edit per-workspace environment variables in structured key/value rows from a floating panel. |
Agent Notifications
Ocean monitors AI agents running in your sessions and notifies you when they need input:
- Pane header turns yellow after 30 seconds of agent waiting
- Desktop notification if the window is not focused
- View all agent states in the Agent Dashboard (Cmd+Shift+J)
Usage Quota
Usage quota tracks cumulative estimated Codex spend across sessions and helps teams avoid surprise AI costs.
- Configure warning and error thresholds in Settings > General > Usage Quota
- See the quota bar in the status bar
- Receive notifications when spend crosses configured thresholds
- Quota state is stored locally under
ocean:usage-quota
Plugins
Ocean supports a three-tier plugin system: MCP servers, WASM sandbox plugins, and native Rust plugins.
Installed plugins live under ~/.ocean/plugins/ and declare an ocean-plugin.toml
manifest.
| Surface | Purpose |
|---|---|
| Plugin Manager | Open with Cmd+Shift+X to install, activate, and configure plugins |
| Status bar indicators | Plugins can contribute real-time signals to the status bar |
| Sidebar panels | Plugins can add panels below the workspace list |
| Permissions | The plugin host manages lifecycle, MCP connections, config, and permissions |
Team Relay
Team relay is an optional collaboration backend. Ocean works standalone by default; connect relay only when a team wants shared workspace capabilities or a self-hosted sync endpoint.
- Configure relay in Settings > Team
- The server URL is configuration, not a secret, and can be overridden for self-hosted deployments
- JWT and refresh tokens are read from macOS Keychain only when the Team tab restores a session
relay_login,relay_register,relay_logout, andrelay_restore_sessionhandle auth from the app
Settings
Open with Cmd+, or the gear icon in the sidebar.
| Setting | Description | Default |
|---|---|---|
| Auto-resize width | Target width for split pane auto-resize | 800px |
| Auto-resize height | Target height for horizontal splits | 400px |
| Claude Code Native | Show Claude Code indicator at top of app | Off |
| Usage Quota | Warning and error thresholds for estimated agent spend | Configurable |
| Team Relay | Login, register, logout, restore session, and server URL override | Disconnected |
Configuration
Ocean can be configured via environment variables, per-workspace env vars, localStorage settings, plugins, or the built-in settings panel.
Environment Variables
| Variable | Purpose |
|---|---|
ANTHROPIC_API_KEY |
Enables AI-Assisted Merge and Claude-powered features. |
OCEAN_LOG_LEVEL |
Sets the verbosity of terminal and agent logs (debug, info, warn, error). |
.ocean.env |
Per-workspace environment file loaded into every session in that workspace. |
Articles
Understand Ocean from the perspective that matters to you. Browse all articles →
Use Cases
Multi-Agent Development
Run Claude Code in one pane, Codex in another, Cursor or Gemini in another, and a manual shell in a fourth. Ocean tracks each agent with status badges and keeps their work isolated.
┌────────────────┬────────────────┐
│ ● Claude Code │ ● Aider │
│ Working on │ Refactoring │
│ auth module... │ tests... │
├────────────────┴────────────────┤
│ ● Shell │
│ ~/project $ git status │
└─────────────────────────────────┘
Microservice Development
Create a workspace per service. Each workspace holds sessions for servers, logs, and tests.
▼ API Service 3 sessions
● Server ● Tests ● Logs
▼ Frontend 2 sessions
● Dev Server ● Build
▼ Database 1 session
● Migrations
Feature Branch Workflow
- Create a repo workspace (click Repo)
- Split panes for code + tests
- Monitor git status in pane headers
- Review changes in Git Visualizer (Cmd+Shift+V)
- Check review and CI state in the PR status detail panel
- Ship to PR (Cmd+Shift+S)
Debugging with History
- Run your failing command
- Open history (Cmd+Shift+H) to find previous runs
- Compare exit codes and timing
- Click to re-run from history
Pro Tips
Instant Recovery
If a session becomes unresponsive, hover over the tab in the sidebar and click the Refresh icon. Ocean will restart the shell while keeping your command history intact.
Custom Environments
Use the env vars popover or define variables in a .ocean.env file. Values are loaded into
every session within that workspace.
Shortcut Feedback
When a shortcut cannot execute, Ocean shows a notification explaining why, such as needing two or more sessions before merge can run.
Git Index Repair
If Ocean detects a corrupt .git/index, it shows a dialog with a fix action and can repair
the index before commit.
Data and Privacy
| What | Where | Shared? |
|---|---|---|
| Sessions and history | Local on your machine | Never |
| Settings | Local on your machine | Never |
| Projects | Local on your machine | Not synced via relay |
| Usage quota | LocalStorage under ocean:usage-quota |
Never |
| Relay tokens | macOS Keychain, restored lazily from Settings > Team | Only to the configured relay server |
| Terminal content | Never collected | Never |
| Crash reports | Optional, anonymous | Only if you opt in |
Ocean runs standalone on your machine. No terminal content or commands leave your device unless you explicitly configure a team relay or plugin that performs network requests.
Troubleshooting
App won't open on macOS
xattr -cr /Applications/Ocean.app
Terminal shows blank screen
Quit and relaunch the app. If it persists, delete ~/.ocean/ocean.db and restart.
Sessions missing after restart
Ocean respawns sessions automatically. If a session's directory was deleted, it won't respawn. Create a new session with Cmd+T.
Shortcut not working
Open Cmd+Shift+P and search for the action. Some shortcuts may conflict with macOS system shortcuts.
PR status is not updating
Confirm the workspace is linked to a GitHub repo, the branch has a pull request, and gh is
authenticated in your shell.
Team login restores the wrong server
Open Settings > Team, confirm the server URL, then restore the session. Ocean syncs the configured URL before reading tokens from Keychain.
Downloads
Get the latest version from the Releases page or download from here!
| Version | Date | Highlights | Action |
|---|