Repository navigation
Description
Description
OpenCode Desktop v1.17.13 — "Could not reach Local Server" on startup (Node.js sidecar 100% CPU spin)
Environment:
- OpenCode Desktop: 1.17.13 (deb package, Linux)
- OS: KDE Neon (Ubuntu-based, Wayland)
- Claude Code: 2.1.195 (installed via opencode-with-claude plugin)
- Claude Max subscription (authenticated)
Bug Description
When launching OpenCode Desktop from the application menu, the window opens and shows:
Could not reach Local Server
Retrying automatically...
This persists indefinitely — it never recovers. The app is effectively unusable out of the box.
What I've Investigated
Using Chrome DevTools Protocol (--remote-debugging-port=9222) on the Electron renderer, I found:
-
The React webview (loaded from
oc://renderer/index.html) connects to the Node.js sidecar on a random port (e.g.,http://127.0.0.1:44685/). -
Most API endpoints work fine — they return HTTP 200:
GET /global/config✅ 200GET /path✅ 200GET /provider✅ 200GET /project✅ 200GET /lsp?directory=...✅ 200
-
But two critical endpoints time out (30s) and return status 0:
GET /global/health❌ timeout / status 0GET /global/event❌ timeout / status 0
-
The React splash screen polls these two endpoints in a loop and never gets past them, so it stays on "Could not reach Local Server" forever.
-
The Node.js sidecar process is pegged at 100–111% CPU on a single core from the moment it starts. This is visible via
ps:PID 22843 111 1.5 /opt/OpenCode/ai.opencode.desktop --type=utility --utility-sub-type=node.mojom.NodeService -
The
/global/healthendpoint returns HTTP 401 (Unauthorized) instantly when hit viacurl(60ms response), confirming the server can respond — it's just that from within the Electron webview's CORS context, the request hangs. This suggests the health/event endpoints are handled by a different code path that enters an infinite loop when certain conditions are met (e.g., provider status check). -
The
opencode-with-claudeplugin shows"plugin": {"opencode": "not-configured"}in the Meridian proxy health check athttp://127.0.0.1:3456/health, even when the Meridian profile is correctly configured at~/.config/meridian/profiles.json.
Workaround
The standalone opencode serve works fine — it serves the web UI at http://127.0.0.1:5050 without any timeout issues, and the CPU stays normal.
Expected Behavior
/global/healthshould respond quickly (as it does via direct curl)- The Node.js sidecar should not peg CPU at 100% on startup
- The desktop window should load and connect to the server successfully
Possible Root Cause
The high CPU and the /global/health hang suggest an infinite loop or polling spin in the opencode-with-claude Meridian plugin's health-check or event-stream handler, likely in the Node.js sidecar's ACP server implementation. The issue reproduces 100% of the time on a fresh install with a Claude Max subscription.
MY WORKAROUND FIX:
Use opencode serve in your browser — the standalone server works correctly
Wait for a newer version of the desktop app that fixes the CPU spin bug
File a bug with OpenCode about the opencode-with-claude plugin causing 111% CPU on the Node.js sidecar at startup
Plugins
No response
OpenCode version
1.17.13
Steps to reproduce
Downloaded latest desktop and then updated it with same debian file
Screenshot and/or share link
Operating System
KDE Neon
Terminal
Konsole
Activity
github-actions commentedon Jul 5, 2026
This issue might be a duplicate of existing issues. Please check:
models.devfetch regression introduced in v1.17.12+The root cause described in #35294 (blocking network fetch on startup causing the sidecar to hang) could explain the symptoms you are seeing, including the CPU spin and the health/event endpoint timeouts.
Not-Qualified commentedon Jul 9, 2026
Updated the
OpenCode Desktopand it's working, @Brendonovichgithub-actions commentedon Sep 8, 2026
To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.