For AI agents: a documentation index is available at https://www.plungeai.com/docs/llms.txt. Append .md to any page URL, or send Accept: text/markdown, to get markdown. Setup instructions for agents are at https://www.plungeai.com/docs/agents.md. One ozk_ key opens every plane, models included.

Documentation Index: fetch the complete documentation index at /llms.txt. Use this file to discover all available pages before exploring further.

This page lists Ocean pager's slash commands, keyboard shortcuts, mode ring, config.toml settings, themes and notification options. For how the pager starts, its environment variables and what is wired to the Ocean engine, see Ocean pager.

Slash commands

Type / in the composer to open the menu. A prefix narrows the list, and Tab or Enter inserts the command. Enabled skills appear in the same menu (19 · Ocean pager).

In the Needs column, session means an active session, fullscreen or minimal means that screen mode only (in the other mode the command tells you to switch), and dashboard means the Agent Dashboard. args means the command needs an argument.

Session and conversation

CommandAliasesWhat it doesNeeds
/new/clearStart a new session—
/resume—Resume a previous session—
/fork [--worktree|--no-worktree] [directive]—Branch the current session into a peer agentsession
/rename <title> | --auto/titleRename the current session; --auto returns to the automatic titlesession, args
/delete—Delete this sessionsession
/session-info—Show session infosession
/btw <question>—Ask a side question without interrupting the turnsession, args
/recap/summarizeSummarize the session so far; listed only when session recap is availablesession
/rewind/undoRewind the conversation, and the files the file tools changed, to a previous turnsession
/redo—Re-apply the turn a rewind reverted, files included (ocean/restore_code)session
/compact [instructions]—Compact the conversation history (ocean/compact_conversation)session
/queue—List the prompts queued behind the running turnsession
/history—Search prompt historysession
/loop [interval] <prompt>—Run a prompt on a recurring intervalargs
/plan [description]—Enter plan mode; add/done/cancel/edit/remove edit the live todo table (_ocean/todos/set)session
/view-plan/show-plan, /plan-viewView the current plansession
/share—Share this session via a public URL (ocean/share_session); hidden from the menu until enabled, but you can still type itsession
/unshare—Revoke this session's share link (ocean/unshare_session)session

Ocean engine controls

