Skip to content

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.txtPROBE llms.txt: HTTP 404 at https://opencode.ai/llms.txt
  • [probe] https://opencode.ai/docs/.mdPROBE 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.jsonPROBE 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=47460525i'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=47460525This 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.jsonPROBE 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.jsonPROBE 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.jsonPROBE 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.jsonPROBE 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=46581095When 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.jsonPROBE 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.jsonPROBE 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=47460525You 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=47460525OpenCode 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.aiShare 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/opencodeOpenCode is also available as a desktop application.
  • [community] https://news.ycombinator.com/item?id=47460525OpenCode 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.jsonPROBE openapi: HTTP 200 at https://opencode.ai/openapi.json — contains "openapi" key
  • [community] https://news.ycombinator.com/item?id=47460525You 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=46581095When 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=47460525I 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=47460525i'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=47460525There 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=48883275I'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.aiMulti-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=47460525i'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=47460525This 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=48883275Claude 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=47460525i'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=47460525This 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=48883275Claude 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.aiMulti-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.aiShare 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