OpenCode: An open-source agent aiming for vendor independence
anomalyco/opencode · 209,984★ · 27,758 forks
Everything you need to know about anomalyco/opencode: a terminal and desktop programming agent, configurable via files, agents, skills, plugins, and interchangeable model providers.
What is OpenCode?
OpenCode is Anomaly’s open-source programming agent. Its core offers a terminal interface and a beta desktop application; the user can connect model providers, run local tools, query MCP servers, and extend behavior with project files or plugins.
The README offers installation via script, npm, Homebrew, Nix, Scoop, Chocolatey, pacman, and others. The interface starts with two main agents: build, with full access for development, and plan, geared towards analysis and configured to deny edits and ask for permission before shell commands. It also includes the sub-agent general, callable as @general.
It is not a model or inference provider in itself. It can connect to third-party providers, local models, and the team’s optional services, OpenCode Zen and OpenCode Go. The documentation indicates that Zen is a list of models that the team has tested with OpenCode; it is not required to run the program.

Origin: From initial commit to open alternative
The earliest recoverable commit in the history is initial, signed by Kujtim Hoxha (kujtimiihoxha) on March 21, 2025. The GitHub API dates the creation of the repository on April 30, 2025. In June and July 2025, Hacker News submissions linked to the project as sst/opencode; in current research, the public repository is anomalyco/opencode. This timeline allows verifying the continuity of the project, although the recovered sources do not explain the reason for the organization change.
The public presentation gained visibility with the Hacker News thread 44482504, submitted by indigodaddy on July 6, 2025: 319 points and 91 comments. The tension accompanying the proposal was the dependence on provider subscriptions: on March 20, 2026, the thread 47460525, submitted by rbanffy, reached 1,274 points and 618 comments after a controversy about using Claude subscriptions outside of Claude Code. The repository continued to support the Anthropic API, but the sources distinguish between using the API and using a subscription in a third-party client.
The context explains part of the narrative: OpenCode positions itself as an open and configurable interface, not a copy of a single native client. This independence does not eliminate costs or the conditions of each provider; it only separates the agent from the account, model, and inference path chosen by the user.

Philosophy and principles
The documentation and repository rules reveal several operating principles:
- Separate the agent from the provider. The configuration supports models, providers, base routes, and local models; the user can switch providers without changing the interface.
- Explicit tool control.
planoperates with restrictive permissions by default, and skills have configurableallow,deny, andaskrules per pattern. - Customization as versionable files. Agents, commands, skills, and plugins can live in the project’s
.opencode/or in the user’s global directory. - Practical compatibility. For skills, it looks for both
.opencode/skillsand the compatible paths.claude/skillsand.agents/skills, up to the limit of the Git working tree. - Maintenance priority. The repository’s development instructions establish stability, simplicity, and performance as priorities for the application.
These are design principles observable in the documentation and configuration code, not promises that every combination of models, plugins, and permissions will be safe or suitable for all teams.

How it works
Installation, session, and agents
The documented direct installation is curl -fsSL https://opencode.ai/install | bash; the opencode-ai package is also published. After opening the interface, Tab switches between build and plan; @general requests the general sub-agent. The /connect command adds provider credentials, and /models displays the models recommended by Zen when using that service.
The plan mode is a concrete flow control: it explores and proposes without editing files by default; for shell commands, it asks for approval. The build mode is intended for development operations with access to tools.

Configuration and extensibility
opencode.json or opencode.jsonc describes the model, provider, permissions, commands, and plugins. Sources are combined, not replaced: remote configuration from .well-known/opencode, global, defined by environment variable, project, .opencode/ directories, and content inserted at runtime, in that order of precedence.
Custom commands are Markdown files with frontmatter in .opencode/commands/ or an command entry in the JSON. For example, a file can define a /test command, an agent, and a model, and convert the Markdown body into the instruction sent to the model.
Skills use a directory per skill and a SKILL.md file with name and description in YAML. OpenCode announces them through its skill tool and loads the content only when the agent requests it. Permissions allow approving, denying, or hiding skills by name or pattern. Plugins can be local TypeScript or JavaScript files, or npm packages specified in the configuration; the documentation publishes a list of community extensions.
It also supports local and remote MCP servers. The documentation itself warns that each server incorporates tools and context into the session, so activating many, especially some GitHub servers, may exhaust the available context.

