OpenCode harness with batteries included. Minimal plugins, maximum capability via skills and commands.
@op1/repromptnow accepts both leading and trailingopxmarkers on chat prompts and slash-command arguments.- Marked prompts can be recompiled after the first turn, and multi-repo retries now prioritize repo/path hints more aggressively.
@op1/workspacecan forward plugin logs to the host app logger; stderr logging stays opt-in withOP1_PLUGIN_STDERR_LOGS=true.
bunx @op1/installThe interactive installer will:
- Back up your existing config (if any)
- Install a lean set of agent/command/skill templates
- Configure workspace-first plugins (
@op1/workspace,@op1/delegation, and optional@op1/reprompt/@op1/lsp/@op1/ast-grep) - Configure MCP servers (Context7 and Grep.app by default, with optional categories)
- Let you configure per-agent models or a global model
OpenCode beta lean is an installer profile for current beta users: keep the op1 workflow layer, trim overlap with OpenCode beta, and add heavier plugins only when they still change the outcome. Choose it during install, then see packages/install/docs/opencode-beta-lean.md for the audit notes.
If you want RTK to scaffold the same companion path, use:
rtk init -g --opencodeThat path can set up the OpenCode companion config, but RTK does not intercept shell calls made inside subagents. Keep that limitation in mind if your workflow depends on delegated shell execution.
Quick readiness checks:
rtk init --show
opencode debug configIf you prefer manual setup:
# Install plugins in your project
bun add @op1/workspace @op1/delegation @op1/lsp @op1/ast-grepOptional heavier add-on for semantic retrieval and indexing workflows:
bun add @op1/code-intelThen add to your opencode.json:
{
"plugin": ["@op1/workspace", "@op1/delegation", "@op1/lsp", "@op1/ast-grep"]
}If you want the delegation browser inside the OpenCode TUI, also add ~/.config/opencode/tui.json:
{
"$schema": "https://opencode.ai/tui.json",
"plugin": ["@op1/delegation"]
}Use the package root in tui.json. OpenCode resolves @op1/delegation to the package's ./tui export automatically.
| Package | Description | Install |
|---|---|---|
@op1/install |
Interactive CLI installer | bunx @op1/install |
@op1/workspace |
Plan management, notepads, verification hooks | bun add @op1/workspace |
@op1/delegation |
Async task override, background output, cancellation, task diagnostics, plus an optional @op1/delegation/tui read-only task browser |
bun add @op1/delegation |
| Package | Description | Install |
|---|---|---|
@op1/reprompt |
Incoming prompt compiler and bounded retry helper | bun add @op1/reprompt |
| Package | Description | Install |
|---|---|---|
@op1/ast-grep |
AST-aware code search and replace (25 languages) | bun add @op1/ast-grep |
@op1/code-intel |
Semantic code graph — hybrid search, impact analysis, repo map | bun add @op1/code-intel |
@op1/lsp |
Language server integration (navigation, refactoring) | bun add @op1/lsp |
@op1/code-intel is an optional heavier package rather than part of the default lean harness path.
op1 keeps the plugin layer lean and ships reusable templates for everything else.
- Agent templates:
packages/install/templates/agents/ - Command templates:
packages/install/templates/commands/ - Skill templates:
packages/install/templates/skills/
These are copied to ~/.config/opencode/ by the installer and can be customized per machine.
The simplest way to add a custom skill is to create a local skill folder:
mkdir -p ~/.config/opencode/skills/my-skill
$EDITOR ~/.config/opencode/skills/my-skill/SKILL.mdOpenCode will discover skills from that directory directly.
After installation, your ~/.config/opencode/opencode.json will include:
{
"plugin": ["@op1/workspace", "@op1/delegation", "@op1/lsp", "@op1/ast-grep"],
"model": "your-configured-model",
"mcp": {
"context7": { "type": "remote", "url": "https://mcp.context7.com/mcp" },
"grep_app": { "type": "remote", "url": "https://mcp.grep.app" }
}
}If delegation is enabled, the installer also writes ~/.config/opencode/tui.json:
{
"$schema": "https://opencode.ai/tui.json",
"plugin": ["@op1/delegation"]
}mcp0 is the local MCP control-plane path for token-efficient MCP usage in op1.
- Installer category:
mcp0 (Warmplane) - Installer default: recommended and preselected on macOS, or when
warmplaneis already available onPATH - Expected command:
~/.local/share/opencode/bin/warmplane mcp-server --config ~/.config/opencode/mcp0/mcp_servers.json - Intended compact tool namespace:
mcp0_*
When selected in the installer, op1 rewrites the local MCP topology to a single mcp0 facade entry, scaffolds ~/.config/opencode/mcp0/mcp_servers.json for the chosen downstream MCPs, and removes stale direct MCP tool grants so the client does not keep a mixed direct+facade configuration.
For the current macOS-first shipping path, @op1/install also manages the Warmplane binary under ~/.local/share/opencode/bin/warmplane so mcp0 does not depend on a separately managed Rust or Homebrew install.
Use mcp0_health for binary/config/readiness checks and mcp_oauth_helper for Warmplane-managed OAuth visibility behind the facade.
For OAuth-backed downstream MCPs behind mcp0, the normal operator flow is:
~/.local/share/opencode/bin/warmplane auth discover --config ~/.config/opencode/mcp0/mcp_servers.json --server <server>~/.local/share/opencode/bin/warmplane auth login --config ~/.config/opencode/mcp0/mcp_servers.json --server <server>~/.local/share/opencode/bin/warmplane auth status --config ~/.config/opencode/mcp0/mcp_servers.json --server <server>
If integrated login is not convenient, fall back to ~/.local/share/opencode/bin/warmplane auth start followed by ~/.local/share/opencode/bin/warmplane auth exchange.
Provider notes:
- Figma is the cleanest standards-first native path.
- Linear uses native Warmplane OAuth with explicit fallback metadata because its OAuth endpoints are documented but not discoverable through the MCP well-known chain.
- Notion should still be treated as a compatibility exception until PKCE + loopback redirect behavior is verified end to end.
When enabled, keep mcp0 available only to agents that need it (for example researcher, coder, frontend) to reduce unnecessary tool-surface exposure.
Configure different models for different agents:
{
"agent": {
"build": { "model": "anthropic/claude-opus-4-20250514" },
"explore": { "model": "anthropic/claude-haiku-3-5-20241022" },
"oracle": { "model": "openai/gpt-4o" }
}
}# Install dependencies
bun install
# Build all packages
bun run build
# Typecheck
bun run typecheck
# Lint
bun run lintMIT