ocodey commands — full CLI reference

Every ocodey slash command: what it is for, the exact signature, and copy-ready examples. Type /help inside ocodey for the same list at any time.

Models & providers

Bring any model and route it correctly. These commands switch engines live — no restart, no re-login.

/switch-provider (provider · switch · p)

/switch-provider [id]

Switch the active provider — interactive picker, or pass an id directly. Opens a picker showing every configured provider, its kind, the model it will run, and whether its key is already saved. Selecting one without a key opens the paste-key prompt on the spot. Pass an id to jump straight there.

Examples: /switch-provider · /switch-provider anthropic · /p linghang

/providers

/providers

List all configured providers. A quick read of every provider in providers.json, with the active one marked. Useful before /switch-provider when you forget the exact id.

/model (m)

/model [auto|<model-id>]

Pick from the catalog or paste any model name; it auto-routes to the right provider. No arguments opens the model picker with the current catalog — Claude (Fable 5, Opus 4.8, Sonnet 5, Opus 4.7), GLM 5.2/5.1/5, GPT-5.5 Pro/5.5/5.4, MiniMax M3, Kimi K2.7, Gemini 3.5, Doubao Seed 2.1 — but you can paste ANY model id, listed or not. Routing is automatic and correct-by-construction: Claude models always ride the Anthropic-native /v1/messages route (the OpenAI-compat bridge silently drops tool-use and thinking blocks for them), and every other family rides the LingHang relay by name. Use auto (or reset) to clear an override and fall back to the provider default. Capability strength is a separate dial — see /strength — so this only chooses the engine.

Examples: /model · /model claude-opus-4-8 · /model glm-5.2 · /model kimi-k2.7-code · /model auto

/key

/key [<ENV_NAME> <value>] · /key delete <ENV_NAME>

Set, list, or delete provider API keys (stored in ~/.ocodey/keys.json). With no arguments, lists each provider, its key env var, and whether it is set. Pass an env name and value to save a key; pass delete <ENV> to remove a dead or expired one. Keys are referenced by env-var name and never stored in config files.

Examples: /key · /key LINGHANG_API_KEY sk-… · /key delete ANTHROPIC_API_KEY

Effort & long tasks

How hard ocodey works per step, and how far it will keep going on a task without you.

/strength (str · effort)

/strength · /strength low-fast|normal|high|max|ultra

Set capability strength: how hard the agent works and how much authority it has. One dial for the whole agent. Each level maps onto an API effort value (per-step reasoning depth) and a work-discipline posture — prompt rules, output caps, continuation budgets, and sub-agent authority. low-fast is tight and direct; normal is the baseline; high adds plan→track→verify→self-review; max unlocks standing sub-agent orchestration and escalates autopilot to auto; ultra adds a full internal-loop control with a self-critique pass. The level persists to strength.json.

Examples: /strength · /strength high · /str max

/autopilot (auto · auto-long-task)

/autopilot · /autopilot off|ask|auto

Continuation checkpoint for unfinished tasks: off | ask | auto. When a turn ends but the task board still has open steps, this decides what happens. ask (default) prompts "N step(s) remain — Continue?"; auto approves continuation and keeps going until the board is clear (bounded: 10 rounds, 20 min, 300k tokens, with a no-progress guard); off ends turns as-is. The mode persists to autopilot.json. At max/ultra strength the checkpoint auto-continues unless you explicitly set off.

Examples: /autopilot · /autopilot auto · /auto off

/loop (repeat)

/loop [every] <interval> [x<count>|for <duration>] <prompt> · /loop until <goal>: <prompt> · /loop status|stop

Repeat a prompt on an interval, or iterate toward a goal until met. Two modes. Interval repeats a prompt on a fixed cadence (every 5m, x10 times, for 1m). Auto-goal iterates a prompt toward a stated goal until a one-shot LLM verifier agrees the goal is met — each iteration gets the prior attempt and the verdict fed back. Press Esc to stop a running loop; /loop status shows the active loop. (In the Go TUI, Ctrl+L opens a live loop-status panel — works even while the agent is busy.)

