- Introduced multiple markdown files covering agent spawn packages, inter-agent communication protocols, and multi-agent orchestration tools. - Detailed analysis of official SDKs for CLI agents (Claude Code, Codex, Gemini) and their integration potential. - Documented various competitor approaches to agent spawning and communication, highlighting strengths and weaknesses. - Provided insights into best practices for implementing multi-provider support within Electron applications. This comprehensive documentation aims to enhance understanding of the current AI agent ecosystem and serve as a resource for developers and stakeholders.
25 KiB
OpenCode Deep Dive — Comprehensive Analysis (March 2026)
Executive Summary
OpenCode — open-source AI coding agent от Anomaly (ex-SST), ~126K GitHub stars, 800+ контрибьюторов, 5M MAU. Написан на TypeScript (Bun) + Go (TUI), MIT license. Поддерживает 75+ LLM-провайдеров через Models.dev. Архитектура client/server с persistent sessions. Agent Teams — community-implemented (не core), file-based JSONL inbox, peer-to-peer messaging, multi-provider teams (Claude+Codex+Gemini доказано). Главный конкурент Claude Code в terminal-agent пространстве.
Claim verification:
- "95K+ stars" — занижено, на март 2026 ~126-129K stars
- "75+ providers" — подтверждено, через Models.dev + AI SDK
- "Multi-agent team support" — частично: agent teams реализованы community (opencode-ensemble plugin + PR #12730-12732), НЕ core feature, но доказали работу Claude+Codex+Gemini вместе
1. What IS OpenCode?
Основные факты
| Параметр | Значение |
|---|---|
| Название | OpenCode |
| Организация | Anomaly (ex-SST / Serverless Stack) |
| GitHub | anomalyco/opencode |
| Сайт | opencode.ai |
| Stars | ~126-129K (март 2026) |
| Contributors | 800+ |
| Commits | 10,000+ |
| MAU | 5M+ developers |
| License | MIT |
| Языки | TypeScript (Bun) — backend, Go — TUI, Zig — OpenTUI core |
| Дата запуска | 19 июня 2025 |
| Версии | Terminal CLI, Desktop App (beta), IDE extensions |
Кто создал
Founders:
- Jay V (CEO) — задает стратегию, enterprise sales. Университет Waterloo.
- Frank Wang (CTO) — техническая архитектура. Model-agnostic дизайн с нуля. Университет Waterloo.
- Dax Raad — public face, подкасты, Twitter. Ex-Amazon, ex-Ironbay. Присоединился к SST в 2021.
- Adam Elmore — AWS Hero, indie hacker, AWS FM podcast host.
Происхождение: Jay и Frank создали Anomaly, затем Serverless Stack (SST) — прошли Y Combinator, привлекли инвестиции от основателей PayPal, LinkedIn, Yelp, YouTube. SST набрал 25K stars, стал прибыльным в 2025. Во время SST команда строила terminal-first UIs и даже запустила Terminal — подписку на кофе через терминал ($100K продаж в первый год).
Скандальная история: Fork и Split (2025)
- Оригинальный OpenCode создал Kujtim Hoxha на Go с Bubble Tea TUI
- Charm (компания, создатель Bubble Tea) приобрела проект, наняла Kujtim
- Dax Raad и Adam Doty (из SST) были major contributors, им не понравился ход
- Обвинения: Charm переписал git history, удалил контрибуции, забанил критиков
- Результат: Charm переименовал свою версию в Crush, а Dax/Adam сохранили бренд OpenCode под SST (anomalyco)
- Fork полностью переписан с Go на TypeScript + Bun для использования Vercel AI SDK
Скандал с Anthropic (январь 2026)
- Ранние версии OpenCode подделывали HTTP-заголовок
claude-code-20250219, выдавая себя за Claude Code - 9 января 2026 Anthropic заблокировал сторонние tools от использования Claude OAuth
- 19 февраля 2026 Anthropic обновил Terms of Service, запретив OAuth токены Free/Pro/Max в third-party tools
- OpenCode удалил весь Claude OAuth код в тот же день
- Запустили OpenCode Zen (pay-as-you-go gateway) и OpenCode Black ($200/мес, enterprise)
- 18,000 новых stars за 2 недели — controversy привлекла внимание
2. Поддержка 75+ провайдеров
Подтверждено. OpenCode использует Models.dev + Vercel AI SDK для поддержки 75+ LLM-провайдеров.
Ключевые провайдеры
| Провайдер | Детали |
|---|---|
| OpenAI (GPT, Codex) | API key |
| Anthropic (Claude) | API key (после блокировки OAuth) |
| Google Gemini | API key + Vertex AI |
| AWS Bedrock | IAM credentials |
| Groq | API key |
| Azure OpenAI | Enterprise endpoint |
| OpenRouter | Pre-loaded models |
| Ollama (local) | opencode --model ollama/qwen2.5-coder:32b |
| GitHub Copilot | Copilot subscription (Pro+ для некоторых моделей) |
| ChatGPT Plus/Pro | OAuth login |
| Cloudflare AI Gateway | Unified billing, no per-provider keys |
| SAP AI Core | 40+ models, enterprise platform |
| GitLab | Agent Platform (18.8+) |
| Deepseek | API key |
| Local models | Any OpenAI-compatible endpoint |
Как это работает
User → OpenCode → AI SDK → Models.dev → Provider API → LLM Response
- Models.dev — реестр моделей с метаданными
- AI SDK (от Vercel) — универсальный SDK для вызова разных провайдеров
/connectкоманда — добавление credentials/modelsкоманда — список доступных моделей- Config: можно назначить разные модели для разных agent-ролей (plan vs build)
Монетизация через провайдеров
| Tier | Цена | Описание |
|---|---|---|
| Free | $0 | BYO API key или local models (Ollama) |
| OpenCode Zen | Pay-per-token | Curated gateway, pass-through pricing |
| OpenCode Black | $200/мес | Enterprise, multi-provider (sold out) |
3. Agent Teams: Multi-Agent Support
Статус: Community-Implemented, NOT Core Feature
Важное уточнение: Agent Teams в OpenCode — это community contribution, а не встроенная core-фича (в отличие от Claude Code).
- GitHub Issue #12661 — Feature request для native agent teams
- PRs #12730-12732 (dev branch) — community implementation (core, tools & routes, TUI)
- opencode-ensemble — SDK plugin для agent teams
- opencode-workspace — multi-agent orchestration harness
Архитектура Agent Teams (community implementation)
Messaging: Two-Layer System
Layer 1: Inbox (Source of Truth)
team_inbox/<projectId>/<teamName>/<agentName>.jsonl
Каждая строка: { id, from, text, timestamp, read }
Layer 2: Session Injection (Delivery)
Message → injected as synthetic user message → LLM видит и обрабатывает
Ключевые отличия от Claude Code:
| Аспект | Claude Code | OpenCode |
|---|---|---|
| Storage | JSON array (O(N) writes) | JSONL append-only (O(1)) |
| Messaging | Polling JSON files | Event-driven auto-wake |
| Communication | Leader-centric routing | Full mesh peer-to-peer |
| Multi-model | Single provider only | Multiple providers per team |
| Process model | 3 backends (in-process, tmux, iTerm2) | Single process |
| State tracking | Implicit | Two-level state machines |
State Machines (Dual)
Member Status (5 states): ready → busy → shutdown_requested → shutdown (terminal), error
- Guards:
guard: true(prevents race conditions),force: true(crash recovery)
Execution Status (10 states): Fine-grained prompt loop position tracking
Peer-to-Peer Messaging
Любой teammate может отправить сообщение любому другому по имени — не только через lead. Lead фокусируется на orchestration, а не routing.
Sub-Agent Isolation
Team tools (team_create, team_spawn, team_message) запрещены для sub-agents через deny rules + tool visibility hiding. Sub-agents — одноразовые workers, их output не должен попадать в coordination channel.
Доказано: Claude + Codex + Gemini в одной команде
Тест 1: Architecture Drama (3 провайдера)
- GPT-5.3 Codex + Gemini 2.5 Pro + Claude Sonnet 4
- Координация через один message bus
- Claiming tasks из shared list
- "Arguing about architecture" через peer-to-peer messaging
Тест 2: Super Bowl Prediction (4 Claude Opus)
- Stats analyst + Betting analyst + Matchup analyst + Injury scout
- Full-mesh topology
- Atomic task claiming под concurrent access
Тест 3: NFL Research (2 Gemini)
- Обнаружена проблема: Gemini генерировал ~50 одинаковых "task complete" сообщений в цикле
Ограничения
- Agent teams пока на dev branch, не в stable release
- Нет multi-caller support в core — субагент не знает, кто с ним говорит (кроме Parent)
- Gemini имеет проблемы с message loop
- Recovery при crash: нет auto-restart, user должен re-engage teammates
4. Architecture Deep Dive
Двухъязычная система
┌──────────────────────────────────────────────┐
│ User runs `opencode` │
│ (single Bun-compiled binary) │
└──────────────────┬───────────────────────────┘
│
┌────────▼─────────┐
│ Bun Process │
│ (TypeScript) │──── HTTP Server (API + SSE events)
│ - LLM calls │ ▲
│ - Tool exec │ │ OpenAPI SDK
│ - Sessions │ │ (auto-generated by Stainless)
│ - LSP client │ ┌────┴──────┐
│ - Plugin system │ │ Go TUI │
│ - MCP client │ │ (Client) │
└──────────────────┘ └────────────┘
│
(Migrating to OpenTUI:
Zig core + React/Solid/Vue)
Backend (TypeScript + Bun)
- Runtime: Bun (fast JavaScript runtime)
- Build:
bun build .. --compile— single executable - HTTP Server: API + SSE events для real-time updates
- Storage: SQLite для persistent data
- LLM Communication: Через Vercel AI SDK
- Tool Execution: LLM решает когда вызвать tool, SDK вызывает
executeфункцию - LSP Integration: Отправляет
textDocument/didChange, получает diagnostics, кормит LLM - 40+ event types: Через GlobalBus, доставка через SSE
Frontend (Go TUI → OpenTUI)
- Текущий: Go с Bubble Tea framework
- Мигрирует на: OpenTUI — Zig core + TypeScript bindings
- OpenTUI: React/SolidJS/Vue reconcilers, Bun exclusive (Node/Deno в процессе)
- Persistent sessions: Сервер в background, TUI реконнектится после disconnect/sleep
Client-Server Protocol
- OpenAPI spec → auto-generated SDK через Stainless
- 3 official SDKs: TypeScript, Go, Python
- SSE для real-time events (40+ event types)
- Zero dependencies в SDK
Desktop App
- Beta на macOS, Windows, Linux
- Также есть community OpenGUI — Electron + React
IDE Extensions
VS Code, Cursor, Zed, Windsurf, VSCodium + GitHub и GitLab integrations.
5. Built-in Tools
| Tool | Описание |
|---|---|
| Shell | Выполнение bash команд |
| Edit | Exact string replacement в файлах |
| Write | Создание/перезапись файлов |
| Read | Чтение файлов |
| Grep | Regex поиск по codebase |
| LSP | Code intelligence: definitions, references, hover, call hierarchy |
Agents
| Agent | Доступ | Назначение |
|---|---|---|
| Build (default) | Full access | Development work |
| Plan | Read-only | Analysis, planning |
| Review | Read-only + docs | Code review |
| Debug | Bash + Read | Investigation |
| Docs | File ops, no shell | Documentation |
| @general | Subagent | Complex search/multistep |
6. MCP Support
Полная поддержка MCP как client. Feature request для MCP server mode (#3306).
Типы MCP серверов
- Local MCP Servers — stdio-based communication, запускаются как local processes
- Remote MCP Servers — HTTP + OAuth 2.0 (Dynamic Client Registration RFC 7591)
Конфигурация
// opencode.json
{
"mcp": {
"sentry": {
"command": "npx",
"args": ["@sentry/mcp-server"],
"env": { "SENTRY_AUTH_TOKEN": "{env:SENTRY_TOKEN}" }
}
}
}
- Поддержка
{env:VAR}и{file:path}для секретов enabled: falseдля временного отключения- Auto-OAuth flow для remote servers
- Tools автоматически доступны LLM наряду с built-in tools
Предупреждение о Context
MCP tools добавляют контекст. GitHub MCP server, например, может быстро превысить context limit. Рекомендуется осторожность при выборе MCP серверов.
7. Plugin System & Extensibility
Plugin Sources
- Directory plugins:
.opencode/plugins/(project) или~/.config/opencode/plugins/(global) - NPM packages: в opencode.json, auto-install через Bun
Hook Types
| Hook | Описание |
|---|---|
tool.execute.before/after |
Перехват tool calls |
session.created/updated |
Session lifecycle |
message.* |
Message events |
event |
System events (session.idle, session.created, etc.) |
experimental.session.compacting |
Inject context before compaction |
chat.message |
Modify messages before LLM |
Custom Tools
Plugin tools можно определить — они доступны LLM наряду с built-in tools. Если имя совпадает с built-in, plugin tool имеет приоритет.
Notable Community Plugins
- EnvSitter — блокирует чтение
.env*файлов - Agent Ensemble — agent teams orchestration
- Persistent Memory — self-editable memory blocks (как Letta)
- Annotation UI — перехватывает plan mode, открывает browser UI
- Worktree Isolation — git worktree per agent
8. What Can We Learn From It?
Архитектурные идеи для Claude Agent Teams UI
-
Client/Server разделение — persistent sessions, reconnect после disconnect. Наш Electron-подход можно дополнить server mode для remote access.
-
JSONL append-only inbox — O(1) writes vs O(N) JSON array. Мы уже используем JSONL для session files, но team inbox в Claude Code — JSON array. Можно предложить Anthropic JSONL формат.
-
Event-driven vs Polling — OpenCode использует SSE + event bus вместо file polling. Мы используем file watching с debounce (100ms). Event-driven подход быстрее и чище.
-
Peer-to-Peer messaging — в Claude Code все идет через lead. OpenCode показывает, что full-mesh topology работает. Мы уже отключили relay для teammate DMs (см. CLAUDE.md), что близко к peer-to-peer.
-
Two-level state machines — member status (coarse) + execution status (fine). Может улучшить наш UI для отображения состояния agents.
-
Plugin system — hooks для tool.execute, session events, compaction. Потенциал для нашего MCP integration.
-
Multi-provider teams — самая уникальная фича. Claude Code не может этого. Для нашего UI это не актуально (мы визуализируем Claude Code teams), но показывает направление рынка.
-
Auto-wake — когда teammate отправляет сообщение idle agent'у, он автоматически "просыпается". В Claude Code нужен manual re-engage.
9. Competitor or Integration Partner?
Как конкурент нашему продукту
| Аспект | OpenCode | Claude Agent Teams UI (мы) |
|---|---|---|
| Что это | Coding agent | UI для управления agent teams |
| Kanban | Нет (только community: opencode-kanban, VibeKanban) | Встроенный kanban board |
| Code Review | Нет diff view в TUI | Diff view per task |
| Team Management | CLI-based, нет visual management | Visual kanban + real-time status |
| Notifications | Нет | Встроенные уведомления |
| Session Analysis | Базовый | Deep analysis (bash, reasoning, subagents) |
| Context Monitoring | Нет | Token usage по категориям |
| Direct Messaging | Через CLI | Visual DM interface |
Вывод: OpenCode — НЕ прямой конкурент. Они coding agent, мы — UI для управления agent teams. OpenCode больше конкурирует с Claude Code CLI, а не с нашим UI.
Как потенциальный integration partner
OpenCode имеет полноценный SDK (TypeScript, Go, Python) и SSE events. Теоретически мы могли бы:
- Добавить OpenCode backend — управлять OpenCode sessions через их SDK вместо/параллельно Claude Code
- Визуализировать OpenCode teams — их agent teams используют JSONL inbox, мы могли бы парсить
- Multi-agent kanban — один kanban для Claude Code + OpenCode agents
- Cross-provider orchestration — использовать наш UI для управления mixed teams (Claude через Claude Code, GPT/Gemini через OpenCode)
Риски интеграции:
- OpenCode agent teams — community feature, не stable API
- Совершенно другая архитектура (HTTP SDK vs CLI process management)
- Потребуется значительная работа по адаптации
10. Unique Features vs Claude Code
| Feature | OpenCode | Claude Code |
|---|---|---|
| Model freedom | 75+ providers, local models | Only Anthropic |
| Open source | MIT license, full source | Closed source |
| Desktop app | Beta (macOS/Win/Linux) | Нет |
| IDE extensions | VS Code, Cursor, Zed, Windsurf | Нет (только CLI) |
| Plugin system | Hooks, custom tools, npm plugins | Hooks (bash-based) |
| Persistent sessions | Client/server, reconnect | Нет |
| Agent types | Build/Plan/Review/Debug/Docs + custom | One agent + subagents |
| SDK | TypeScript/Go/Python, OpenAPI spec | Нет public SDK |
| LSP integration | Built-in, feeds diagnostics to LLM | Нет |
| Agent Teams | Community (multi-provider!) | Native (single provider) |
| Context compaction | Supports plugin hook | Automatic |
| Pricing | Free + BYO API key | $20/mo Claude Pro minimum |
| Accuracy | Varies by model | SWE-bench Pro 57.5% |
| Adoption | 5M MAU, 126K stars | 4% of GitHub commits, 135K/day |
Что уникально у OpenCode
- Model agnosticism — designed from day one, не afterthought
- Client/server architecture — sessions persist, remote control possible
- Multi-provider agent teams — Claude+Codex+Gemini в одной команде
- Plugin ecosystem — rich hook system, npm packages, custom tools
- 3 official SDKs — TypeScript, Go, Python
- OpenTUI — собственный TUI framework на Zig
Что уникально у Claude Code (и у нас)
- Native agent teams — core feature, не community plugin
- SWE-bench accuracy — лучшие результаты на бенчмарках
- 4% GitHub commits — доминирует в реальном использовании
- Stream-json protocol — надежный IPC для agent coordination
- Kanban board (наш UI) — НИКТО не имеет визуального kanban для agent teams
Summary & Key Takeaways
Факты (verified)
- OpenCode — реальный и крупный проект: ~126-129K stars, 800+ contributors, 5M MAU
- 75+ providers — подтверждено через Models.dev + AI SDK
- MIT license — подтверждено
- Agent teams с multi-provider — доказано (community implementation)
- TypeScript (Bun) + Go + Zig architecture — подтверждено
- MCP client support — полноценный
- Desktop app + IDE extensions — beta, но работает
- Plugin system — rich, с hooks и custom tools
Риски и concerns
- Agent teams — community feature, не stable, на dev branch
- Скандал с Anthropic OAuth — показывает этические вопросы
- Fork controversy — community split может повлиять на долгосрочную стабильность
- Gemini message loop bug — multi-provider teams нестабильны
- OpenCode Black ($200/мес) sold out — бизнес-модель не ясна
Relevance для нашего продукта
- Прямая конкуренция: НЕТ — мы UI для team management, они coding agent
- Косвенная конкуренция: ДА — community tools (opencode-kanban, VibeKanban) пытаются решить ту же проблему
- Потенциал интеграции: СРЕДНИЙ — SDK доступен, но архитектура сильно отличается
- Наше преимущество сохраняется: Kanban board для agent teams нет НИ У КОГО, включая OpenCode
Sources
- anomalyco/opencode (GitHub)
- opencode.ai
- OpenCode Docs
- Building Agent Teams in OpenCode (DEV Community)
- How OpenCode went from zero to titan (Dev Genius)
- OpenCode background story (TFN)
- How Coding Agents Actually Work: Inside OpenCode
- OpenCode vs Claude Code (MorphLLM)
- OpenCode vs Claude Code (DataCamp)
- OpenCode vs Anthropic Legal Controversy
- OpenCode MCP Servers docs
- OpenCode Plugins docs
- OpenCode Agents docs
- OpenCode Models docs
- OpenCode Providers docs
- OpenTUI (GitHub)
- opencode-ensemble (GitHub)
- opencode-kanban (GitHub)
- Vibe Kanban
- awesome-opencode (GitHub)