Skip to content

Epic: Feature Comparison - OpenCode vs ForgeCode #3502

@ImBIOS

Description

@ImBIOS

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

  • = ForgeCode already has this feature
  • = ForgeCode does NOT have this feature yet
  • [~] = Partial implementation

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)

  1. ACP (Agent Client Protocol) - Critical for IDE/editor integration ecosystem. See also [Feature]: Support ACP (Agent Client Protocol) #2968
  2. Headless server mode (serve) - Important for integrations and CI/CD
  3. Web interface (web) - Important for accessibility and remote usage
  4. Session import - Important for portability and debugging
  5. Session database tools (db) - Important for data management
  6. PR checkout + run (pr) - High value for code review workflows
  7. GitHub integration - Important for workflow automation
  8. Pure/read-only mode - Useful for safe exploration
  9. Desktop app - Important for UX
  10. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions