July 29, 2026 · By YasKad
anomalyco/opencode

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.

A terminal core connected by interchangeable modular cables to different AI model providers.

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.

A diagram of an initial commit branching into a luminous tree of thousands of forks and Hacker News mentions.

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. plan operates with restrictive permissions by default, and skills have configurable allow, deny, and ask rules 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/skills and the compatible paths .claude/skills and .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.

A permissions matrix with the three states allow, deny, and ask, and a robotic hand waiting for approval before executing a shell command.

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.

A conceptual illustration of the two agents: one in cyan analyzes the code without touching it while the other, in orange, actively edits the lines on screen.

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.

Floating configuration files — opencode.json, SKILL.md, and .opencode/commands — merging into a single central beam of light.

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

An ecosystem map with a central hexagonal core surrounded by glowing satellite nodes representing SDKs, tools, and community forks.

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, and anomalyco/opencode-sdk-js: SDKs with 267, 146, and 90 stars, respectively.
  • anomalyco/terminal-control and anomalyco/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 the sst/opencode URLs 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; and opencode-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; and kimaki, Discord bot built on the SDK.
  • The official listing also includes opencode-tavily, opencode-firecrawl, opencode-sentry-monitor, opencode-wakatime, and opencode-scheduler for 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.

A digital vault scanning and blurring fragments of sensitive code before sending them to a remote model, representing tools such as vibeguard and sentinel.

Repository numbers

Measurement: August 1, 2026, API and GitHub page.

MetricValue
Stars191,953
Forks24,491
Real subscribers735
Commits15,266
Open issues reported by the API4,890
Main languageTypeScript
LicenseMIT
Repository creationApril 30, 2025
Last releasev1.18.11, August 1, 2026
Branches and tags visible on GitHub1,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.

Giant holographic bar charts showing the repository's star count floating over a futuristic night city.

How to contribute

Contribution is documented and has clear filters:

  1. Choose fixes, providers, LSPs, formatters, LLM performance improvements, environment quirks, or documentation; also review the help wanted, good first issue, bug, and perf labels.
  2. Comment on an issue before addressing it so that a maintainer can assign it.
  3. Request design review before implementing interface or core features. Requests that ignore this rule will likely be closed.
  4. For a new provider, open a request first in anomalyco/models.dev.
  5. To develop locally, use Bun 1.3 or later, run bun install and bun dev; bun dev <directory> allows testing another repository.
  6. Follow the default branch dev, short branch names, and conventional messages such as feat(scope): summary or fix(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 his khimaros/opencode-evolve plugin. 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.216 of 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

ProposalVerifiable matchVerifiable difference
Aider-AI/aiderBoth 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/piThe 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/OpenHandsBoth 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 CodexThe 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.json or opencode.jsonc. The plan agent is used to explore and propose changes without editing by default; build is 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/skills and .agents/skills, so an existing library can be reused without converting it to a new format. The allow, deny, and ask permissions 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-bench offers 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


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