Epic: OpenCode vs ForgeCode Feature Comparison
Track features that OpenCode has and their status in ForgeCode. Use this issue to identify gaps and prioritize development.
Docs: https://opencode.ai/docs | Repo: https://github.com/anomalyco/opencode
Legend
Core CLI Features
Feature
OpenCode
ForgeCode
Status
Notes
Interactive TUI
Yes
Yes
[x]
Non-interactive mode
Yes (opencode run)
Yes (forge -p)
[x]
Session resume
Yes (--continue)
Yes (--conversation-id)
[x]
Session fork
Yes (--fork)
Yes (conversation clone)
[x]
conversation clone <id> creates new conversation with new ID. Task tool session_id allows subagent resume.
Named sessions
Yes (--session)
Yes (conversation rename)
[x]
conversation rename <id> <name>
Session list
Yes
Yes (conversation list [--porcelain])
[x]
Model selection
Yes (--model)
Yes (via config)
[x]
Agent selection
Yes (--agent)
Yes (--agent)
[x]
Pipe input
Yes
Yes
[x]
Output formats
Yes
Partial (--porcelain, conversation dump --html)
[~]
--porcelain on most subcommands, JSON/HTML export via conversation dump. No stream-json event streaming.
Verbose/debug mode
Yes
Yes (--verbose)
[x]
Pure mode (no tools)
Yes (--pure)
No
[ ]
Read-only exploration without tools
Reasoning effort control
Yes
Yes (forge config set reasoning-effort)
[x]
Effort enum: none/minimal/low/medium/high/xhigh/max. max_tokens, exclude, enabled. crates/forge_config/src/reasoning.rs
Auto-update
Yes
Yes (forge update)
[x]
Session Management & Portability
Feature
OpenCode
ForgeCode
Status
Notes
Session export
Yes (opencode export)
Yes (conversation dump [--html])
[x]
JSON and HTML export
Session import
Yes (opencode import)
No
[ ]
Session stats
Yes (opencode stats)
Yes (conversation stats <id>)
[x]
Usage struct with cost field. crates/forge_main/src/info.rs
Session database
Yes (opencode db)
No
[ ]
Session persistence
Yes
Yes
[x]
Agent & Subagent Features
Feature
OpenCode
ForgeCode
Status
Notes
Subagents
Yes
Yes (task tool)
[x]
task tool with agent_id + session_id for resume.
Custom agents
Yes
Yes (.forge/agents/)
[x]
Agent management
Yes (opencode agent)
Yes (forge agent list, forge select agent)
[x]
Server & Protocol
Feature
OpenCode
ForgeCode
Status
Notes
Headless server mode
Yes (opencode serve)
No
[ ]
Web interface
Yes (opencode web)
No
[ ]
ACP (Agent Client Protocol)
Yes (opencode acp)
No
[ ]
Key protocol - See also #2968
MCP support
Yes
Yes
[x]
McpServerConfig::{Stdio, Http} transports. crates/forge_domain/src/mcp.rs
MCP server mode
Yes (opencode mcp)
Yes
[x]
crates/forge_infra/src/mcp_server.rs
MCP OAuth
No
Yes (mcp login/mcp logout)
[x]
OAuth device/code/PKCE, refresh, custom headers. ForgeCode advantage
Port configuration
Yes (--port)
No
[ ]
Tools & Integrations
Feature
OpenCode
ForgeCode
Status
Notes
Shell/command execution
Yes
Yes
[x]
File read/write
Yes
Yes
[x]
Custom tools
Yes
Yes (16 tools in ToolCatalog)
[x]
Read, Write, FsSearch, SemSearch, Remove, Patch, MultiPatch, Undo, Shell, Fetch, Followup, PlanCreate, SkillFetch, TodoWrite, TodoRead, Task. crates/forge_domain/src/tools/catalog.rs
Plugin system
Yes (opencode plugin)
Yes (skills + shell plugin)
[~]
GitHub integration
Yes (opencode github)
No
[ ]
PR checkout + run
Yes (opencode pr)
No
[ ]
Checkout PR and run agent on it
Provider management
Yes (opencode providers)
Yes (forge provider {login, logout, list})
[x]
Model listing
Yes (opencode models)
Yes (forge list models)
[x]
Web fetch
No
Yes (Fetch tool)
[x]
NetFetch with robots.txt respect, markdown conversion. ForgeCode advantage
Provider & Model Support
Feature
OpenCode
ForgeCode
Status
Notes
Multi-provider support
Yes (any provider)
Yes (43 providers)
[x]
Both are provider-agnostic
Custom provider endpoints
Yes
Yes
[x]
Local/offline models
Yes (Ollama, etc.)
Yes (ollama, lm_studio, llama_cpp, vllm, jan_ai)
[x]
crates/forge_repo/src/provider/provider.json
OpenRouter support
Yes
Yes
[x]
Auth methods
Yes
Yes (6 methods)
[x]
ApiKey, OAuthDevice, OAuthCode, GoogleAdc, AwsProfile, CodexDevice. crates/forge_domain/src/auth/auth_method.rs
Memory & Context
Feature
OpenCode
ForgeCode
Status
Notes
AGENTS.md / instructions
Yes
Yes (AGENTS.md)
[x]
Auto memory
No
Yes (TitleGenerationHandler)
[x]
Auto-generates conversation title. ForgeCode advantage
Context compaction
No
Yes (conversation compact <id>)
[x]
Compact + Compactor engine, CompactionStrategy, CompactionHandler hook. ForgeCode advantage
Checkpointing (file rewind)
No
Yes (fs_undo tool + forge_snaps)
[x]
ForgeCode advantage
Image input
No
Yes (InputModality::Image)
[x]
fs_read reads images when model supports it. ForgeCode advantage
UX Features
Feature
OpenCode
ForgeCode
Status
Notes
Desktop app
Yes (Tauri-based)
No
[ ]
Shell completion
Yes
Yes (full shell plugin)
[x]
shell-plugin/ with theme, plugin, keyboard, dispatcher, actions, context, completion, highlight, config, helpers, bindings.
Interactive fuzzy picker
Yes
Yes (forge select)
[x]
forge select {model, agent, provider, reasoning-effort, command, conversation, file}
Theme customization
Yes
Yes (forge.theme.zsh)
[x]
Markdown rendering
Yes
Yes
[x]
Doom-loop detection
No
Yes (DoomLoopDetector)
[x]
Detects [A,A,A,A] and [A,B,C][A,B,C][A,B,C] patterns. ForgeCode advantage
Hook system
No
Yes (internal EventHandle/Hook)
[x]
on_start, on_end, on_request, on_response, on_toolcall_start, on_toolcall_end. ForgeCode advantage
ForgeCode-Specific Features (not in OpenCode)
Feature
ForgeCode
Notes
Semantic code search
workspace query - embedding-based workspace search
Plan tool
PlanCreate for structured planning
Structured data pipeline
forge data - JSONL schema-constrained batches
AI commit messages
forge commit with --preview and --max-diff
NL to shell
forge suggest <nl>
Conversation lifecycle
conversation {list, new, dump, compact, retry, resume, show, info, stats, clone, rename, delete}
Config migration
forge config migrate for ~/forge to ~/.forge
Diagnostics
forge doctor, forge zsh doctor, forge logs
Status line
forge zsh rprompt shows model + conversation stats
Permissions policy
Policy enum with Allow/Deny/Confirm and All/Any/Not operators
Summary
ForgeCode already has: ~40 features
ForgeCode is missing: ~7 features
Partial implementation: ~2 features
Top Priority Missing Features (by impact)
ACP (Agent Client Protocol) - Critical for IDE/editor integration ecosystem. See also [Feature]: Support ACP (Agent Client Protocol) #2968
Headless server mode (serve) - Important for integrations and CI/CD
Web interface (web) - Important for accessibility and remote usage
Session import - Important for portability and debugging
Session database tools (db) - Important for data management
PR checkout + run (pr) - High value for code review workflows
GitHub integration - Important for workflow automation
Pure/read-only mode - Useful for safe exploration
Desktop app - Important for UX
Port configuration - Important for self-hosting
ForgeCode Unique Advantages (not in OpenCode)
MCP server mode + MCP OAuth (login/logout)
Semantic code search (workspace indexing via embeddings)
Context compaction (auto + manual)
Doom-loop detection (automatic stuck-pattern breaker)
Checkpointing (fs_undo + forge_snaps)
Auto memory (title generation)
Image input support
Full shell plugin (ZSH theme, plugin, keyboard bindings, dispatcher, actions)
Plan tool (PlanCreate)
forge data (JSONL schema-constrained data processing pipeline)
forge commit (AI-generated commit messages)
forge suggest (NL to shell command)
Conversation lifecycle (full CRUD + compact + retry + dump)
Config migration (forge config migrate)
Diagnostics (forge doctor, forge zsh doctor, forge logs)
Theme customization (forge.theme.zsh)
Cost tracking (Usage + conversation stats)
Permissions policy system
Cross-references
Co-Authored-By: ForgeCode noreply@forgecode.dev
Epic: OpenCode vs ForgeCode Feature Comparison
Track features that OpenCode has and their status in ForgeCode. Use this issue to identify gaps and prioritize development.
Docs: https://opencode.ai/docs | Repo: https://github.com/anomalyco/opencode
Legend
Core CLI Features
opencode run)forge -p)--continue)--conversation-id)--fork)conversation clone)conversation clone <id>creates new conversation with new ID. Task toolsession_idallows subagent resume.--session)conversation rename)conversation rename <id> <name>conversation list [--porcelain])--model)--agent)--agent)--porcelain,conversation dump --html)--porcelainon most subcommands, JSON/HTML export viaconversation dump. Nostream-jsonevent streaming.--verbose)--pure)forge config set reasoning-effort)Effortenum: none/minimal/low/medium/high/xhigh/max.max_tokens,exclude,enabled.crates/forge_config/src/reasoning.rsforge update)Session Management & Portability
opencode export)conversation dump [--html])opencode import)opencode stats)conversation stats <id>)Usagestruct withcostfield.crates/forge_main/src/info.rsopencode db)Agent & Subagent Features
tasktool)tasktool withagent_id+session_idfor resume..forge/agents/)opencode agent)forge agent list,forge select agent)Server & Protocol
opencode serve)opencode web)opencode acp)McpServerConfig::{Stdio, Http}transports.crates/forge_domain/src/mcp.rsopencode mcp)crates/forge_infra/src/mcp_server.rsmcp login/mcp logout)--port)Tools & Integrations
crates/forge_domain/src/tools/catalog.rsopencode plugin)opencode github)opencode pr)opencode providers)forge provider {login, logout, list})opencode models)forge list models)Fetchtool)NetFetchwith robots.txt respect, markdown conversion. ForgeCode advantageProvider & Model Support
crates/forge_repo/src/provider/provider.jsoncrates/forge_domain/src/auth/auth_method.rsMemory & Context
conversation compact <id>)fs_undotool +forge_snaps)InputModality::Image)fs_readreads images when model supports it. ForgeCode advantageUX Features
shell-plugin/with theme, plugin, keyboard, dispatcher, actions, context, completion, highlight, config, helpers, bindings.forge select)forge select {model, agent, provider, reasoning-effort, command, conversation, file}forge.theme.zsh)DoomLoopDetector)on_start,on_end,on_request,on_response,on_toolcall_start,on_toolcall_end. ForgeCode advantageForgeCode-Specific Features (not in OpenCode)
workspace query- embedding-based workspace searchPlanCreatefor structured planningforge data- JSONL schema-constrained batchesforge commitwith--previewand--max-diffforge suggest <nl>conversation {list, new, dump, compact, retry, resume, show, info, stats, clone, rename, delete}forge config migratefor~/forgeto~/.forgeforge doctor,forge zsh doctor,forge logsforge zsh rpromptshows model + conversation statsPolicyenum with Allow/Deny/Confirm and All/Any/Not operatorsSummary
ForgeCode already has: ~40 features
ForgeCode is missing: ~7 features
Partial implementation: ~2 features
Top Priority Missing Features (by impact)
serve) - Important for integrations and CI/CDweb) - Important for accessibility and remote usagedb) - Important for data managementpr) - High value for code review workflowsForgeCode Unique Advantages (not in OpenCode)
fs_undo+forge_snaps)PlanCreate)forge data(JSONL schema-constrained data processing pipeline)forge commit(AI-generated commit messages)forge suggest(NL to shell command)forge config migrate)forge doctor,forge zsh doctor,forge logs)forge.theme.zsh)Usage+conversation stats)Cross-references
Co-Authored-By: ForgeCode noreply@forgecode.dev