Skip to main content

opencode

Guide for opencode CLI and web server — non-interactive mode, headless server, sessions, model config, and all CLI subcommands.

Source facts

Repository
DimitriGilbert/ai-skills
Last source activity
June 3, 2026 at 11:17
Detected SKILL.md language
English
Stars
5
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
opencode
description
Guide for opencode CLI and web server — non-interactive mode, headless server, sessions, model config, and all CLI subcommands.
# OpenCode CLI & Web Server Guide Load this skill when the user asks about using opencode as a tool — CLI commands, non-interactive mode, web server, sessions, models, or any `opencode <command>` usage. ## Installation ```bash curl -fsSL https://opencode.ai/install | bash # Or: npm install -g opencode-ai # Or: brew install anomalyco/tap/opencode ``` ## Global Options All commands support: `--help`, `--version`, `--print-logs`, `--log-level <DEBUG|INFO|WARN|ERROR>`, `--pure` (disable plugins) Global flags for TUI/server modes: `-m <provider/model>`, `-c` / `--continue` (resume last session), `-s <id>` / `--session` (resume specific session), `--fork` (copy on resume), `--agent <name>`, `--prompt <text>` ## Non-Interactive Mode: `opencode run` Execute opencode without launching the TUI. Ideal for scripting, CI/CD, and automation. ```bash # Basic usage opencode run "Explain async/await in TypeScript" # With specific model opencode run -m anthropic/claude-sonnet-4-20250514 "Refactor this function" # Attach files to the prompt opencode run -f src/index.ts "Explain this file" # Continue last session opencode run -c "Now add error handling" # Fork a session (creates copy) opencode run -c --fork "Try a different approach" # Output raw JSON events (for piping/processing) opencode run --format json "List all TODO comments" # Share the session after completion opencode run --share "Generate a README" ``` ### `run` Flags | Flag | Description | |------|-------------| | `-m, --model <provider/model>` | Model to use | | `--agent <name>` | Agent to use | | `-c, --continue` | Continue last session | | `-s, --session <id>` | Resume specific session | | `--fork` | Fork session before continuing | | `--share` | Share session after completion | | `--format <default\|json>` | Output format (default: formatted) | | `-f, --file <path>` | Attach file(s) to message (repeatable) | | `--title <text>` | Title for the session | | `--attach <url>` | Attach to running server (e.g., http://localhost:4096) | | `-p, --password <pw>` | Basic auth password (env: OPENCODE_SERVER_PASSWORD) | | `-u, --username <user>` | Basic auth username (default: opencode) | | `--dir <path>` | Working directory | | `--port <num>` | Local server port (random if omitted) | | `--variant <level>` | Model reasoning effort (e.g., high, max, minimal) | | `--thinking` | Show thinking blocks | | `-i, --interactive` | Run in direct interactive split-footer mode | | `--dangerously-skip-permissions` | Auto-approve non-denied permissions | | `--command <cmd>` | Run a slash command instead of a message | ### Attaching `run` to a Server Avoid MCP cold boot by attaching to a running server: ```bash # Terminal 1: start server opencode serve # Terminal 2: run commands against it opencode run --attach http://localhost:4096 "Fix the lint errors" ``` ## Headless Server: `opencode serve` Start a headless server without TUI. Other clients (run --attach, web, attach) connect to it. ```bash # Start with defaults (random port, localhost) opencode serve # Specify port opencode serve --port 4096 # Expose on all interfaces opencode serve --hostname 0.0.0.0 --port 4096 # Enable mDNS discovery opencode serve --mdns --port 4096 # Allow CORS for specific origins opencode serve --cors http://localhost:5173 --port 4096 ``` ### `serve` Flags | Flag | Default | Description | |------|---------|-------------| | `--port <num>` | 0 (random) | Port to listen on | | `--hostname <addr>` | 127.0.0.1 | Bind address | | `--mdns` | false | Enable mDNS service discovery | | `--mdns-domain <name>` | opencode.local | Custom mDNS domain | | `--cors <origin>` | [] | Additional CORS domains (repeatable) | ### Server REST API The server exposes a REST API at the bound address. Key endpoints: - `GET /app` — Application details - `POST /app/init` — Initialize application - `GET /config/providers` — List configured providers - `GET /mode` — Available modes - `GET /session` — List sessions - `POST /session/init` — Initialize session - `POST /session/summarize` — Summarize session - `POST /session/abort` — Abort running session - `DELETE /session/delete` — Delete session - `GET /file/read?path=<path>` — Read file content - `GET /file/status` — Modified files status - `GET /find/file` — Search files - `GET /find/symbol` — Search symbols - `GET /find` — Search text Authentication: Use `-u` / `-p` flags or `OPENCODE_SERVER_USERNAME` / `OPENCODE_SERVER_PASSWORD` env vars. ## Web Interface: `opencode web` Start server and open the web UI in a browser. Same flags as `serve`. ```bash opencode web opencode web --port 4096 --hostname 0.0.0.0 opencode web --cors http://localhost:5173 ``` You can attach a TUI to the same web server: ```bash # Terminal 1 opencode web --port 4096 # Terminal 2 opencode attach http://localhost:4096 ``` ## Attach to Server: `opencode attach` Connect a TUI to a running `serve` or `web` instance. ```bash opencode attach http://localhost:4096 # With session resume opencode attach http://localhost:4096 -c # With specific session opencode attach http://localhost:4096 -s <session-id> # With auth opencode attach http://localhost:4096 -u opencode -p secretpassword ``` | Flag | Description | |------|-------------| | `--dir <path>` | Working directory | | `-c, --continue` | Continue last session | | `-s, --session <id>` | Resume specific session | | `--fork` | Fork on resume | | `-p, --password <pw>` | Auth password | | `-u, --username <user>` | Auth username | ## ACP Server: `opencode acp` Start an Agent Client Protocol server (same flags as `serve` plus `--cwd`). ```bash opencode acp --port 4096 --cwd /path/to/project ``` ## Session Management ```bash # List sessions opencode session list opencode session list -n 10 --format json # Delete a session opencode session delete <session-id> # Export session as JSON opencode export <session-id> opencode export <session-id> --sanitize # redact sensitive data # Import session from file or share URL opencode import session.json opencode import https://opencode.ai/share/abc123 ``` ## Models & Providers ```bash # List all available models opencode models # Filter by provider opencode models anthropic # Verbose (includes cost info) opencode models --verbose # Refresh model cache opencode models --refresh # Manage providers opencode providers list opencode providers login opencode providers logout ``` ## PR Workflow: `opencode pr` Fetch a GitHub PR branch, checkout, and open opencode: ```bash opencode pr 42 ``` ## GitHub Agent ```bash opencode github install # Install GitHub agent opencode github run # Run the agent opencode github run --event '{"type":"issues","action":"opened",...}' opencode github run --token github_pat_... ``` ## MCP Servers ```bash opencode mcp add # Add an MCP server opencode mcp list # List servers and status opencode mcp auth [name] # Authenticate OAuth MCP server opencode mcp logout [name] # Remove OAuth credentials opencode mcp debug <name> # Debug OAuth connection ``` ## Agent Management ```bash # List agents opencode agent list # Create agent opencode agent create --description "Review code" --mode subagent --tools "read,grep,glob" # Create with model opencode agent create -m anthropic/claude-sonnet-4-20250514 --mode primary # Create at specific path opencode agent create --path .opencode/agents/reviewer.md ``` | `create` Flag | Description | |---------------|-------------| | `--path <dir>` | Output directory | | `--description <text>` | What the agent does | | `--mode <all\|primary\|subagent>` | Agent mode | | `--tools <list>` | Comma-separated permissions: bash,read,edit,glob,grep,webfetch,task,todowrite,websearch,lsp,skill | | `-m <model>` | Model in provider/model format | ## Stats & Debugging ```bash # Token usage and costs opencode stats opencode stats --days 7 --models --project myproject opencode stats --tools 10 # Debug tools opencode debug config # Show resolved config opencode debug paths # Global paths (data, config, cache, state) opencode debug info # Debug information opencode debug skill # List available skills opencode debug agent <name> # Show agent config details opencode debug startup # Startup timing opencode debug lsp # LSP debugging opencode debug rg # Ripgrep debugging opencode debug file # File system debugging opencode debug scrap # List all known projects opencode debug snapshot # Snapshot debugging ``` ## Database Tools ```bash opencode db # Interactive SQLite shell opencode db "SELECT * FROM session LIMIT 5" # Run query opencode db path # Print database path opencode db migrate # Migrate JSON data to SQLite opencode db --format json "SELECT count(*) FROM message" ``` ## Plugins & Extensions ```bash # Install plugin opencode plugin <npm-module> opencode plugin <npm-module> --global opencode plugin <npm-module> --force # Replace existing version ``` ## Upgrade & Uninstall ```bash # Upgrade opencode upgrade opencode upgrade 0.1.48 opencode upgrade --method curl # Uninstall opencode uninstall --dry-run # Preview what gets removed opencode uninstall -c -d -f # Remove but keep config and data ``` ## Shell Completion ```bash opencode completion # Generate completion script (bash/zsh/fish) ``` ## Configuration ### Config Files - **Project**: `.opencode/opencode.json` - **Global**: `~/.config/opencode/config.json` ### Server Config (opencode.json) ```json { "$schema": "https://opencode.ai/config.json", "server": { "port": 4096, "hostname": "0.0.0.0", "mdns": true, "mdnsDomain": "myproject.local", "cors": ["http://localhost:5173"] } } ``` ### Environment Variables | Variable | Description | |----------|-------------| | `OPENCODE_AUTO_SHARE` | Auto-share sessions | | `OPENCODE_CONFIG` | Custom config path | | `OPENCODE_DISABLE_CLAUDE_CODE` | Disable Claude Code compat | | `OPENCODE_SERVER_PASSWORD` | Default auth password | | `OPENCODE_SERVER_USERNAME` | Default auth username | ## TUI Quick Reference When using `opencode` interactively (default, no subcommand): | Key/Command | Action | |-------------|--------| | `Tab` | Switch Build/Plan mode | | `Ctrl+X` | Leader key for shortcuts | | `/help` | Show help | | `/init` | Create AGENTS.md | | `/connect` | Configure AI provider | | `/new` | New session | | `/sessions` | List sessions | | `/models` | Switch model | | `/undo` / `/redo` | Git-based undo/redo | | `/share` / `/unshare` | Share/unshare session | | `/compact` | Compact context | | `/details` | Show details | | `/thinking` | Toggle thinking | | `/export` | Export session | | `@file` | Fuzzy file reference | | `!command` | Execute shell command |
View on GitHub