This project contains a comprehensive OpenCode configuration setup designed to enhance AI-assisted development workflows. OpenCode is an open-source AI coding assistant that provides intelligent code completion, refactoring capabilities, and seamless integration with various development tools and platforms.
The configuration includes carefully selected plugins, commands, and agents that extend OpenCode's functionality to support complex development tasks, improve code quality, and streamline development workflows. This setup is particularly focused on providing enterprise-grade features while maintaining flexibility for personal and team use cases.
OpenCode serves as a powerful alternative to traditional IDE-based AI assistants, offering features such as context-aware code generation, multi-file refactoring, intelligent code search, and integration with popular development tools like GitHub, Jira, and Figma. The configuration files in this project customize OpenCode's behavior to match specific workflow requirements and preferences.
This repository is being simplified around three directions:
-
Move skills into Skillless. Skills and skill presets are moving to skillless, so this repository can stay focused on OpenCode configuration instead of becoming a mixed skill/config bundle.
-
Remove Anthropic-specific OpenCode paths. The
anthropicprovider andopencode-with-claudeplugin have been removed from this setup as a personal workflow decision. Claude models currently run better in Claude Code than in OpenCode with Oh-My-OpenAgent, and Claude Code gives smoother control for Claude-centric work. -
Centralize MCPs through MCPProxy and prefer CLIs where possible. Most direct MCP configuration is being removed so multiple coding agents do not each maintain their own MCP setup. Shared MCPs now live behind MCPProxy, using the
retrieve_toolsrouting mode to search tools on demand and lazy-load only the tools matching the current keyword or task instead of injecting every MCP tool into context. Over time, some MCPs are also being replaced with CLI-based presets from Skillless, such as the CLI preset list. The goal is to replace high-token MCP flows such as Exawebsearchand Context7 with CLI workflows where they save tokens and perform better.
The current cycle is removing legacy surfaces and consolidating code intelligence onto faster backends:
-
Consolidated routed providers behind OmniRoute. The direct
nvidia,github-copilot,codex,opencode-zen, andopenaiproviders (and the separate accounts and API keys each required) have all been removed from this setup. Their model surface is now served through a single OmniRoute provider (omni) declared inopencode.json:nvidia/*→omni/nvidia/*(NVIDIA-hosted MiniMax and GPT-OSS builds)github-copilot/*→omni/github/*(GitHub-hosted GPT and Gemini variants)codex/*→omni/codex/*(OpenAI GPT-5.x family hosted via Codex)opencode-zen/*→omni/opencode-zen/*(Zen free-tier; retained as fallback-only sub-namespace underomni/)openai/*→omni/openai/*(direct OpenAI models fronted by OmniRoute)- Google Gemini Flash models →
omni/gemini/* - Zhipu GLM models →
omni/glm/*
OmniRoute fronts these multiple upstream provider services behind one endpoint and one API key (
OMNI_OPENCODE_API_KEY) for centralized management, unified cost tracking, and load balancing across per-account rate limits. It also exposes anauto/best-free"combo" router that auto-selects the best available free model at request time. Agent and task-category routing inoh-my-openagent.jsonnow references every model with theomni/prefix (for exampleomni/nvidia/minimaxai/minimax-m3andomni/auto/best-free), and thegitandwritingcategories lean on the combo router for cost-free fallbacks.Why this saves tokens: centralizing every upstream behind one router lets OmniRoute apply router-level compression (headroom-style pruning, RTK-style token-killing filters on tool output, and dedup of repeated system prompts) before a request ever reaches the upstream model. A direct multi-provider setup cannot do this — each provider sees the full raw payload. Consolidation also means a single billed surface for cost tracking and a single rate-limit pool to load balance across, instead of N separate accounts each with their own quota ceiling.
-
Removed
opencode-historian. The historian plugin and agent have been removed from this setup. The memory-management workflow it provided is no longer used in this configuration, and the plugin does not need to be re-added from another source. -
Added
codebase-memory-mcpto MCPProxy.codebase-memory-mcpwas added as a new MCPProxy upstream for better performance on semantic code intelligence. It builds a persistent tree-sitter knowledge graph and answers structural queries in under a millisecond. It runs alongsideserenaandast_grep, not as a replacement — the three backends are complementary and routed by intent through MCPProxy'sretrieve_toolsmode, with per-tool on/off toggling used to avoid duplicate tool surfaces during a session. See Code Intelligence for the routing rules.
Moved OmniRoute access to Tailscale MagicDNS. OmniRoute Base URL changed from https://omniroute.isaac.ng/v1 (
public Cloudflare Tunnel) to http://rk3528:20128/v1 (Tailscale MagicDNS hostname). The Tailscale tailnet keeps
OpenCode-to-OmniRoute traffic private, skips the TLS hop, and has lower latency than round-tripping through Cloudflare.
The public omniroute.isaac.ng domain is retained via Cloudflare Tunnel for non-Tailscale hosts (CI runners, external
services) and is preferred over opening inbound ports to direct internet exposure.
See Network Architecture.
Makefile provides essential commands manage OpenCode configuration:
| Command | Description |
|---|---|
make sync |
Sync OpenCode configuration to ~/.config/opencode/. Copies AGENTS.md, oh-my-openagent.json, opencode.json, and tui.json; mirrors root ./agents/ and ./commands/ directories when present. |
make check |
Validate config cross-references and drift using scripts/check-config.py. |
make help |
Display available targets descriptions. |
Workflow:
- Run
make synccopy configuration files and any root-levelagents//commands/files to OpenCode user config. - Run
make checkvalidate routed models, provider coverage, concurrency keys, and deployed-copy drift. - Use
make helpsee all available commands.
Current repository stores project-scoped commands under .opencode/commands/; no root-level agents/ or commands/
directories are present.
Configuration
Configuration uses two explicitly enabled provider routes in opencode.json: local omlx and remote omni. Default
model is omni/glm/glm-5.2; small model is omni/codex/gpt-5.4-mini.
Core runtime settings:
| Setting | Current value |
|---|---|
| Default model | omni/glm/glm-5.2 |
| Small model | omni/codex/gpt-5.4-mini |
| Enabled providers | omlx, omni |
| Skill permissions | * allowed |
| Todo tools | todoread, todowrite allowed |
| Compaction | auto: true, prune: true |
| Watcher ignores | node_modules/**, dist/**, .git/**, *.lock, **/*.log, .cache/**, build/**, __pycache__/**, .venv/**, venv/** |
oMLX
omlx is local OpenAI-compatible provider for MLX-hosted models.
| Field | Value |
|---|---|
| Package | @ai-sdk/openai-compatible |
| Name | oMLX |
| Base URL | http://127.0.0.1:8080/v1 |
| API key | sk_live_dummy |
Configured models:
| Model ID | Display name | Context | Input | Output |
|---|---|---|---|---|
gemma-4-26b-a4b-it-mlx-8bit |
Gemma 4 26B A4B MLX 8-bit | 262144 | 160000 | 16384 |
qwen3.6-35b-a3b-ud-mlx-4bit |
Qwen3.6 35B A3B MLX 4-bit | 262144 | 160000 | 16384 |
qwythos-9b-claude-mythos-5-1m |
Qwythos 9B Claude Mythos 5 1M | 1000000 | 160000 | 16384 |
OmniRoute
omni is the primary routed OpenAI-compatible provider. It centralizes hosted Codex, GLM, Gemini, GitHub, NVIDIA, and
free-model routes behind one endpoint.
| Field | Value |
|---|---|
| Package | @ai-sdk/openai-compatible |
| Name | OmniRoute |
| Base URL | http://rk3528:20128/v1 |
| API key | {env:OMNI_OPENCODE_API_KEY} |
OmniRoute is reachable over Tailscale MagicDNS, not the public internet:
rk3528is the Tailscale MagicDNS hostname of the OmniRoute host (port20128).omniroute.isaac.ngis the public domain; a Cloudflare Tunnel terminates internet traffic to the host.- OpenCode hits
rk3528:20128directly over the Tailscale tailnet, bypassing Cloudflare Tunnel. Private tailnet traffic stays off the public internet, with no TLS termination hop and lower latency. - The Cloudflare Tunnel front door exists only when the tailnet is unreachable (e.g. CI runners on non-Tailscale hosts). This is the preferred path over direct internet exposure (port forwarding) because Cloudflare Tunnel never opens inbound ports on the host.
| Model ID | Display name | Reasoning | Attachments | Context | Input | Output | Variants |
|---|---|---|---|---|---|---|---|
auto/best-free |
Best Free Combo | yes | no | 262144 | 262144 | 131072 | — |
nvidia/minimaxai/minimax-m2.7 |
MiniMax M2.7 | yes | no | 204800 | 204800 | 131072 | — |
nvidia/minimaxai/minimax-m3 |
MiniMax M3 | yes | yes | 1000000 | 1000000 | 16384 | — |
nvidia/openai/gpt-oss-120b |
GPT OSS 120B | yes | no | 128000 | 128000 | 8192 | — |
codex/gpt-5.4 |
GPT5.4 | yes | yes | 200000 | 200000 | 128000 | low, medium, high, xhigh |
codex/gpt-5.4-mini |
GPT5.4Mini | yes | yes | 409600 | 409600 | 131072 | low, medium, high, xhigh |
codex/gpt-5.5 |
GPT5.5 | yes | yes | 400000 | 272000 | 128000 | low, medium, high, xhigh |
codex/gpt-5.6-luna |
GPT5.6Luna | yes | no | 400000 | 400000 | 128000 | low, medium, high, xhigh, max |
codex/gpt-5.6-sol |
GPT5.6Sol | yes | no | 400000 | 400000 | 128000 | low, medium, high, xhigh, max |
codex/gpt-5.6-terra |
GPT5.6Terra | yes | no | 400000 | 400000 | 128000 | low, medium, high, xhigh, max |
github/gpt-4o-mini |
GPT 4o Mini | no | yes | 128000 | 128000 | 4096 | — |
github/gemini-3.5-flash |
Gemini3.5Flash | yes | yes | 200000 | 128000 | 64000 | low, medium, high, xhigh |
gemini/gemini-2.5-flash |
Gemini2.5Flash | yes | yes | 1048576 | 1048576 | 65536 | low, medium, high, xhigh |
gemini/gemini-2.5-flash-lite |
Gemini2.5Flash Lite | yes | yes | 1048576 | 1048576 | 65536 | low, medium, high, xhigh |
gemini/gemini-3-flash-preview |
Gemini 3 Flash Preview | yes | yes | 1048576 | 1048576 | 65536 | low, medium, high, xhigh |
gemini/gemini-3.1-flash-lite |
Gemini3.1Flash Lite | yes | yes | 1048576 | 1048576 | 65536 | low, medium, high, xhigh |
gemini/gemini-3.5-flash |
Gemini3.5Flash | yes | yes | 1048576 | 1048576 | 65536 | low, medium, high, xhigh |
glm/glm-4.5 |
GLM4.5 | yes | no | 131072 | 131072 | 98304 | — |
glm/glm-4.5-air |
GLM4.5Air | yes | no | 131072 | 131072 | 98304 | — |
glm/glm-4.6 |
GLM4.6 | yes | no | 204800 | 204800 | 131072 | — |
glm/glm-4.7 |
GLM4.7 | yes | no | 204800 | 204800 | 131072 | — |
glm/glm-5 |
GLM 5 | yes | no | 204800 | 204800 | 131072 | — |
glm/glm-5-turbo |
GLM 5 Turbo | yes | no | 200000 | 200000 | 131072 | — |
glm/glm-5.1 |
GLM5.1 | yes | no | 200000 | 200000 | 131072 | — |
glm/glm-5.2 |
GLM5.2 | yes | no | 1000000 | 1000000 | 131072 | high, max |
OmniRoute is a single OpenAI-compatible endpoint that fronts multiple upstream provider services behind one API key.
This is the official OmniRoute architecture — every entry in the Model Catalog above is an upstream service namespace
served through the omni provider, not a separate provider declaration in opencode.json.
Upstream provider services fronted by omni:
| Namespace | Upstream service | Origin of the surface |
|---|---|---|
omni/codex/* |
OpenAI GPT-5.x family (hosted via Codex) | Migrated from the direct codex provider |
omni/github/* |
GitHub-hosted GPT and Gemini variants (former Copilot models) | Migrated from the direct github-copilot provider |
omni/openai/* |
Direct OpenAI models fronted by OmniRoute | Migrated from the direct openai provider |
omni/gemini/* |
Google Gemini Flash models | Migrated from the direct gemini provider |
omni/glm/* |
Zhipu GLM models | Migrated from the direct glm provider |
omni/nvidia/* |
NVIDIA-hosted MiniMax and GPT-OSS builds | Migrated from the direct nvidia provider |
omni/opencode-zen/* |
Zen free-tier models | Migrated from the direct opencode-zen provider (fallback-only) |
omni/auto/best-free |
Combo router — auto-selects best available free model | Native OmniRoute router; no upstream equivalent |
Removed direct providers. The following direct providers previously declared in opencode.json have been removed
and migrated under omni/ as the namespaces above:
nvidia— separate NVIDIA build account and API key removedgithub-copilot— separate GitHub Copilot account and token removedcodex— separate Codex/OpenAI account and API key removedopencode-zen— separate Zen account removed; retained only asomni/opencode-zen/big-picklefallback reference inoh-my-openagent.json
opencode.json now declares only two enabled providers: omlx (local MLX host) and omni (OmniRoute). Every agent
and category in oh-my-openagent.json references models using the omni/<namespace>/<model> form.
Why centralize behind OmniRoute:
- Token savings at the router level. OmniRoute applies router-level compression — headroom-style prompt pruning, RTK-style token-killing filters on tool output, and deduplication of repeated system prompts — before a request reaches the upstream model. Direct multi-provider setups cannot do this; each provider sees the full raw payload.
- Centralized management. One API key (
OMNI_OPENCODE_API_KEY), one endpoint, one auth surface to rotate. - Cost tracking. A single billed surface for all model usage, instead of N separate billing dashboards.
- Load balancing. OmniRoute balances requests across upstream accounts behind the same namespace, so per-account rate-limit ceilings no longer cap a single OpenCode session.
Project command /blacklist-sync keeps Zen provider free-tier routing safe by refreshing provider/model blacklist data.
Current opencode.json uses direct omlx and omni providers, while Oh-My-OpenAgent fallback model IDs may still
reference omni/opencode-zen/big-pickle as a fallback target.
oh-my-openagent.json contains model assignments for specialized agents and category-routed background tasks. Model IDs
below include their provider prefix exactly as configured.
Agent-Specific Model Assignments
| Agent | Role | Primary model | Variant | Fallback models | Notes |
|---|---|---|---|---|---|
sisyphus |
Orchestrator | omni/glm/glm-5.2 |
max |
omni/glm/glm-5.1, omni/opencode-zen/big-pickle |
Ultrawork: omni/codex/gpt-5.5 (medium). Prompt: delegate heavily to hephaestus and parallelize exploration. |
metis |
Scope analysis | omni/glm/glm-5.2 |
max |
omni/codex/gpt-5.5 (high) |
Pre-planning consultation. |
prometheus |
Planning | omni/codex/gpt-5.5 |
high |
omni/glm/glm-5.2 (max) |
Prompt: keep plans concise and focus file structure / key decisions. |
atlas |
Codebase mapping | omni/codex/gpt-5.5 |
medium |
omni/nvidia/minimaxai/minimax-m3, omni/nvidia/minimaxai/minimax-m2.7 |
Broad codebase analysis and mapping. |
hephaestus |
Implementation | omni/codex/gpt-5.6-sol |
medium |
omni/codex/gpt-5.5 (medium) |
Primary implementation agent. Prompt: own codebase, explore, decide, execute; use LSP and ast-grep aggressively. |
oracle |
Strategic reasoning | omni/codex/gpt-5.5 |
high |
omni/glm/glm-5.2 (max) |
High-stakes architecture and reasoning. |
momus |
Review | omni/codex/gpt-5.6-sol |
xhigh |
omni/codex/gpt-5.5 (xhigh), omni/glm/glm-5.2 (max) |
Plan and implementation critique. |
explore |
Codebase analysis | omni/nvidia/minimaxai/minimax-m3 |
— | omni/nvidia/minimaxai/minimax-m2.7, omni/gemini/gemini-3-flash-preview, omni/codex/gpt-5.4-mini |
Fast contextual search and code navigation. |
librarian |
Research | omni/nvidia/minimaxai/minimax-m3 |
— | omni/nvidia/minimaxai/minimax-m2.7, omni/gemini/gemini-3-flash-preview, omni/codex/gpt-5.4-mini |
Documentation and external code research. |
multimodal-looker |
Visual analysis | omni/codex/gpt-5.5 |
medium |
omni/glm/glm-5-turbo, omni/codex/gpt-5.4-mini |
Image and multimodal interpretation. |
sisyphus-junior |
Category executor | omni/codex/gpt-5.5 |
medium |
omni/nvidia/minimaxai/minimax-m3, omni/nvidia/minimaxai/minimax-m2.7, omni/opencode-zen/big-pickle |
Backs task() category delegation. |
Task Category Model Assignments
| Category | Primary model | Variant | Fallback models | Notes |
|---|---|---|---|---|
visual-engineering |
omni/glm/glm-5.2 |
max |
omni/glm/glm-5.1 |
Frontend, UI/UX, styling, animation. |
artistry |
omni/codex/gpt-5.5 |
high |
omni/glm/glm-5.2 (max) |
Creative problem-solving. |
ultrabrain |
omni/codex/gpt-5.6-sol |
xhigh |
omni/codex/gpt-5.5 (xhigh), omni/glm/glm-5.2 (max) |
Hard logic-heavy tasks. |
deep |
omni/codex/gpt-5.6-terra |
xhigh |
omni/codex/gpt-5.6-sol (high), omni/glm/glm-5.2 (max) |
Deep autonomous problem-solving. |
quick |
omni/codex/gpt-5.4-mini |
— | omni/gemini/gemini-3-flash-preview, omni/nvidia/minimaxai/minimax-m3, omni/nvidia/minimaxai/minimax-m2.7 |
Simple edits and fast tasks. |
unspecified-high |
omni/codex/gpt-5.5 |
high |
omni/glm/glm-5.1, omni/glm/glm-5.2 (max) |
Higher-effort uncategorized tasks. |
unspecified-low |
omni/codex/gpt-5.6-luna |
xhigh |
omni/codex/gpt-5.5 (medium), omni/gemini/gemini-3-flash-preview, omni/nvidia/minimaxai/minimax-m3, omni/nvidia/minimaxai/minimax-m2.7 |
Lower-effort uncategorized tasks. |
writing |
omni/gemini/gemini-3-flash-preview |
— | omni/nvidia/minimaxai/minimax-m3, omni/nvidia/minimaxai/minimax-m2.7, omni/auto/best-free |
Documentation and prose. |
git |
omni/auto/best-free |
— | omni/glm/glm-4.7, omni/glm/glm-4.5-air, omni/opencode-zen/big-pickle |
All git operations. Prompt: focus atomic commits, clear messages, safe operations. |
Runtime and Background Task Configuration
| Area | Current configuration |
|---|---|
| Team mode | Enabled with tmux visualization |
| Codegraph | Disabled (enabled: false, auto_init: false, auto_provision: false) |
| Disabled OMO MCPs | context7, websearch, ast_grep, grep_app, codegraph |
| Claude Code plugin overrides | ecc@ecc, codex@openai-codex, andrej-karpathy-skills@karpathy-skills, claude-code-setup@claude-plugins-official, and understand-anything@understand-anything disabled |
| Git master | No commit footer, no co-authored-by, GIT_MASTER=1 prefix |
| Background task concurrency | Default 5; provider concurrency omlx: 1, omni: 20 |
| Runtime fallback | Enabled; retries 400, 401, 429, 503, 529; max 3 fallback attempts; 60s cooldown; 30s timeout; notifications enabled |
Model Concurrency Caps
| Model prefix | Concurrency |
|---|---|
omni/codex/gpt-5.6-sol |
1 |
omni/codex/gpt-5.6-terra |
2 |
omni/codex/gpt-5.6-luna |
4 |
omni/codex/gpt-5.5 |
2 |
omni/codex/gpt-5.4 |
4 |
omni/codex/gpt-5.4-mini |
6 |
omni/glm/glm-4.5 |
10 |
omni/glm/glm-4.5-air |
5 |
omni/glm/glm-4.6 |
3 |
omni/glm/glm-4.7 |
2 |
omni/glm/glm-5 |
2 |
omni/glm/glm-5-turbo |
1 |
omni/glm/glm-5.1 |
10 |
omni/glm/glm-5.2 |
10 |
opencode.json currently enables two plugins:
| Plugin | Purpose | Notes |
|---|---|---|
@nick-vi/opencode-type-inject@latest |
Type injection support for OpenCode workflows. | Installed through OpenCode plugin configuration. |
oh-my-openagent@latest |
Provides Sisyphus, task categories, team mode, background tasks, model routing, and agent orchestration. | Configured through oh-my-openagent.json. |
opencode.json configures a single manual MCP entry:
| MCP | Enabled | Type | URL | Purpose |
|---|---|---|---|---|
mcp-proxy |
yes | remote |
http://127.0.0.1:8081/mcp |
Central MCPProxy endpoint for routed tool discovery and upstream MCP access. |
Direct OpenCode MCP surface is intentionally minimal. Shared MCPs are centralized behind MCPProxy and discovered through
retrieve_tools / routed tool search instead of injecting every upstream tool into every OpenCode session.
oh-my-openagent.json disables these plugin-provided MCPs: context7, websearch, ast_grep, grep_app, and
codegraph. This keeps context lighter and avoids duplicate MCP surfaces when MCPProxy or CLI equivalents are
preferred.
Commands
Project-scoped commands currently live under .opencode/commands/.
| Command | Purpose |
|---|---|
/blacklist-sync |
Dynamically synchronize the OpenCode blacklist for the Zen provider, preserving free-tier routing. |
/readme-sync |
Synchronize README.md with actual configuration files. |
There is no root-level commands/ directory currently. make sync still supports mirroring one if added later.
tui.json currently selects the standard OpenCode terminal theme:
| Setting | Value |
|---|---|
| Theme | opencode |
Additional TUI customization can be added to tui.json when needed.
Agents
OpenCode uses plugin-provided agents from Oh-My-OpenAgent. There are currently no repo-local agents/ or
.opencode/agents/ files in this project.
Configured agents and roles:
| Agent | Role |
|---|---|
sisyphus |
Primary orchestrator for complex, multi-step tasks and delegation. |
sisyphus-junior |
Lightweight backing agent for task() category delegation. |
hephaestus |
Implementation-focused agent for code edits and execution. |
oracle |
Strategic reasoning and architecture advisor. |
momus |
Review and critique agent. |
metis |
Pre-planning scope-analysis agent. |
prometheus |
Planning agent for concise implementation plans. |
atlas |
Codebase mapping and structure analysis. |
explore |
Fast contextual code search and navigation. |
librarian |
Documentation, external source, and library research. |
multimodal-looker |
Image, PDF, and multimodal analysis. |
Model assignments for these agents are documented in Models Configuration.
Team Mode
Team mode is enabled by oh-my-openagent.json:
| Setting | Value |
|---|---|
team_mode.enabled |
true |
team_mode.tmux_visualization |
true |
This enables parallel team orchestration with tmux visualization for agent workflows.
Reference Links
- OpenCode configuration schema
- OpenCode docs
- @nick-vi/opencode-type-inject on npm
- Oh-My-OpenAgent repository
- Oh-My-OpenAgent schema
Reference links reflect currently documented configuration surfaces only. Direct MCPs and providers removed from
opencode.json should not be reintroduced here unless configuration changes add them back.