OpenCode desktop app: the official beta on Mac, Windows and Linux, and OpenCode in tabs with its cost
OpenCode Desktop is a beta app for macOS, Windows and Linux: how to install it, how it differs from the TUI, and OpenCode in Caprock's tabs with its cost.
OpenCode has an official desktop app, in beta: OpenCode Desktop, for macOS, Windows and Linux. Install it with brew install --cask opencode-desktop or from opencode.ai/download, open it, and OpenCode runs in a window instead of a terminal. OpenCode Desktop is a window for one agent. If you would rather keep the OpenCode TUI, Caprock is a free desktop app that records every agent on the machine — OpenCode sessions whether or not it started them, Claude Code and Codex beside them, limits across subscriptions, what each pull request cost — and runs the TUI in its tabs.
What OpenCode Desktop is
OpenCode's README heads the section "Desktop App (BETA)". The app is an Electron window that runs OpenCode's server on a loopback port and talks to it: the same agent as the TUI, with no terminal. Both builds are called OpenCode, and on 20 October 2026 there are two of them:
- OpenCode 2. The desktop buttons on opencode.ai/download and the Homebrew cask serve 2.1.1. The app carries its own copy of the OpenCode 2 CLI and runs, or joins, OpenCode 2's background service, the one the OpenCode 2 TUI attaches to.
- OpenCode 1. GitHub's latest release, v1.19.3, published 16 October 2026, carries the CLI and the desktop app together, and Scoop installs that build. It starts a server of its own inside the app.
OpenCode 1 or 2?
OpenCode 2 is a new major version of the CLI as well as the app, with a new session table, plugin API and server API. Which install command gives which version is in How to install OpenCode. For the desktop app the rule is short: pair it with the CLI of the same version, or the two show different histories (below).
Install OpenCode Desktop
| System | Get it |
|---|---|
| macOS, Apple silicon or Intel | .dmg, or Homebrew |
| Windows, x64 or ARM64 | .exe installer, or Scoop |
| Debian, Ubuntu | .deb, x64 or ARM64 |
| Fedora, RHEL | .rpm, x64 or ARM64 |
| Other Linux | AppImage, x64 or ARM64 |
- 1
macOS, with Homebrew
- 2
Windows, add Scoop's extras bucket
- 3
Windows, then install
On 20 October 2026 the cask installed 2.1.1, OpenCode 2, and the Scoop package 1.19.3, OpenCode 1. The download buttons on opencode.ai/download give the OpenCode 2 app as well: macOS, Apple silicon or Intel, Windows x64 or ARM64, and a Linux .deb or .rpm for x64. OpenCode's V2 docs also list Linux ARM64 and AppImage builds. For the OpenCode 1 app, use Scoop or the GitHub releases. Both apps are called OpenCode and share one app identity, ai.opencode.desktop, so on a Mac installing one replaces the other.
The TUI and opencode web
OpenCode is a terminal program first. Its docs list a terminal interface, the desktop app, IDE extensions and a web interface, and recommend WSL on Windows for the terminal one. To install the CLI:
- 1
macOS or Linux, OpenCode's script
- 2
Any system with Node.js
- 3
Homebrew
These install OpenCode 1. Every install method, Windows and OpenCode 2 included, is in How to install OpenCode.
opencode web is the GUI without an app in OpenCode 1: it starts a local server on 127.0.0.1 on a random free port and opens OpenCode in your browser. --hostname 0.0.0.0 opens it to your network; without OPENCODE_SERVER_PASSWORD set, OpenCode's docs warn, "the server will be unsecured". OpenCode 2 has no web command; its docs use opencode pair, which prints a local URL with a username and password to open in a browser.
Desktop vs CLI: one file, two histories
Every OpenCode, CLI or app, version 1 or 2, keeps sessions in the same file, ~/.local/share/opencode/opencode.db. What decides whether two of them share a list is the table inside it:
- OpenCode 1 writes the
sessiontable. The OpenCode 1 app and the OpenCode 1 CLI see each other's sessions. - OpenCode 2 writes
session_v2. The OpenCode 2 app and the OpenCode 2 CLI see each other's sessions, and the app works through the same background service as the TUI.
Mixing versions splits the history. On its first run OpenCode 2 migrates the OpenCode 1 sessions already in the file into session_v2, once; an open report on OpenCode's tracker (#44028), filed against an OpenCode 2 beta, describes what follows: sessions made in OpenCode 1 after that copy do not appear in OpenCode 2, and sessions made in OpenCode 2 do not appear in OpenCode 1. The download page and the Homebrew cask give the OpenCode 2 app, while OpenCode's docs at opencode.ai/docs and Scoop still install the OpenCode 1 CLI, so you can end up with an OpenCode 2 app beside an OpenCode 1 CLI, and two lists.
What OpenCode Desktop does not cover
- One agent. It runs OpenCode. Claude Code, Codex or Gemini CLI need their own windows.
- One agent's spend. OpenCode prices its own sessions; it does not see what you spent in Claude Code or Codex that day.
- It is a beta. OpenCode labels it so, and its issue tracker carries open desktop bugs.
OpenCode in tabs: Caprock
Caprock is a free, open-source desktop app for macOS, Windows and Linux that records every agent on the machine and runs the agents' own terminal programs. With the OpenCode CLI installed, New agent offers OpenCode next to Claude Code, Codex, Gemini CLI, Grok Build and Hermes Agent:
- The OpenCode TUI in a terminal tab, in the project you pick or a new worktree. ⌘E opens a shell beside it, up to four panes a tab. Closing a tab ends an idle session, its conversation saved, and asks about one still working.
- OpenCode 1 or 2. Caprock asks the installed
opencodefor its version and starts it with the flags that version has: OpenCode 1 with its own server port and a model flag, OpenCode 2 with--standalone --session <id>, so the tab is tied to its session from the first byte. - Model and permissions. The model list offers the models of the providers you connected to OpenCode, in its own
provider/modelform; left empty, your OpenCode config decides. Plan starts OpenCode's plan agent; Accept edits makes commands ask first. OpenCode 1 gets these as--agent planandOPENCODE_PERMISSION={"bash":"ask"}; OpenCode 2, which has no such flags, gets them inOPENCODE_CONFIG_CONTENT, merged into any you set. Bypass leaves OpenCode 1's own rules, and starts OpenCode 2 with--auto, which approves everything not explicitly denied. - Cost and tokens per session and per project. OpenCode computes each call's cost itself; Caprock reads it from OpenCode's database, opened read-only, and adds it unchanged to the same per-project table as Claude Code and Codex. For OpenCode 2 it sums the messages, so it leaves out the one call that names the session, which OpenCode counts in its own total. Like OpenCode's own figure, it is modelled from list prices, not a bill.
- History. Sessions from before you installed Caprock are read too. What OpenCode wrote, and what you asked it, is searchable on the Memory screen beside Claude's. An ended session continues in a new tab with
opencode --session <id>, plus--standaloneon OpenCode 2 (covered by tests, not yet by a run). - Live. The database is read every five seconds. An OpenCode 1 session Caprock started, an OpenCode 1
opencode serveon its default port, and sessions on OpenCode 2's background service are followed through OpenCode's event stream and update at once. An OpenCode 2 session Caprock started runs its own private server and is picked up by the five-second read. - From your phone. A paired phone, on any network through Caprock's end-to-end encrypted relay, sees the sessions and their cost. One that may control sessions, the default when you connect it, can also start an OpenCode session in a folder under your home and type into it.
Caprock reads both tables, session and session_v2, so sessions you ran in either OpenCode Desktop show up with their cost too, whichever version made them. A database OpenCode 2 migrated from 1 holds many sessions in both; Caprock counts each message once. That covers the desktop app by the table it writes: Caprock's OpenCode 2 support was checked against the OpenCode 2 CLI, not the app.
What it read on my machine
- 70
- OpenCode sessions, 23 May to 18 June 2026
- 9,309
- model calls
- $156.28
- their cost, as OpenCode computed it
Read from Caprock on 8 October 2026; every figure comes from OpenCode's own database. They were mostly DeepSeek V4 Pro and MiniMax M3 calls on my own keys; what each call cost, and why, is in OpenCode pricing.
What Caprock does not do for OpenCode
- It does not run OpenCode Desktop. It starts the
opencodeCLI you installed, with your own providers. - Permission prompts are answered in the terminal. Approve and Deny buttons, desktop notifications and Telegram alerts are for Claude Code sessions; OpenCode does not report an approval Caprock can read.
- No branching. A session can be continued but not forked: OpenCode 1's
--forkcopies the messages and their cost, and Caprock would count them twice; OpenCode 2's TUI has no fork flag. - Project instructions reach Claude Code and Codex sessions, not OpenCode.
- No OpenCode Go limits. The plan windows Caprock shows are Claude's and Codex's.
- Tested on macOS against real installs of OpenCode 1 and OpenCode 2, and OpenCode 2 also in a Debian container on Linux. Otherwise, on Windows and Linux, both versions are covered by Caprock's test suite in CI, not by a run against a real install.
Which to use
- OpenCode Desktop — you use OpenCode alone and want its own window without a terminal.
- The TUI, or a browser tab (
opencode webin OpenCode 1,opencode pairin OpenCode 2) — you live in a terminal, or want OpenCode in a browser tab on a machine you reach over the network. - Caprock — you run OpenCode with Claude Code or Codex and want one record of them, with limits and what each cost. Install it, or see how it compares with other agent apps.
Questions people ask
- Is there an OpenCode desktop app?
- Yes, in beta. OpenCode Desktop runs on macOS, Windows and Linux. The download buttons on opencode.ai/download and brew install --cask opencode-desktop, shown on that same page, give the OpenCode 2 build; Scoop's extras bucket on Windows and the GitHub releases give the OpenCode 1 build.
- Is OpenCode Desktop free?
- Yes. It is open source under the MIT licence, like the CLI. You pay for the model you connect, as you do in the terminal.
- What is the difference between OpenCode Desktop and the CLI?
- The CLI is the opencode TUI in your terminal. The desktop app is an Electron window that runs OpenCode's server for you, so you need no terminal. Each desktop app shares its history with the CLI of the same major version: both write the same opencode.db, OpenCode 1 to its session table and OpenCode 2 to session_v2.
- Does OpenCode have a GUI?
- Three: the desktop app, a browser interface served from 127.0.0.1 (opencode web in OpenCode 1, opencode pair in OpenCode 2), and extensions for VS Code, Cursor, Zed, Windsurf and VSCodium.
- Can I run OpenCode and Claude Code in one app?
- Yes. Caprock starts the OpenCode TUI, OpenCode 1 or 2, in a terminal tab next to Claude Code and Codex, and adds each session's cost, as OpenCode computed it, to the same per-project table.
Sources
- OpenCode README — Desktop App (BETA): downloads and the Homebrew cask, read 20 October 2026
- OpenCode — download page: its desktop buttons serve 2.1.1 builds (macOS, Windows x64 and ARM64, Linux .deb and .rpm), read 20 October 2026
- OpenCode V2 docs — Intro: CLI, Desktop builds for each platform, the web interface through opencode pair, read 20 October 2026
- OpenCode on GitHub — latest release v1.19.3 (16 October 2026) and its desktop assets, read 20 October 2026
- Homebrew — opencode-desktop cask, 2.1.1 (OpenCode 2) from opencode.ai/files/bin, read 20 October 2026
- Scoop Extras bucket — opencode-desktop 1.19.3, read 20 October 2026
- OpenCode source — the OpenCode 1 desktop app: Electron, its built-in server (packages/desktop/src/main/server.ts at v1.19.3)
- OpenCode source — the OpenCode 2 desktop app: a bundled V2 CLI and the shared background service (packages/desktop/src/main/service/background-service.ts at v2.0.26)
- OpenCode source — OpenCode 2 keeps sessions in the session_v2 table (packages/core/src/session/sql.ts at v2.0.26)
- OpenCode docs — install and the ways to run it (OpenCode 1), read 20 October 2026
- OpenCode docs — opencode web (OpenCode 1), read 20 October 2026
- OpenCode issue #44028 — OpenCode 1 and OpenCode 2 builds sharing one data folder split sessions across session and session_v2, opened 22 August 2026, open on 20 October 2026
- Caprock spec — OpenCode support, OpenCode 2 included: the database, the live stream, starting a session, what is verified (.ai/16-opencode.md)
- Caprock changelog — 0.93.0, 9 October 2026: OpenCode 2; 0.93.1 OpenCode 2 verified on Linux; 0.99.0 OpenCode lists the models of connected providers; 0.99.0 Grok Build and 0.122.0 Hermes Agent in New agent
- Caprock source — how an OpenCode 1 or OpenCode 2 session is started (internal/agents/argv.go)
- Caprock source — reading OpenCode's database, both versions' tables (internal/opencode/opencode.go)
- Caprock docs — the desktop app: New agent, tabs, split panes, project instructions (docs/app.md)
- Caprock README — OpenCode, Codex and DeepSeek Harness; the phone; phone alerts
Try it
The record of every coding agent you run, the sessions it did not start included. Free, open source; nothing leaves your machine.
Notarized by Apple. One file for Apple silicon and Intel, macOS 13 or later.
Or run it yourself:
Paste in Terminal: it installs Caprock and opens it.Or with Homebrew: brew install --cask dspv/tap/caprock-app