Official and semi-official status
OpenCode is the official Anomaly project in the direct sense: anomalyco/opencode, its README, and opencode.ai are the primary sources of the product. The repository is distributed through packaging channels that the README labels differently: anomalyco/tap/opencode is listed as a recommended and updated formula, while brew install opencode is listed as an official Homebrew formula with less frequent updates.
No evidence was found that OpenCode is an accepted plugin in an official market from Anthropic, OpenAI, Google, or Microsoft, nor of certification by those providers. Therefore, it should not be interpreted as an official function of Claude Code, Codex, or Gemini. Compatibility with their APIs, plans, or third-party plugins is another matter and depends on the provider’s conditions.
Its semi-official status within its own community is clearer: Anomaly maintains documentation, Discord, SDKs, the models.dev catalog, a opencode-bench bank, and an official ecosystem page to which projects can be proposed through pull requests. The popularity and number of integrations suggest a de facto platform for OpenCode extensions, but there is no formal designation as a standard in the sources consulted.
The ecosystem

Repositories maintained by Anomaly
The figures in this section come from the GitHub API on August 1, 2026.
anomalyco/models.dev: open database of AI models, 6,209 stars. OpenCode’s contribution guide asks to propose adding a new provider there first.anomalyco/opentui: library for terminal interfaces, 12,848 stars; it is a visible piece of the organization’s interface base.anomalyco/opencode-bench: evaluation repository, 78 stars.anomalyco/opencode-sdk-python,anomalyco/opencode-sdk-go, andanomalyco/opencode-sdk-js: SDKs with 267, 146, and 90 stars, respectively.anomalyco/terminal-controlandanomalyco/browser-control: local terminal and browser control tools, with 382 and 320 stars.anomalyco/sst: tool for building full-stack applications on owned infrastructure, 26,211 stars. Its historical relevance is observed in thesst/opencodeURLs of the early Hacker News submissions, not in an unverified claim of current dependence.
Community extensions, clients, and catalogs
The official ecosystem page lists, among others, these external projects:
awesome-opencode/awesome-opencode, curated catalog of plugins, themes, agents, and resources, 9,290 stars.nickjvandyke/opencode.nvim, integration for Neovim, 3,732 stars.daytonaio/daytona, whose plugin runs sessions in isolated environments with Git synchronization and previews; the Daytona repository has 72,079 stars.H2Shami/opencode-helicone-session, which adds session headers to group requests in Helicone, 15 stars.opencode-vibeguard, to replace secrets and personal information before calls to the model and restore them locally;opencode-dynamic-context-pruning, to prune obsolete outputs; andopencode-worktree, to automate Git working trees. All three are listed by the official documentation; no audit or support from the OpenCode team is claimed for them.OpenChamber, web, desktop, and VS Code extension application;OpenCode-Obsidian, integration with Obsidian;portal, mobile interface on Tailscale or VPN; andkimaki, Discord bot built on the SDK.- The official listing also includes
opencode-tavily,opencode-firecrawl,opencode-sentry-monitor,opencode-wakatime, andopencode-schedulerfor web research, observability, activity logging, and scheduled tasks.
Derivatives and forks
The API of forks, ordered by stars, retrieved examples of community ports and variations: DNGriffin/whispercode (328 stars), winmin/evil-opencode (235), Latitudes-Dev/shuvcode (105), leohenon/opencode-vim (87), paviko/opencode-ide-plugin (41), OneOfLzx/opencode-sentinel (38, focused on restricting connection to private servers), and Chetic/opencode-offline (13, declared as offline). These are unofficial derivatives; their descriptions come from their own GitHub sheets.
Translation does not only depend on forks: the main repository includes official READMEs in Spanish, German, French, Italian, Japanese, Korean, Simplified and Traditional Chinese, Russian, Arabic, Thai, Turkish, Ukrainian, Bengali, Greek, Vietnamese, and other languages. This is localization of the main documentation, not a collection of independent ports.

