Live dashboard: https://axiryyyy.github.io/opencode-go-pricing/
A zero-dependency, single-file web page that aggregates every OpenCode Go model's per-1M-token prices and monthly quotas — sorted from cheap to expensive, color-coded by model series, and auto-synced from the official docs on every visit.
Unofficial community tool — not affiliated with OpenCode. All data comes from the official docs; this page only aggregates and presents it.
- Always current: re-syncs the official docs on every visit, with a multi-level fallback chain (GitHub raw → jsDelivr → ghproxy / gh-proxy / ghfast mirrors)
- Sorted by the output column's fee-equivalent price (cheap → expensive) by default (list price ÷ monthly quota × $10); a manual switch is remembered
- Sort & search: click any column header to sort; search across models, series and tiers
- Series legend: 13 color-coded model series; click to filter
- DeepSeek peak/off-peak: live billing-window badge with countdown, per-tier rows (Off-Peak / Peak, ≤200K / >200K), and a "live" marker on the tier currently in effect
- Fee-equivalent mode: list price ÷ monthly quota × $10 — the effective unit price when your full quota is used, directly comparable with pay-as-you-go platforms
- USD / CNY toggle with live FX rates — the conversion rate is labeled next to the toggle while CNY is active (cached fallback included)
- Model ID column with one-click copy (e.g.
deepseek-v4.1-flash) - Privacy column: training / retention info parsed from the official privacy table, plus privacy filters
- Bilingual UI (EN / ZH): auto-detected from the browser, switchable in the header; force with
?lang=enor?lang=zh - Offline-friendly: localStorage cache + built-in snapshot; dark / light theme; responsive layout
A companion page listing only the current limited-time free models, focused on privacy:
- Free is not private: the 13 free models are split into four tiers taken from the official privacy section, sorted zero-retention first
- 🟢 Zero retention, no training (2) — not listed among the official exceptions, so the default zero-retention policy applies
- 🔵 Not trained, but retained per vendor policy (1 — Jev)
- 🟠 Vendor trial endpoints that log usage; the docs explicitly say "do not submit confidential data" (2 — Nemotron)
- 🔴 Data collected during the free period may be used to improve the model (8)
- One-click model-ID copy plus the calling endpoint — 2 of the 13 do not use
chat/completions(Muse Spark uses/responses, Jev uses/systemone), so copying chat/completions fails - A fixed warning banner at the top; every tier is clickable as a filter; search by model name or model ID
- A collapsible "official privacy wording" section showing the source text verbatim, each language pulled from its own official doc version
- Optional live-availability cross-check: with the local proxy running, the page also compares against the official
/zen/v1/modelsand flags models the docs still list but the API has retired (e.g.mimo-v2.5-free), plus models the API serves that the docs omit entirely (e.g.muse-spark-1.2-contributor-free, which therefore has no privacy terms at all). With the proxy down, that column is silently skipped.
A companion page that shows your own Go usage:
- Three quota rings (5-hour / weekly / monthly) + DeepSeek account balance
- The same DeepSeek peak/off-peak badge and countdown
- Keys live only in your browser's
localStorageand are sent only to the official domains (via the local proxy where required) - Pace warnings: daily budget vs. recent 24h speed, with the official limits folded in (weekly = 50% of monthly, 5h = 20% of monthly, $60 baseline) — warns when the remaining time can no longer fit a 100% quota, or when you're on track to exceed it
- Your Go key is in your local
auth.jsonunderopencode-go; anysk-key from the same DeepSeek account works for the balance (balance is account-level)
The Go usage API returns no CORS headers, so the browser cannot call it directly — a local proxy is required. Just double-click start-proxy.bat: on first run it finds your Go key in auth.json, asks for your DeepSeek key, stores them in usage-proxy.keys.json (gitignored — never commit it), and starts the proxy. After that, a double-click is all it takes.
Proxy address: http://127.0.0.1:8787 (localhost only). Keep the window open and refresh usage.html — the Go card should then show "updated · proxy".
Manual alternative: set OPENCODE_GO_KEY / DEEPSEEK_API_KEY and run python usage-proxy.py. Manual alternative: set OPENCODE_GO_KEY / OPENCODE_SERVICE_KEY / DEEPSEEK_API_KEY and run python usage-proxy.py. The service-account key (oc_sk-, created in the Console) is only needed by the "Model breakdown" tab of usage.html - the proxy /api/go/records route calls the official Usage API (/console/api/v1/usage/export) with it. Leave it empty if you do not use that panel.
The proxy also exposes one keyless route, /api/zen/models, which forwards the official https://opencode.ai/zen/v1/models for zen.html's live-availability check. That endpoint needs no credentials, but it sends no CORS header, so the browser can only read it through the proxy.
opencode-go-alerts.user.js adds the same pace warnings (90% / depleted / stranded / speed thresholds) to the top of the official Console Go page (opencode.ai/console/*/go; legacy /workspace/*/go kept). The old hydration block is gone in the new Console, so it reads the "Go usage limits" cards (progressbar aria-valuenow + absolute reset timestamp in the title attribute), with a same-origin probe of opencode.ai/inference/go/v1/usage for higher precision when cookie auth allows.
- Install the Tampermonkey extension.
- Open the raw
opencode-go-alerts.user.jsin this repo — Tampermonkey will offer to install it. Confirm. - Refresh the official Go page; a warning banner appears at the top (✕ hides it for the session).
Note: the alert logic and analyzeGo in usage.html are maintained as two copies — keep them in sync. If the official page changes and the numbers can't be read, the script hides itself; paste the usage-area HTML to fix the selectors.
No build step — open index.html directly, or use the live link above.
Parsed at runtime from the official docs source files:
- Go pricing page:
.../services/www/src/docs/content/console/go.mdx - Zen free models page:
.../services/www/src/docs/content/console/models.mdx(single file, English only since the 2026-10-13 docs migration) - Mirror:
https://cdn.jsdelivr.net/gh/anomalyco/opencode@dev/...
models.mdx contains the model ID table (Model | Model ID | Endpoint | AI SDK Package), the pricing table (Model | Input | Output | Cached Read | Cached Write, with no quota column), a free-models bullet list, and the privacy section. So zen.html cannot reuse index.html's parser, which locates its table by a "monthly limit" header.
Prices, quotas and privacy terms follow the official docs; these pages only aggregate and present them.