These commands use _ocean/* methods. For their argument forms, see 19 · Ocean session commands.

CommandAliasesWhat it doesNeeds
/tideline [now | <n>% | <tokens> | default]/shelve (hidden)Show or set the Session Ledger tideline (_ocean/ledger/status)session
/retention [<days> | off]—Show or set how many days idle sessions are kept — one setting for the database and the ledger, written to the global config (_ocean/retention)session
/budget [<usd> | off | subscription]—Show or set this session's spend bound (_ocean/session/bounds)session
/limits [steps <n|default> | time <dur|off>]—Show or set the per-turn step and time bounds (_ocean/session/bounds)session
/subagent [<provider/model> | default | off | clear]—Show or set the sub-agent model (_ocean/subagent_model)session
/mode [<id> | default]—Bare opens the work-mode picker (as F4); <id> sets this session's work mode, default clears it (_ocean/mode, 23)session

Model, context and output

CommandAliasesWhat it doesNeeds
/model <name> [effort]/mSwitch the active modelsession, args
/effort <level>—Set reasoning effort for the current modelsession, args
/connect <provider>—Connect a model provider (API key or account login)args
/context—View context usagesession
/usage/costView usage—
/copy [N] [file]—Copy the last response (or the Nth) to the clipboard or a filesession
/export [filename]—Export the current conversation to a file or the clipboardsession
/transcript/logView the conversation transcript in $PAGERsession
/find [text]—Search the conversation scrollbacksession, fullscreen
/jump—Jump to a turn in the conversationsession, fullscreen
/expand—Re-print the last collapsed block, fully expandedsession, minimal
/edit-prompt—Open an external editor for an empty prompt (to keep a draft, use the command palette)session

Extensions and workflows

CommandAliasesWhat it doesNeeds
/skills—View skills—
/plugins/pluginView plugins—
/hooks—View hooks—
/mcps—Show MCP server status—
/marketplace—View the marketplace—
/workflows—Browse installed workflows—
/workflow—Launch a saved workflow, list runs, or manage a run (pause, resume, stop, save)session

Settings and display

CommandAliasesWhat it doesNeeds
/settings/config, /preferences, /prefsOpen the settings modal—
/theme [name]/tSwitch the color themefullscreen
/auto—Toggle auto mode (a classifier approves safe tools); listed only when auto mode is available—
/always-approve—Toggle always-approve (skips all permission prompts)—
/vim-mode—Toggle vim-style scrollback keys—
/multiline/mlToggle multiline input (swaps Enter and Shift+Enter)—
/compact-mode—Toggle compact UI (less padding)—
/timestamps—Toggle message timestamps—
/timeline—Toggle the timeline sidebarfullscreen
/notify [on | off]—Toggle desktop notifications (Notifications)—
/toggle-mouse-reporting—Toggle terminal mouse reporting, so the terminal's own click-drag copy works—
/minimal—Switch this session to minimal (scrollback-native) modesession, fullscreen
/fullscreen/fullSwitch this session to fullscreen modesession, minimal
CommandAliasesWhat it doesNeeds
/dashboard/agents-dashboard, /sessionsOpen the Agent Dashboard; listed only when the dashboard is enabledfullscreen
/cd [path]—Change the working directory for new agentsdashboard
/home/welcomeReturn to the welcome screen—
/help—Browse commands and keyboard shortcuts—
/docs [web|title]/howto, /guidesOpen the in-TUI how-to guides, or (web) the published developer guide, https://code.plungeai.com/docs, in the browser—
/release-notes/changelogView release notes for the current version—
/doctor [fix [FIX]]/terminal-setup, /terminal-check, /terminal-infoCheck this session and show the fixes availablesession
/quit/exitQuit Ocean Code (asks first)—
/debug [scroll|fps|log]—Toggle debug overlays; listed only on debug builds—
/scroll-debug—Toggle the scroll-diagnostics HUD; never listed—

Keyboard

The defaults live in a single registry. Keys apply where the Where column says: prompt when the composer has focus, scrollback when the conversation has focus (Tab switches between them), agent anywhere on the agent screen, and global everywhere. Ctrl+. (or Ctrl+X) opens the full cheatsheet.

Essentials

KeysWhereAction
EnterpromptSend
Ctrl+Enter (alt Ctrl+I)promptSend now while a turn runs: cancels the current turn and sends the message next. In Apple Terminal it is Ctrl+O; in VS Code-family terminals, Ctrl+L
Tabprompt / scrollbackFocus the scrollback / focus the prompt (i or Space also focus the prompt)
Ctrl+CagentCancel the turn
Shift+TabpromptCycle the mode ring (Modes)
Option+Tab / F3promptCycle reasoning effort for this session
F4agentOpen the work-mode picker (Work-mode picker)
Ctrl+OagentToggle always-approve
Ctrl+P (alt ?)agentCommand palette: search every action and slash command by name
Ctrl+. (alt Ctrl+X)agentKeyboard shortcuts. Where Ctrl+. is unreliable (Windows, WSL, some terminals) the two keys swap
Ctrl+MagentPick a model (when the prompt has focus, Ctrl+M toggles multiline instead)
F2 (alt Ctrl+,, Cmd+,)agentOpen the settings modal
Ctrl+NglobalNew session
Ctrl+Q (alt Ctrl+D)globalQuit; press twice in quick succession. In VS Code's terminal, Ctrl+D only

Prompt

KeysWhereAction
Ctrl+MpromptToggle multiline
Ctrl+S (alt Alt+S)promptStash the draft; on an empty composer, pop it back. A new stash replaces the old one
!promptShell mode (type it on an empty prompt)
UppromptBrowse prompt history (empty prompt). /history opens the search panel
Esc EscpromptWith text and no turn running: clear the prompt (Ctrl+Z restores it)
Esc Escprompt / scrollbackWith an empty prompt and at least one turn: open the rewind picker
Escwhile a turn runsNever cancels; a toast names the cancel key

The double-press window is 800 ms (OC_PAGER_ESC_DOUBLE_PRESS_MS overrides it).

Panes and sessions

KeysWhereAction
Ctrl+TagentToggle the todo pane
Ctrl+GagentHide or show the dock above the prompt (the tasks pane at the top with OC_PAGER_DOCK=0). In minimal mode, edit the prompt in $VISUAL / $EDITOR (vi if neither is set)
Ctrl+BagentSend the running task to the background
Ctrl+; (alt Ctrl+')agentToggle the prompt queue. In VS Code-family terminals on a local Mac, Ctrl+4
Ctrl+RagentOpen sessions
Ctrl+LagentOpen extensions (unbound in VS Code-family terminals; use /plugins)
Ctrl+\ (alt Ctrl+4)globalOpen the Agent Dashboard

Scrollback

Bare-letter keys in this table work only when vim_mode is on (/vim-mode). Arrows, PgUp/PgDn, Enter, Tab, ? and every Ctrl chord always work.

KeysAction
j / k (Down / Up)Select the next / previous entry
L / H (Shift+Right / Shift+Left)Next / previous turn
J / KJump to the next / previous turn at the top of the viewport
g / GGo to the top / bottom
Ctrl+K / Ctrl+JScroll up / down one line
Ctrl+U / Ctrl+DScroll up / down half a page (in VS Code, D scrolls down)
PgUp / PgDnScroll one page
h / l (Left / Right)Collapse / expand the selected entry
e / EExpand or collapse the entry / every entry
Ctrl+EToggle all thinking blocks
rToggle raw markdown
y / YCopy the content / the command or path
Enter (alt Ctrl+F)Open the entry in the viewer
o / ONext / previous link
xKill the selected background task
Ctrl+RToggle mouse reporting, only when [ui] mouse_reporting_toggle is on (it then replaces Open sessions while the scrollback has focus)

Agent Dashboard

KeysAction
Down / Up (j / k with vim mode)Select the next / previous row
Shift+Down / Shift+UpMove the agent down / up
Shift+TabCycle the dispatch mode
Ctrl+TPin / unpin the agent
Ctrl+RRename the agent
Ctrl+XStop / delete the agent
Ctrl+OToggle always-approve for the selected agent
Ctrl+GToggle row grouping
Ctrl+LChange the working directory for new agents
Ctrl+WToggle worktree mode for new agents
Ctrl+. (or ?)Show the shortcuts overlay
EscClose the dashboard
Ctrl+\(inside an attached session) Back to the dashboard
Ctrl+[ / Ctrl+](inside an attached session) Previous / next session
Ctrl+X(inside an attached session) Stop the agent and go back to the dashboard

Mouse

Click a pane to focus it. The wheel and trackpad scroll the pane (see the scroll_* settings), and you can click or drag the scrollbar. In-app selection and double-click follow keep_text_selection; hold Shift while dragging to use the terminal's own selection. Queued prompts have [Interject], [edit] and [cancel] buttons. Double-clicking a [Pasted: N lines] chip expands it into editable text.

Work-mode picker

F4 or a bare /mode opens it in the prompt's place: the modes on the left (Model first, tagged default; custom diagrams after a ── custom ── divider; on a narrow terminal the labels only) with the highlighted mode's description under them, cut with … when it runs out of rows, and its picture and cost on the right. The footer names the keys, e: copy too when the width allows (23 · Work modes).

KeysAction
Down / Up (j / k)Move; the picture follows at once
EnterUse the mode for this session and close
dMake it the current agent's default (agents.<id>.mode in the user oceancode.json) and close
eCopy the highlighted built-in to .oceancode/modes/<id>-copy.jsonc and close; the toast names the path
EscClose without a change

Every mode but Model puts its badge on the prompt's top border, after the ultracode badge when that is on: solo, delegate ≤4, pair, pipeline, orchestrate ≤8, goal, race ×3, and for Auto auto until its first pick, then auto → <pick> · <reason>. Model has no badge.

Modes (Shift+Tab ring)

Shift+Tab cycles Build → Auto → Plan → Ask → Debug → Build. Build, Plan, Ask and Debug are the engine's agents; Auto is a permission stop that keeps the Build agent and sets the auto permission mode. The prompt border shows the current mode in its color:

ModeBorder
buildblue
autoyellow
planviolet
askgreen
debugorange
always-approvered

The ring skips the Auto stop while always-approve is on, or when auto mode is not available. Leaving Auto writes permission_mode = "ask" back. What each permission mode allows is in 19 · Shift+Tab ring and permission modes.

Settings (config.toml)

The settings modal (/settings, F2) edits these settings. Unless the Key column gives another table, each is written to the [ui] table of <pager home>/config.toml ($OC_PAGER_HOME). Restart means the change takes effect on the next start. Rows in the modal's Hidden in minimal set still apply to the full TUI.

Appearance

KeyTypeDefaultMeaning
themeenumoceannightColor theme (Themes)
auto_dark_themeenumoceannightTheme used in system dark mode (only with theme = "auto")
auto_light_themeenumoceandayTheme used in system light mode (only with theme = "auto")
screen_modefullscreen | minimalfullscreenHow plain ocean-pager opens next time. Restart. /minimal and /fullscreen switch only the current session
compact_modeboolfalseLess padding around messages. Turns on automatically at 20 terminal rows or fewer
show_timestampsbooltrueClock time next to user messages and agent responses
show_timelineboolfalseA per-turn tick rail in place of the scrollbar; hover to preview, click to jump
page_flip_on_sendbooltrueScroll a sent prompt to the top of the screen so the response starts on a fresh page
simple_modebooltruePlain readline-style input in the prompt instead of vim keys (vim input is experimental)
vim_modeboolfalseVim keys for navigating the scrollback; the prompt is unaffected
render_mermaidauto | on | offautoauto/on show a clickable row that opens the rendered diagram; off shows the raw source
max_thoughts_widthint 40–500120Column width of the thoughts panel
show_thinking_blocksbooltrueShow thinking blocks while streaming
group_tool_verbsbooltrueFold consecutive read/search/list tool calls and subagent rows into one summary row
show_edit_detailsbooltrueShow each edit's diff inline under its header. false shows a one-line +N/−M diffstat and merges back-to-back edits to the same file; expand a row to see the diff. OC_PAGER_SHOW_EDIT_DETAILS overrides it
show_run_detailsbooltrueWhen a Run finishes, show the command and the first lines of its output with a … +N lines fold; false leaves finished runs as a header-only row. OC_PAGER_SHOW_RUN_DETAILS overrides it
collapsed_edit_blocksbool(unset)Legacy, not in the modal: read only while show_edit_details is unset, as its inverse (collapsed_edit_blocks = true ≡ show_edit_details = false)
[ui.display_refresh] auto_cadence_enabledbooltrueMatch the display's refresh rate when streaming and scrolling; off keeps about 60 Hz. Restart
respect_manual_foldsboolfalseKeep manually folded blocks as they are while streaming (experimental). Written to pager.toml under [scrollback.scroll], not config.toml

Mouse

KeyTypeDefaultMeaning
scroll_speedint 1–10050Wheel and trackpad speed multiplier
scroll_modeauto | wheel | trackpadautoForce wheel or trackpad behavior when detection misreads your device
scroll_linesint 1–103Lines per scroll tick; until you set it, each terminal's own profile applies
invert_scrollboolfalseReverse the vertical scroll direction
keep_text_selectionflash | hold | word_selectflashflash clears the selection after mouse-up, hold keeps it until Esc, a click or a scroll, and word_select makes a double-click select a word and a triple-click a paragraph

Editor, agent and models

KeyTypeDefaultMeaning
combine_queued_promptsboolfalseMerge consecutive plain follow-ups into one model turn
confirm_before_rewindbooltrueAsk before rewinding code and conversation
permission_modedefault | ask | auto | always-approveaskThe permission mode; the Shift+Tab ring and Ctrl+O write it too
remember_tool_approvalsbooltrueOffer "Always allow" options on permission prompts. Restart
default_selected_permissionalways_allow_all_sessions | allow_command_always | allow_once | rejectalways_allow_all_sessionsThe option the cursor starts on in a permission prompt
[toolset.ask_user_question] timeout_enabledbooltrueThe ask_user_question tool times out instead of waiting forever. Restart
[models] defaultmodel(none)The model for new sessions; changing it also switches the active session
fork_secondary_modelmodel(none)The model for the secondary agent when you fork; clearing it restores the built-in default
hunk_tracker_modeoff | agent_only | all_dirtyoffWhich file changes are tracked as hunks; off also turns off line-count stats. Restart
[cli] show_tipsbooltrueThe tip-of-the-day banner on startup. Restart
[cli] auto_updatebooltrueDownload pager updates on startup. Restart. When oceancode launches the pager, auto-update is always off (19)

Agent defaults (its own section, after Models) has two rows per ring agent: <Agent> model (a catalog model, or (no override)) and <Agent> effort (inherit, minimal, low, medium, high, xhigh, max). They are not pager settings: each change is an _ocean/agents call that writes agents.<id>.model / agents.<id>.effort into the user oceancode.json (~/.config/oceancode/oceancode.json, the rows fleet-router edits too), and inherit / (no override) write "". Shift+Tab to that agent applies them, the effort clamped to the levels the model offers (19, 02). A write the engine refuses (an oceancode.json that does not parse, say) shows as agent defaults not saved: … and changes nothing. Each ring agent also has a work-mode row: a mode id, saved through _ocean/mode as agents.<id>.mode in the same user file (23).

Sub-agents (its own section) has three number rows, at once, per turn and depth: the sub-agent limits subagent.max_concurrent (0–64), subagent.max_per_turn (1–1000) and subagent.max_depth (1–4), written to the user oceancode.json through _ocean/mode. A set number wins over the work mode's own limit in every mode; an out-of-range one is refused with the engine's message (23).

[ui.contextual_hints] holds the per-hint switches. All default to true, and the modal shows them as one Show contextual hints group: undo (Ctrl+Z restores a cleared prompt), plan_mode (suggests plan mode for a planning request), image_input (offers to paste a clipboard image), send_now (empty-prompt Enter sends the top queued item), small_screen (suggests /compact-mode), word_select, export_copy (points out /copy and /export) and ssh_wrap (a /doctor tip over SSH).

Two modal rows are not saved. multiline_mode (default false) resets each session, and plan_mode (off/on, default off) is per session.

Keys outside the modal

KeyTypeDefaultMeaning
[ui] require_plan_approvalboolfalseThe plan viewer always asks before leaving plan mode
[ui] mouse_reporting_toggleboolfalseBind Ctrl+R in the scrollback to toggle mouse reporting (OC_PAGER_MOUSE_REPORTING_TOGGLE overrides it)
[cli] session_picker_groupedboolonGroup the session picker
[dashboard] enabledbooltrueEnable /dashboard (OC_PAGER_AGENT_DASHBOARD=0 turns it off)

Themes

NameDisplay nameNotes
oceannightOcean NightDefault. A neutral dark theme with a magenta accent. Aliases ocean-night, dark
oceandayOcean DayA light theme. Aliases ocean-day, light, day
tokyonightTokyo NightNeeds truecolor. Aliases tokyo-night, tokyo
rosepine-moonRose Pine MoonNeeds truecolor. Aliases rosepine, rose-pine, rose-pine-moon
oscura-midnightOscura MidnightNeeds truecolor. Alias oscura
terminalTerminalUses the terminal's own background and text colors. Offered only when the terminal theme is enabled (OC_PAGER_TERMINAL_THEME). Aliases terminal-default, transparent, native
autoAutoFollows the system's dark/light appearance and picks auto_dark_theme or auto_light_theme. Alias system

Names are case-insensitive. On a terminal without truecolor, the themes that need it are not offered. The pre-rename keys groknight, grok-night, grokday and grok-day still load, for one release. OC_PAGER_THEME forces a theme without editing the config.

Notifications

Desktop notifications, the tab title and the progress indicator are set in [ui.notifications]:

KeyDefaultMeaning
methodautoauto, osc9, osc99, osc777, bel or none
conditionunfocusedunfocused (only once the terminal has lost focus), always or never
idle_threshold_secs3How many seconds the terminal must be unfocused before a notification fires
events["turn_complete", "approval_required"]Also available: session_ready, task_complete, agent_error
sleep_preventiontrueKeep the machine from idle-sleeping during a turn (macOS IOKit assertion, Linux systemd-inhibit)
progress_bartrueShow a progress indicator in the tab (OSC 9;4)
session_recaptrueShow an automatic recap when you come back after being away
session_recap_threshold_secs30How many seconds unfocused count as "away" for the automatic recap
[ui.notifications.title] enabledtrueSet the terminal/tab title to reflect the agent's state
[ui.notifications.title] items["action-required", "spinner", "activity", "session-name", "ocean"]Also available: cwd, model, turn-timer

Protocol selection (method = "auto"). The pager picks the protocol from the terminal:

TerminalProtocol
iTerm2, WezTerm, WarpOSC 9
KittyOSC 99
Ghostty, VTE, Terminator, footOSC 777 (titled "Ocean Code")
Zellij (any terminal), and every other terminalBEL

Under tmux the sequence is wrapped in DCS passthrough, so it reaches the outer terminal. Control characters are stripped from the text first. The progress indicator is drawn only on Ghostty, WezTerm and iTerm2 3.6 or later.

Custom commands. Each [[ui.notifications.hooks]] entry runs command through sh -c for its events. The command gets OC_PAGER_EVENT, OC_PAGER_MESSAGE and OC_PAGER_SESSION_ID. only_unfocused defaults to true, and timeout_secs defaults to 10 (minimum 1); a hook that runs past its timeout is killed.

[[ui.notifications.hooks]]
command = "terminal-notifier -title 'Ocean Code' -message \"$OC_PAGER_MESSAGE\""
events = ["turn_complete", "approval_required"]

/notify. /notify toggles desktop notifications, and /notify on or /notify off sets them. Off sets method to none for the running pager. On restores the method you had before, or auto. It does not write config.toml.

See also

Planned: TI-34

The docs assistant is not available yet. You can hand these docs to your own assistant instead.