The terminal became a client
OpenCode 2.0 starts one background service on the local machine. The terminal interface, web interface, desktop app, and programmatic client can all connect to it. The release post says the client package can discover that service without a manually supplied endpoint.
That design keeps sessions available across several views. It also moves provider credentials, proxy settings, certificate trust, working state, and process lifetime below the terminal window.
Closing the client does not describe the service's environment.
There are two network tests
OpenCode's network guide says the command-line client connects to its service over local HTTP. If the shell uses a proxy, NO_PROXY must cover localhost, 127.0.0.1, and ::1. Otherwise a proxy can catch the local hop that should stay on the machine.
The service owns the second hop. Shell exports affect it only when that shell starts it. OpenCode provides managed service environment commands because a later service start may not inherit the terminal's proxy variables or private certificate path.
opencode service set env HTTP_PROXY http://proxy.example.com:8080
opencode service set env HTTPS_PROXY http://proxy.example.com:8080
opencode service set env NO_PROXY localhost,127.0.0.1,::1
opencode service start
The guide gives two separate checks. opencode api get /api/info checks the client-to-service connection. A normal provider request checks the service's outbound proxy and certificate route. One green response cannot stand in for both.
Secrets can move below the shell
The same guide warns that authenticated proxy URLs stored in the managed service configuration are visible through opencode service get env. Do not paste that output into bug reports or shared logs. A background service may make configuration durable, but durability changes the handling rules for secrets.
A private certificate path has the same lifetime issue. The service reads NODE_EXTRA_CA_CERTS when its process starts. Updating a shell after the service is running does not change that process.
A major upgrade needs a route inventory
OpenCode 2.0 changes the server API and client contracts. Version 1 plugins do not run in version 2. The migration guide also says version 1 and version 2 use the same configuration locations. It recommends keeping a copy of the old setup while checking models, credentials, agents, permissions, MCP servers, and plugins.
The release exists as tag v2.0.0 at commit 63f7cee. We read the release post and current version 2 documentation. We did not install OpenCode 2.0 or exercise its service on a host.
Use a four-part service card
- Record the client and service versions. A matching command name does not prove matching code.
- Record which environment owns proxy variables, certificate paths, and provider credentials.
- Test loopback without the proxy, then test one provider request through the intended outbound route.
- Keep secret-bearing environment output out of tickets, chat, and routine logs.