About opencode
A skill guide for using the opencode CLI, web interface, sessions, models, and server. It supports both interactive work and scripted automation, and includes MCP server management commands.
Key features
- 01Non-interactive runs for automation
- 02Headless server and web interface
- 03Session resume, fork, and export
- 04Model and agent management
- 05MCP server add, auth, and debug
Use cases
- 01Run opencode tasks in CI/CD scripts
- 02Resume or inspect prior sessions
- 03Connect a TUI to a running server
- 04Manage MCP server connections
MCP support
The guide documents commands to add and list MCP servers, authenticate or log out, and debug OAuth connections.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ dimitrigilbert/ ai-skills --skill opencodeAfter installing, type/opencodein Claude Code to confirm it loaded.
Details
From the project READMEOpenCode 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
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.
# 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:
# 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.
# 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 detailsPOST /app/init— Initialize applicationGET /config/providers— List configured providersGET /mode— Available modesGET /session— List sessionsPOST /session/init— Initialize sessionPOST /session/summarize— Summarize sessionPOST /session/abort— Abort running sessionDELETE /session/delete— Delete sessionGET /file/read?path=<path>— Read file contentGET /file/status— Modified files statusGET /find/file— Search filesGET /find/symbol— Search symbolsGET /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.
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:
# 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.
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).
opencode acp --port 4096 --cwd /path/to/project
Session Management
# 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
# 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:
opencode pr 42
GitHub Agent
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
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
# 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
# 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
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
# Install plugin
opencode plugin <npm-module>
opencode plugin <npm-module> --global
opencode plugin <npm-module> --force # Replace existing version
Upgrade & Uninstall
# 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
opencode completion # Generate completion script (bash/zsh/fish)
Configuration
Config Files
- Project:
.opencode/opencode.json - Global:
~/.config/opencode/config.json
Server Config (opencode.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 |