Repository numbers
Measurement: August 1, 2026, API and GitHub page.
| Metric | Value |
|---|---|
| Stars | 191,953 |
| Forks | 24,491 |
| Real subscribers | 735 |
| Commits | 15,266 |
| Open issues reported by the API | 4,890 |
| Main language | TypeScript |
| License | MIT |
| Repository creation | April 30, 2025 |
| Last release | v1.18.11, August 1, 2026 |
| Branches and tags visible on GitHub | 1,151 and 1,083 |
Version v1.18.11 fixes SSE MCP reconnection loops and provider configurations with interleaved reasoning fields; its notes also list desktop fixes. The main contributors returned by the API were thdxr (2,246 contributions), adamdotdevin (2,013), opencode-agent[bot] (1,478), rekram1-node (1,423), and kitlangton (1,081).
The total number of commits comes from the history link on the GitHub page and matches the query of the last commit page. The watchers_count field in the general GitHub response duplicates the stars; therefore, subscribers_count is reported as real subscribers. The open_issues_count field may mix issues and pull requests, so it does not necessarily equal the number of issues visible separately.

How to contribute
Contribution is documented and has clear filters:
- Choose fixes, providers, LSPs, formatters, LLM performance improvements, environment quirks, or documentation; also review the
help wanted,good first issue,bug, andperflabels. - Comment on an issue before addressing it so that a maintainer can assign it.
- Request design review before implementing interface or core features. Requests that ignore this rule will likely be closed.
- For a new provider, open a request first in
anomalyco/models.dev. - To develop locally, use Bun 1.3 or later, run
bun installandbun dev;bun dev <directory>allows testing another repository. - Follow the default branch
dev, short branch names, and conventional messages such asfeat(scope): summaryorfix(scope): summary.
The repository includes tests, automation of publication, and internal rules to maintain the boundaries between packages. This documentation does not equate to a guarantee of acceptance of each pull request.
How the community received it
The recovered reception combines appreciation for flexibility with objections about cost, security, and maintenance responsiveness:
- In the main thread 47460525, pimeys praised the shortcuts, plan and build modes, fast model switching, MCP, and skills; he considered it more pleasant to use than other alternatives. The entire thread, submitted by rbanffy, had 1,274 points and 618 comments. It is a personal experience, not a controlled comparison.
- In the same thread, khimaros said that he uses it as his main interface for
llama.cpp, Claude, and Gemini models, valued the LSP integration, and linked to hiskhimaros/opencode-evolveplugin. It is a concrete example of use with local models and extensions, not a guarantee of general compatibility. - mharrison wrote that OpenCode replaced Aider in his workflow and that he uses it with Qwen locally when other limits are exhausted. At the same time, he acknowledged that local models seemed less agile to him. The observation shows enthusiasm for portability but also a practical limit of local inference.
- The main criticism in the thread was economic and contractual. stavros indicated that a small API function cost him 6 dollars and estimated that developing with Opus could be much more expensive than his subscription. pczy pointed out that the API was still allowed at a commercial price, while a Claude Code subscription was not allowed in third-party clients. The contrast does not prove universal prices but documents the tension between customer freedom and provider billing.
- There were also reservations about security. riedel described the tool system as interesting but said that he could not achieve reliable behavior when generating tools and perceived little default security. nacs questioned the hosted web application; flexagoon responded that it connects to a local OpenCode server and is not equivalent to all requests being forwarded. These are opposing statements from users, not a security audit.
- Outside the main thread, 46539718, submitted by AlexAltea, titled a critical unauthenticated remote execution vulnerability and had 3 points and 2 comments. In another Hacker News comment, bel8 stated that it was fixed in version
v1.0.216of December 2025. This research did not recover an independent audit or the complete technical report, so these submissions are not used to certify the current security status. - The maintenance burden is also visible: ixxie, in a Hacker News comment, compared the large volume of issues and pull requests from OpenCode with Pi’s restrictive admission process. The API on August 1 still returned 4,890 elements in
open_issues_count; due to its semantics, this number does not allow concluding how many are bugs, requests, or pull requests.
OpenCode versus other proposals
| Proposal | Verifiable match | Verifiable difference |
|---|---|---|
Aider-AI/aider | Both are presented as terminal programming assistants. Aider had 47,859 stars in the consulted API. | OpenCode documents build and plan agents, skills with compatible path support, and a system of plugins and MCPs. The comment by __mharrison__ explains why he replaced it in his workflow, but does not measure code quality. |
earendil-works/pi | The API identifies Pi as an agent kit with a unified LLM API, agent loop, TUI, and CLI; it had 81,859 stars. | The comparison by ixxie focuses on Pi’s issue and pull request admission process, not on feature equivalence. OpenCode, for its part, publishes build and plan modes, SDKs, and an official catalog of extensions. |
OpenHands/OpenHands | Both are open projects for AI-assisted development; OpenHands is described as AI-driven development and had 82,778 stars. | The recovered sources for OpenCode detail a terminal-focused interface, local configuration, and extensions; the comparison does not infer that their architectures or execution environments are equivalent. |
| Claude Code and Codex | The Hacker News thread mentions them as alternatives that users combine or compare with OpenCode. | They are products from the respective provider; OpenCode is not listed in the sources as an official plugin of their markets. Its proposal is to allow choosing a provider and model through its own configuration. |
Use cases and who this repository can help
- Developers who want to separate the agent from the model provider can work from OpenCode’s terminal or desktop application and define models, base routes, permissions, and plugins in
opencode.jsonoropencode.jsonc. Theplanagent is used to explore and propose changes without editing by default;buildis reserved for tasks with tool access. - Teams that version project instructions can store Markdown commands, agents, and skills in
.opencode/. OpenCode also looks for skills in.claude/skillsand.agents/skills, so an existing library can be reused without converting it to a new format. Theallow,deny, andaskpermissions control which skills are announced or require approval. - Those who integrate development tools around an agent can connect MCP servers, local or npm plugins, and the project’s SDKs. The official catalog includes, among others, extensions for worktrees, context pruning, web research, and observability;
opencode-benchoffers a separate piece for evaluation.
Each MCP server and plugin adds tools and context to the session. It is advisable to activate only the necessary ones, review the code and permissions of the extensions, and apply isolation and network limits of one’s own when the flow accesses sensitive repositories or services.
Resources
- Repository: https://github.com/anomalyco/opencode
- Documentation and installation: https://opencode.ai/docs and https://github.com/anomalyco/opencode#installation
- Official skills: https://opencode.ai/docs/skills
- Configuration, agents, and MCP: https://opencode.ai/docs/config, https://opencode.ai/docs/agents, and https://opencode.ai/docs/mcp-servers
- Official ecosystem: https://opencode.ai/docs/ecosystem
- Related repositories: https://github.com/anomalyco/models.dev, https://github.com/anomalyco/opencode-bench, https://github.com/anomalyco/opencode-sdk-python
- Reviews and conversations: https://news.ycombinator.com/item?id=44482504, https://news.ycombinator.com/item?id=47460525, https://news.ycombinator.com/item?id=46539718
- Discord community: https://discord.gg/opencode
Note: This article combines the README, OpenCode’s documentation and history, the GitHub API and page, and Hacker News conversations consulted on August 1, 2026. The figures change over time.
Comments