Examples: /loop 5m run the smoke test · /loop every 30s x10 check status · /loop until tests pass: fix suite · /loop refactor auth

/mult-agent (multi-agent · ma)

/mult-agent · /mult-agent on|off · /mult-agent <task> · /mult-agent setup · /mult-agent model sub <n> <id>

Controller-led fleet of multi-model sub-agents. Opens the settings dialogue with no args. on routes every prompt through the fleet; off turns it off. A bare task runs one task as a fleet now: the controller takes your prompt, splits it across sub-agents (each pinned to a model), runs a drift-guard pass checking every report against the original goal, then synthesizes. setup writes a starter agents.json. Esc stops a run.

Examples: /mult-agent · /mult-agent on · /mult-agent "migrate the auth tests to vitest" · /mult-agent model sub 2 kimi-k2.7-code

/note

/note <text> · or just type and press Enter while it is working

Leave the agent a note it reads mid-task. Steer a long turn without cancelling it. The note reaches the agent at its next step, injected into the running turn. In the TUI you can simply type and press Enter while the agent is working — no /note prefix needed.

Examples: /note also add a test for the empty-input case

Content & media

Generate images and video without leaving the terminal, and read documents natively.

/image (img)

/image <prompt> [--n <count>] [--size <WxH>] [--format png|jpeg|webp]

Generate image(s) with the active image model. Uses the media plugin (gpt-image-2 via LingHang by default). Files land in the media/ directory. Flags control count, size, and format. The agent can also call generate_image itself mid-task.

Examples: /image a fox in a terminal, neon · /image logo --n 2 --size 1024x1024

/video (vid)

/video <prompt> [--dur <1-16>] [--res 540p|720p|1080p] [--ar 16:9|9:16|1:1] [--img <url>]

Generate a short video with the active video model. Uses the media plugin (viduq3 via LingHang by default). Submits an async task and polls until the result is ready. An optional --img URL switches to image-to-video. Files land in media/.

Examples: /video robot waving --res 1080p --dur 5

/media

/media · /media image <model> · /media video model <id>

Show or edit the active media models (provider · key · model). With no args, shows the active image and video provider, key env, and model. Edit either by field: pass a model id to switch it (persists to plugins.json), or use explicit field edits (model|provider|key|base). Keys are referenced by env-var name, never stored in the file.

Examples: /media · /media image gpt-image-1.5 · /media video model viduq3-pro

/skills (skill)

/skills · /skills on|off <name> · /skills add <path|URL|git-url> [--skill <name>] · /skills add group <name> · /skills reload

List, toggle, and install skill packs. Skills are progressive-disclosure capability packs: only each enabled pack name and description is injected into the prompt (cheap); the full body is pulled only when a task matches. With no args, lists packs with source and enabled state. on/off toggles a pack per project. add installs from a local folder, a SKILL.md file, a raw URL, or a git repo (name optional, read from frontmatter). add group installs a curated category (research, docs, browser, windows, frontend…). The agent can also self-serve from the skill library when a task needs know-how it lacks.

Examples: /skills · /skills on research-paper · /skills add https://github.com/…/pack.git --skill my-skill · /skills add group frontend

Session & history

Your conversation is saved every turn. Resume it, clear it, or check what it cost.

/sessions (ls)

/sessions · /sessions delete <id>

List saved sessions for this directory, or delete one. Lists up to 20 saved sessions for the current directory with message count, last-updated time, provider, and title. The active session is marked. delete removes a session by id (the active one is protected — use /clear to reset it instead).

Examples: /sessions · /sessions delete 3f2a1c

/resume (continue)

/resume <id>

Resume a saved session by id. Loads a saved session: its provider, model override, full message history, and token totals. In the Ink UI, /resume with no id (or /sessions) opens an interactive picker with type-to-search. Resuming replays the saved conversation into the log so you see exactly where you left off.

Examples: /resume 3f2a1c · /resume

/import

/import · /import <sessionId>

Import a Claude Code session and resume it here. Already have a conversation going in Claude Code (the claude CLI / VS Code extension)? /import brings it into ocodey. With no args it opens a picker of Claude Code transcripts recorded for THIS project (read from ~/.claude/projects, matched by the cwd stored inside each transcript so the inconsistent folder-name encoding never matters). Pick one and its full message log — text, tool calls, tool results, images — is converted to ocodey's format and resumed live; thinking blocks and sub-agent sidechains are dropped, and a transcript that stopped mid-tool is sealed so it is valid to continue. The result is saved as a normal session under a stable cc-<id>, so it appears in /sessions and resumes in your current project with your current provider and model.

Examples: /import · /import 89dbcc0f

/new (new-session · ns)

/new

Start a fresh session — the current one is saved, never deleted. Begins a brand-new session without leaving the app. It first saves the current conversation under its id, then mints a NEW id with empty history — so the previous conversation stays fully resumable in /sessions and a clean one begins. This is the non-destructive counterpart to /clear: /new never overwrites or deletes your existing sessions. Provider, model, and strength carry over.

Examples: /new · /new-session · /ns

/clear (reset)

/clear

Clear the current session's conversation in place (keeps the same id). Wipes the in-memory message history but keeps the current session id, so the file is re-saved over after the next turn. Use it to change topic within the same session. To start a separate saved session while keeping this one, use /new instead — only /sessions delete <id> ever removes a saved session.

/cost (usage)

/cost

Show token usage for this session. Prints the running input, output, and total token counts for the current session — the same numbers used for budget and strength scaling.

Tools, permissions & connectors

See what the agent can reach for, decide what it may run without asking, and wire in external MCP servers and plugins.

/tools

/tools

List the tools available to the agent. Prints every registered tool with its description — file reads and edits, search, shell, web, memory, todos, MCP servers, media generation, and more. These are the capabilities the agent calls on its own during a turn.

/permission (permissions · perms)

/permission · /permission list · /permission remove <tool> · /permission clear

View and edit the tools the agent may run without asking. When the agent asks to run a side-effecting tool, choosing "always" adds it to a durable allow-list so it never asks for that tool again — across turns AND restarts (it used to reset every turn). /permission opens an interactive list of every always-allowed tool; selecting one revokes it. list prints them, remove revokes one by name, clear empties the list. Stored in ~/.ocodey/permissions.json, scoped per tool name — allowing one write tool never silently allows every write tool.

Examples: /permission · /permission list · /permission remove bash · /permission clear

/mcp

/mcp

List connected MCP servers and their tools. Model Context Protocol connectors extend the agent with external tools. ocodey loads them from ~/.ocodey/mcp.json (GLOBAL — available in every project) merged with the project's ./.mcp.json (a project server overrides a global one of the same name), shaped { "mcpServers": { "<name>": { "command": "…", "args": [] } } }. /mcp reports each server's connection status and tool count. Servers connect at startup, so add config then restart.

Examples: /mcp

/plugin (plugins)

/plugin

List loaded plugins (3rd-party tools + slash commands). Plugins contribute agent tools and slash commands into ocodey from plugins.json, loaded at startup (the built-in media plugin is one). /plugin lists each loaded plugin and how many tools and commands it contributes.

Examples: /plugin

/help (? · h)

/help

Show available commands. The in-REPL command list — the same one this page documents, available at any time without leaving the terminal.

Account, updates & lifecycle

Sign in, keep ocodey current, and remove it cleanly when you are done.

/login

/login <email>

Sign in to OpenBNet — emails a one-time code. Passwordless login. Requests a one-time code emailed to your address. If no account exists for that email, opens the sign-up page in your browser instead.

Examples: /login [email protected]

/code

/code <6-digit>

Verify the one-time code emailed by /login and sign in. Completes the login started by /login. On success, the session is saved and you are signed in. Wrong codes report the attempts remaining.

Examples: /code 123456

/logout

/logout

Sign out and clear the stored OpenBNet session. Signs you out server-side and clears the local auth session. Your provider keys and settings are untouched.

/whoami

/whoami

Show the signed-in OpenBNet identity. Prints your username, email, and the last four of the active token — a quick check that you are signed in as who you think.

/update (upgrade)

/update · /update now · /update auto on|off · /update channel <name>

Check for a new ocodey version and self-update. With no args, checks the published manifest and reports whether an update is available (with release notes). now downloads, checksum-verifies, and swaps in the new build — login, keys, and settings in ~/.ocodey are never touched. auto on enables update-on-startup; channel switches the release channel (stable is the default).

Examples: /update · /update now · /update auto on · /update channel stable

/uninstall (remove)

/uninstall app · /uninstall full confirm

Remove ocodey from this machine — keep your data, or full-flush. app removes the application but keeps your login, keys, and sessions in ~/.ocodey for a future reinstall. full confirm is the double-confirmed fresh-start flush — it also signs you out server-side and deletes ~/.ocodey entirely. One-line uninstallers exist for when the app itself is broken.

Examples: /uninstall app · /uninstall full confirm

/exit (quit · q)

/exit

Exit the REPL. Quits ocodey. Your session is already saved after the last turn, so you can /resume it next time.

Keyboard shortcuts

Copy & extract

  • ^y — Copy the last assistant reply to the clipboard. Grabs the whole last reply (or the in-flight stream if the agent is still working) and writes it to your clipboard. Reasoning blocks are excluded — you copy the answer, not the model’s scratchpad.
  • ^b — Copy just the last fenced code block. When the reply ends with code, this copies only that block. If there is no code block, ocodey tells you and suggests ^y for the whole reply instead.
  • ^t — Toggle mouse scroll mode. Off by default, so your terminal’s own drag-to-select/copy just works. Turn it on to hand the wheel to the viewport (drag-select then needs shift in most terminals). Press ^t again to switch back.

Scroll & navigate

  • pgup / pgdn — Scroll the conversation up and down. Page through the scrollback a screen at a time. The scroll wheel and ↑/↓ also work while the input is empty.
  • ↑ / ↓ — Scroll when the input is empty. With nothing typed, the arrow keys scroll the log line by line. The moment you type, they return to editing the input — so you never lose your draft.
  • scroll wheel — Mouse wheel scrolls (mouse mode off). By default the wheel passes through to your terminal, which scrolls its own buffer. Toggle ^t to route the wheel directly to ocodey’s viewport instead.

The input editor

  • enter — Send the message. Submits the current input to the agent and starts a turn. The session is saved after each turn, so you can /resume later.
  • ^j — Insert a literal newline. Because Enter sends, ^j is the multi-line key — press it to add a line break inside your message without submitting.
  • type while busy — Steer a running turn without cancelling. You can type and press Enter while the agent is working — the text reaches it at its next step as a mid-task note, no /note prefix needed.

Control & status

  • esc — Cancel the in-flight turn / stop a loop. Interrupts the running turn immediately. If a /loop is active, Esc stops it. Closes any open overlay or picker as well.
  • ^l — Loop status panel — a live glance at the active /loop. Opens a read-only panel showing loop mode, iteration, goal, verdict, and wait countdown. Crucially it works while the agent is busy — a typed /loop status would queue behind the running turn, so ^l is the way to check loop progress mid-run. Esc or ^l closes it.
  • ^c — Quit ocodey. Exits the REPL. Your session is already saved after the last turn, so you can /resume it next time.

Pickers & overlays

  • ↑ / k / ^p — Move the selection up. Any of these moves the cursor one row up in the list. Vim-style k and Emacs-style ^p work alongside the arrow key.
  • ↓ / j / ^n — Move the selection down. Any of these moves the cursor one row down. Vim j and Emacs ^n are both bound.
  • enter — Confirm the selection. Activates the highlighted row — switches the provider, picks the model, resumes the session, etc.
  • esc / ^c — Close the picker without changing anything. Dismisses the overlay and returns you to the chat input, no action taken.