Skip to content

Desktop application on linux stuck #35469

Closed as not planned
Closed as not planned

Description

@Not-Qualified

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:

  1. 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/).

  2. Most API endpoints work fine — they return HTTP 200:

    • GET /global/config ✅ 200
    • GET /path ✅ 200
    • GET /provider ✅ 200
    • GET /project ✅ 200
    • GET /lsp?directory=... ✅ 200
  3. But two critical endpoints time out (30s) and return status 0:

    • GET /global/health ❌ timeout / status 0
    • GET /global/event ❌ timeout / status 0
  4. 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.

  5. 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
    
  6. The /global/health endpoint returns HTTP 401 (Unauthorized) instantly when hit via curl (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).

  7. The opencode-with-claude plugin shows "plugin": {"opencode": "not-configured"} in the Meridian proxy health check at http://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/health should 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

Image

Operating System

KDE Neon

Terminal

Konsole

Activity

  1. github-actions commented on Jul 5, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    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.

  2. Not-Qualified commented on Jul 9, 2026

    @Not-Qualified
    Author

    Updated the OpenCode Desktop and it's working, @Brendonovich

  3. github-actions commented on Sep 8, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions