OpenCode 1.17.19 — The Baseline Snapshot#
Published on July 14, 2026
Part of the OpenCode Version Tracker series. | Repository
This is the first tracked version of OpenCode, the open-source terminal coding agent from SST (sst/opencode). The installed build is 1.17.19, read from the source at tag v1.17.19 on July 14, 2026. There is no prior version on record, so there is nothing to diff yet.
The Numbers#
| Surface | Count at v1.17.19 |
|---|---|
Environment variables (OPENCODE_*) | 120 |
Experimental env vars (OPENCODE_EXPERIMENTAL*) | 20 |
Experimental config / API keys (experimental.*) | 37 |
Source files under packages/ | 3011 |
Environment Variables, Grouped#
The 120 variables cluster into clear subsystems.
| Group | Representative Variables | What It Configures |
|---|---|---|
| Server and self-hosting | OPENCODE_SERVER_DIST, OPENCODE_SERVER_USERNAME, OPENCODE_SERVER_PASSWORD, OPENCODE_PORT, OPENCODE_BASE_URL, OPENCODE_DEPLOYMENT_TARGET | OpenCode runs as a server. You can host it yourself and guard it with basic auth. |
| Hosted storage | OPENCODE_STORAGE_ADAPTER, OPENCODE_STORAGE_BUCKET, OPENCODE_STORAGE_REGION, OPENCODE_STORAGE_ACCOUNT_ID, OPENCODE_STORAGE_ACCESS_KEY_ID, OPENCODE_STORAGE_SECRET_ACCESS_KEY | An S3-compatible object store backs sessions and shared state. |
| Console and control plane | OPENCODE_CONSOLE_TOKEN, OPENCODE_PROJECT_ID, OPENCODE_WORKSPACE_ID | A hosted console with organizations and projects sits above the local CLI. |
| Claude Code interop | OPENCODE_DISABLE_CLAUDE_CODE, OPENCODE_DISABLE_CLAUDE_CODE_PROMPT, OPENCODE_DISABLE_CLAUDE_CODE_SKILLS | OpenCode reads Claude Code's project config, prompt, and skills by default. These three variables turn that off. |
| Skills and plugins | OPENCODE_DISABLE_EXTERNAL_SKILLS, OPENCODE_SKILL_PATTERN, OPENCODE_DISABLE_DEFAULT_PLUGINS | Skills and plugins are first-class, loadable, and filterable. |
| Language servers | OPENCODE_DISABLE_LSP_DOWNLOAD | OpenCode downloads language servers so the agent has real code intelligence. |
| Model catalog | OPENCODE_MODELS_DEV, OPENCODE_MODELS_URL, OPENCODE_MODELS_PATH, OPENCODE_DISABLE_MODELS_FETCH | Models load from the models.dev catalog at runtime, not from a baked-in list. |
| Web search | OPENCODE_WEBSEARCH_PROVIDER, OPENCODE_ENABLE_EXA | Web search is pluggable. Exa is a supported provider. |
| Performance instrumentation | OPENCODE_PERFORMANCE, OPENCODE_PERFORMANCE_TRACE_DIR, OPENCODE_SHOW_TTFD, OPENCODE_AUTO_HEAP_SNAPSHOT, OPENCODE_FAST_BOOT | Startup and runtime tracing is built in. SHOW_TTFD reports time to first draw for the terminal UI. |
| Record and replay | OPENCODE_RECORDED_SCENARIO, OPENCODE_RECORD_ANTHROPIC_API_KEY, OPENCODE_RECORD_OPENAI_API_KEY, OPENCODE_HTTPAPI_EXERCISE_DB, and many OPENCODE_TEST_* vars | A record/replay harness captures provider traffic for deterministic tests. |
Experimental Flags#
Twenty variables begin with OPENCODE_EXPERIMENTAL. These gate features that exist in the source but are not on by default.
| Flag | Likely Purpose |
|---|---|
OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS | Subagents that run in the background while the main session continues. |
OPENCODE_EXPERIMENTAL_PARALLEL (with OPENCODE_ENABLE_PARALLEL) | Parallel execution of agent work rather than one step at a time. |
OPENCODE_EXPERIMENTAL_WORKSPACES | A workspaces subsystem. The config API below shows create, list, sync, and warp methods behind it. |
OPENCODE_EXPERIMENTAL_NATIVE_LLM | A native model runtime inside OpenCode. |
OPENCODE_EXPERIMENTAL_CODE_MODE, OPENCODE_EXPERIMENTAL_PLAN_MODE | Distinct operating modes for editing versus planning. |
OPENCODE_EXPERIMENTAL_LSP_TOOL, OPENCODE_EXPERIMENTAL_LSP_TY | Expose the language server to the agent as a callable tool. LSP_TY likely targets the ty type checker. |
OPENCODE_EXPERIMENTAL_EVENT_SYSTEM, OPENCODE_EXPERIMENTAL_WEBSOCKETS | A real-time event transport between the server and its clients. |
OPENCODE_EXPERIMENTAL_OXFMT | An experimental code formatter. |
OPENCODE_EXPERIMENTAL_REFERENCES | Code reference tracking for the agent. |
OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX | A tunable cap on model output tokens. |
Beyond these, a second tier of OPENCODE_ENABLE_* gates (ENABLE_EXA, ENABLE_QUESTION_TOOL, ENABLE_EXPERIMENTAL_MODELS) turns individual features on without the full experimental prefix.
The Experimental Config API#
The source also exposes 37 experimental.* keys. Most are server API methods that map to the cloud layer OpenCode is building.
| Method family | What it does |
|---|---|
experimental.workspace.* (create, list, remove, status, syncList, warp) | Manage remote workspaces, including sync and a "warp" action. |
experimental.console.* (get, listOrgs, switchOrg) | Read the hosted console and switch between organizations. |
experimental.controlPlane.moveSession | Move a running session between machines or orgs. |
experimental.projectCopy.* (create, generateName, refresh, remove) | Clone and manage server-side copies of a project. |
experimental.chat.messages.transform, experimental.chat.system.transform | Hooks that rewrite messages and the system prompt before a request. |
experimental.provider.small_model | A separate small, cheap model role alongside the main model. |
experimental_repairToolCall | Auto-repair malformed tool calls from the model. |
Models#
The model list in the source holds over 150 literals, including test and placeholder entries such as claude-haiku-fake-model and gpt-test. This is not a curated set. OpenCode mirrors the models.dev catalog at runtime, so the list reflects that catalog plus fixtures. It spans Anthropic, OpenAI, Google, and local gpt-oss models. Model changes here carry low signal on their own and only matter when a release note calls one out.
What the Source Shape Shows#
OpenCode is one TypeScript monorepo. Nearly all of it, 3011 files, lives under packages/. Smaller directories tell the rest of the story: infra/ (8 files) means the project ships its own cloud infrastructure definitions, which fits SST, the company behind the SST framework. sdks/ (2) means client SDKs are published for the server API. The .opencode/ directory (4 files) means the project runs OpenCode on itself. A nix/ directory covers reproducible packaging.
This Release (1.17.19)#
Version 1.17.19 is a bug-fix release. The Core fixes are provider auth and reasoning details plus one console fix: OpenAI pro reasoning support, xAI Responses now default to no server-side storage, OAuth for Luna Responses Lite, Codex context limits applied to GPT-5.6 over OAuth, and a switch to another org after logging out of the console. The TUI now forwards CLI environment variables to its worker process, which confirms the terminal UI runs as a separate worker. Most of the notes are Desktop work: a new interface is under active redesign next to the old one, with per-prompt model selection in the composer, a reworked review panel, and middle-click to open sessions in new tabs. Two community contributors landed changes this release.
What This Baseline Tells Us#
OpenCode is server-first and multi-surface. One server can drive a terminal UI, a desktop app, an embedded web UI, and external editors through the Agent Client Protocol (OPENCODE_ACP_PROFILE, with Zed integration in OPENCODE_ZED_DB). Claude Code, Codex CLI, and Gemini CLI are terminal-first single binaries. OpenCode treats the terminal as one client of many.
The project is provider-agnostic by design. Models come from the models.dev catalog rather than a fixed vendor list, so Anthropic, OpenAI, and Google models sit side by side. The closed harnesses each ship from a single vendor. OpenCode's bet is breadth.
SST is building a paid cloud layer around the open-source core. The console with organizations, workspaces with sync and warp, a control plane that moves sessions, S3-backed storage, and project copies are all present in the surface. The open-source agent is the client. The hosted orgs, workspaces, and storage are the product on top. OpenCode also reads Claude Code's config and skills by default, a migration on-ramp for users already invested in the incumbent.
This is the reference point. From the next tracked version on, this post supplies the numbers to diff against: which env vars appear or disappear, which experimental flags graduate to defaults, which experimental.* methods stabilize, and, once a tag-to-tag diff exists, commit velocity and contributor count. As of v1.17.19, the count to remember is 120 environment variables, 20 of them experimental.
This analysis is based on publicly available open-source code and release metadata, conducted for educational and research purposes. All trademarks and software referenced belong to their respective owners.