How OpenCode’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score47/100
Agent-ready 61.9 × 0.30 = 18.57
API quality 30.9 × 0.20 = 6.18
Openness 45.2 × 0.20 = 9.04
Built-in AI 73.6 × 0.15 = 11.04
Automation 17.3 × 0.15 = 2.60
(18.57 + 6.18 + 9.04 + 11.04 + 2.60) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 47.42 ÷ 1.00 = 47.4
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready61.9/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max
- [probe] https://opencode.ai/llms.txt“PROBE llms.txt: HTTP 404 at https://opencode.ai/llms.txt”
- [probe] https://opencode.ai/docs/.md“PROBE docs-md: HTTP 200 at https://opencode.ai/docs/.md import { Tabs, TabItem } from "@astrojs/starlight/components" import config from "../../../config.mjs" export const cons”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/cli/“opencode run "Explain how closures work in JavaScript"”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/permissions/“Start OpenCode with `--auto` to automatically approve permission requests that are not explicitly denied.”
- [claimed-docs] https://opencode.ai/docs/permissions/“Start OpenCode with --auto to automatically approve permission requests that are not explicitly denied.”
- [claimed-docs] https://opencode.ai/docs/github/“OpenCode integrates with your GitHub workflow. Mention /opencode or /oc in your comment, and OpenCode will execute tasks within your GitHub Actions runner.”
- [claimed-docs] https://opencode.ai/docs/github/“Mention `/opencode` or `/oc` in your comment, and OpenCode will execute tasks within your GitHub Actions runner.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
Plug MCP servers into this product so it can use their toolsweight 3
3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max
- [claimed-docs] https://opencode.ai/docs/mcp-servers/“You can add external tools to OpenCode using the _Model Context Protocol_, or MCP. OpenCode supports both local and remote servers.”
- [claimed-docs] https://opencode.ai/docs/mcp-servers/“You can add external tools to OpenCode using the Model Context Protocol, or MCP.”
Connect an agent via an official MCP serverweight 3
n/a — not applicable to this product: excluded from numerator and denominator
- [claimed-docs] https://opencode.ai/docs/mcp-servers/“You can add external tools to OpenCode using the _Model Context Protocol_, or MCP. OpenCode supports both local and remote servers.”
- [claimed-docs] https://opencode.ai/docs/mcp-servers/“You can add external tools to OpenCode using the Model Context Protocol, or MCP.”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
Use an official CLIweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/mcp-servers/“You can add external tools to OpenCode using the _Model Context Protocol_, or MCP. OpenCode supports both local and remote servers.”
- [claimed-docs] https://opencode.ai/docs/“curl -fsSL https://opencode.ai/install | bash”
- [claimed-docs] https://opencode.ai/docs/cli/“opencode run "Explain how closures work in JavaScript"”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/“npm install -g opencode-ai”
- [probe] https://opencode.ai/docs/cli/“official CLI documented at https://opencode.ai/docs/cli/”
- [community] https://news.ycombinator.com/item?id=47460525“i've been using this as my primary harness for llama.cpp models, Claude, and Gemini for a few months now. the LSP integration is great.”
- [community] https://news.ycombinator.com/item?id=47460525“This replaced Aider for me a couple months back. I use it with Qwen 3.5 running locally when my daily limits run out on my other subscriptions. The harness is great.”
Drive the product through a documented public APIweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server.”
- [claimed-docs] https://opencode.ai/docs/sdk/“Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/cli/“opencode run "Explain how closures work in JavaScript"”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
- [claimed-docs] https://opencode.ai/docs/cli/“Attach a terminal to an already running OpenCode backend server started via `serve` or `web` commands.”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://opencode.ai/docs/permissions/“OpenCode uses the `permission` config to decide whether a given action should run automatically, prompt you, or be blocked.”
- [claimed-docs] https://opencode.ai/docs/permissions/“Start OpenCode with `--auto` to automatically approve permission requests that are not explicitly denied.”
- [claimed-docs] https://opencode.ai/docs/enterprise/“This centralized config can integrate with your SSO provider and ensures all users access only your internal AI gateway.”
Build against official SDKsweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/sdk/“Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server.”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
Subscribe to events via webhooksweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server.”
Agent-ready = 111.4 ÷ 180 × 100 = 61.9
API quality30.9/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max
- [claimed-docs] https://opencode.ai/docs/permissions/“OpenCode uses the `permission` config to decide whether a given action should run automatically, prompt you, or be blocked.”
- [claimed-docs] https://opencode.ai/docs/permissions/“Start OpenCode with `--auto` to automatically approve permission requests that are not explicitly denied.”
- [claimed-docs] https://opencode.ai/docs/permissions/“Use external_directory to allow tool calls that touch paths outside the working directory where OpenCode was started.”
- [community] https://news.ycombinator.com/item?id=46581095“When server is enabled, any web page served from localhost/127.0.0.1 can execute code; any local process can execute code without authentication; No indication when server is running.”
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
API quality = 21.6 ÷ 70 × 100 = 30.9
Openness45.2/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/sdk/“Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
- [claimed-docs] https://opencode.ai/docs/cli/“This allows using the TUI with a remote OpenCode backend.”
- [community] https://news.ycombinator.com/item?id=47460525“You can start a service via 'opencode serve', it can be accessed from anywhere and has great experience on mobile except a few bugs... The WebUI that they have can connect to multiple OpenCode backends at once.”
Export all of my data in open formats and leaveweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [community] https://news.ycombinator.com/item?id=47460525“OpenCode is sending telemetry to their own servers, even when you're using your own locally hosted models. There are no environment variables, flags, or other configuration options to disable this behavior.”
- [claimed-docs] https://opencode.ai“**Share links** Share a link to any session for reference or to debug”
- [claimed-docs] https://opencode.ai“Share links Share a link to any session for reference or to debug”
Read the product's source under an open licenseweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/“OpenCode is an open source AI coding agent. It's available as a terminal-based interface, desktop app, or IDE extension.”
- [github] https://github.com/anomalyco/opencode“OpenCode is also available as a desktop application.”
- [community] https://news.ycombinator.com/item?id=47460525“OpenCode source code is even more awesome. I have learned so much from the way they have organized tools, agents, settings and prompts. models.dev is an amazing free resource... OpenCode Zen almost always has a FREE coding model.”
Self-host the core productweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://opencode.ai/docs/“curl -fsSL https://opencode.ai/install | bash”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/cli/“Attach a terminal to an already running OpenCode backend server started via `serve` or `web` commands.”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [probe] https://opencode.ai/openapi.json“PROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key”
- [community] https://news.ycombinator.com/item?id=47460525“You can start a service via 'opencode serve', it can be accessed from anywhere and has great experience on mobile except a few bugs... The WebUI that they have can connect to multiple OpenCode backends at once.”
- [community] https://news.ycombinator.com/item?id=46581095“When server is enabled, any web page served from localhost/127.0.0.1 can execute code; any local process can execute code without authentication; No indication when server is running.”
Openness = 45.2 ÷ 100 × 100 = 45.2
Built-in AI73.6/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/agents/“Use the plan agent to analyze code and review suggestions without making any code changes.”
- [claimed-docs] https://opencode.ai/docs/agents/“This agent is useful when you want the LLM to analyze code, suggest changes, or create plans without making any actual modifications to your codebase.”
- [claimed-docs] https://opencode.ai/docs/agents/“A fast, read-only agent for exploring codebases. Cannot modify files.”
- [community] https://news.ycombinator.com/item?id=47460525“I really like how their subagents work, as a bonus I get to choose which model is in which agent.”
- [community] https://news.ycombinator.com/item?id=47460525“i've been using this as my primary harness for llama.cpp models, Claude, and Gemini for a few months now. the LSP integration is great.”
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://opencode.ai/docs/github/“Ask OpenCode to fix an issue or implement a feature. And it will work in a new branch and submits a PR with all the changes.”
- [claimed-docs] https://opencode.ai/docs/github/“Mention `/opencode` or `/oc` in your comment, and OpenCode will execute tasks within your GitHub Actions runner.”
- [claimed-docs] https://opencode.ai/docs/github/“OpenCode integrates with your GitHub workflow. Mention /opencode or /oc in your comment, and OpenCode will execute tasks within your GitHub Actions runner.”
- [claimed-docs] https://opencode.ai/docs/github/“This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.”
- [claimed-docs] https://opencode.ai/docs/permissions/“Start OpenCode with `--auto` to automatically approve permission requests that are not explicitly denied.”
- [claimed-docs] https://opencode.ai/docs/server/“The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [community] https://news.ycombinator.com/item?id=47460525“There are random bugs with loading/restoring state of the session; Model/Provider selection switch across sessions/projects is often annoying; Sometimes agent get randomly stuck, especially for long/nested sessions.”
- [community] https://news.ycombinator.com/item?id=48883275“I've been trying various harnesses like Pi, OpenCode, Qwen Code, and Nanocoder. A common problem I keep running into is failed tool calls, regardless of the model.”
Delegate tasks to a built-in AI assistant inside the productweight 3
3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max
- [claimed-docs] https://opencode.ai/docs/“OpenCode is an open source AI coding agent. It's available as a terminal-based interface, desktop app, or IDE extension.”
- [claimed-docs] https://opencode.ai/docs/cli/“opencode run "Explain how closures work in JavaScript"”
- [claimed-docs] https://opencode.ai“**Multi-session** Start multiple agents in parallel on the same project”
- [claimed-docs] https://opencode.ai“Multi-session Start multiple agents in parallel on the same project”
- [claimed-docs] https://opencode.ai/docs/agents/“You can use the **Tab** key to switch between primary agents during a session.”
- [claimed-docs] https://opencode.ai/docs/agents/“This agent is useful when you want the LLM to analyze code, suggest changes, or create plans without making any actual modifications to your codebase.”
- [community] https://news.ycombinator.com/item?id=47460525“i've been using this as my primary harness for llama.cpp models, Claude, and Gemini for a few months now. the LSP integration is great.”
- [community] https://news.ycombinator.com/item?id=47460525“This replaced Aider for me a couple months back. I use it with Qwen 3.5 running locally when my daily limits run out on my other subscriptions. The harness is great.”
- [community] https://news.ycombinator.com/item?id=48883275“Claude is much better in OpenCode then in Claude Code, OpenCode is just better than Claude Code. Claude Code feels like a complete mess to use comparatively.”
Operate the product with natural-language commandsweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [claimed-docs] https://opencode.ai/docs/cli/“opencode run "Explain how closures work in JavaScript"”
- [claimed-docs] https://opencode.ai/docs/“OpenCode is an open source AI coding agent. It's available as a terminal-based interface, desktop app, or IDE extension.”
- [claimed-docs] https://opencode.ai/docs/github/“Ask OpenCode to fix an issue or implement a feature. And it will work in a new branch and submits a PR with all the changes.”
- [community] https://news.ycombinator.com/item?id=47460525“i've been using this as my primary harness for llama.cpp models, Claude, and Gemini for a few months now. the LSP integration is great.”
- [community] https://news.ycombinator.com/item?id=47460525“This replaced Aider for me a couple months back. I use it with Qwen 3.5 running locally when my daily limits run out on my other subscriptions. The harness is great.”
- [community] https://news.ycombinator.com/item?id=48883275“Claude is much better in OpenCode then in Claude Code, OpenCode is just better than Claude Code. Claude Code feels like a complete mess to use comparatively.”
Built-in AI = 66.2 ÷ 90 × 100 = 73.6
Automation17.3/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max
- [claimed-docs] https://opencode.ai“**Multi-session** Start multiple agents in parallel on the same project”
- [claimed-docs] https://opencode.ai“Multi-session Start multiple agents in parallel on the same project”
- [claimed-docs] https://opencode.ai/docs/sdk/“The opencode JS/TS SDK provides a type-safe client for interacting with the server. Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/sdk/“Use it to build integrations and control opencode programmatically.”
- [claimed-docs] https://opencode.ai/docs/server/“The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use.”
- [claimed-docs] https://opencode.ai/docs/cli/“opencode run "Explain how closures work in JavaScript"”
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max
- [claimed-docs] https://opencode.ai/docs/github/“Mention `/opencode` or `/oc` in your comment, and OpenCode will execute tasks within your GitHub Actions runner.”
- [claimed-docs] https://opencode.ai/docs/github/“OpenCode integrates with your GitHub workflow. Mention /opencode or /oc in your comment, and OpenCode will execute tasks within your GitHub Actions runner.”
- [claimed-docs] https://opencode.ai/docs/github/“This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.”
- [claimed-docs] https://opencode.ai/docs/permissions/“OpenCode uses the `permission` config to decide whether a given action should run automatically, prompt you, or be blocked.”
- [claimed-docs] https://opencode.ai/docs/permissions/“OpenCode uses the permission config to decide whether a given action should run automatically, prompt you, or be blocked.”
- [claimed-docs] https://opencode.ai/docs/permissions/“For most permissions, you can use an object to apply different actions based on the tool input.”
Schedule recurring jobs or workflowsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Version, review, and roll back my automationsweight 1
1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max
- [claimed-docs] https://opencode.ai“**Share links** Share a link to any session for reference or to debug”
- [claimed-docs] https://opencode.ai“Share links Share a link to any session for reference or to debug”
- [claimed-docs] https://opencode.ai/docs/permissions/“OpenCode uses the `permission` config to decide whether a given action should run automatically, prompt you, or be blocked.”
- [claimed-docs] https://opencode.ai/docs/cli/“This command will guide you through creating a new agent with a custom system prompt and permission configuration.”
Automation = 13.8 ÷ 80 × 100 = 17.3