Skip to content

fix(setup): register MCP sidecars from a stable path off the DMG (v1.0.1)#2

Merged
HackPoint merged 1 commit into
mainfrom
fix/mcp-sidecar-stable-path
Jul 13, 2026
Merged

fix(setup): register MCP sidecars from a stable path off the DMG (v1.0.1)#2
HackPoint merged 1 commit into
mainfrom
fix/mcp-sidecar-stable-path

Conversation

@HackPoint

Copy link
Copy Markdown
Owner

Problem

Launching Lumen.app directly from the mounted DMG (the default user behavior before dragging to /Applications), or any unsigned/quarantined launch that triggers macOS App Translocation, makes setup record a sidecar path that lives inside a transient read-only mount:

ENOENT: no such file or directory, posix_spawn
'/Volumes/dmg.frPYdY/Lumen.app/Contents/MacOS/lumen-mcp'

find_binary() resolves lumen-mcp/lumen-tok as siblings of the running exe and writes those absolute /Volumes/… paths into ~/.claude.json. Once the DMG is ejected the paths vanish and Claude Code can no longer spawn the MCP server.

Fix

Add stable_binary(): when the resolved sidecar sits on an ephemeral mount (/Volumes/… or …/AppTranslocation/…), copy it to ~/Library/Application Support/io.speedata.lumen/bin/ and register that stable path. Copying the standalone Mach-O preserves its embedded code signature, so it still launches. Normal /Applications installs are unaffected (no copy). Re-running setup repairs an already-broken ~/.claude.json.

Bumps version to v1.0.1 + CHANGELOG entry. cargo check -p Lumen passes.

When Lumen runs directly from the mounted DMG (or a Gatekeeper App
Translocation mount), find_binary() resolves the lumen-mcp/lumen-tok
sidecars to their location *inside* that ephemeral mount and writes those
absolute paths into ~/.claude.json. Once the DMG is ejected the paths
vanish, so Claude Code fails to start the server with:

  ENOENT: no such file or directory, posix_spawn
  '/Volumes/dmg.XXXXX/Lumen.app/Contents/MacOS/lumen-mcp'

Add stable_binary(): when the resolved sidecar lives on an ephemeral
mount (/Volumes/... or .../AppTranslocation/...), copy it into
~/Library/Application Support/io.speedata.lumen/bin/ and register that
stable path instead. Copying the standalone Mach-O preserves its embedded
signature so it still launches. Non-DMG installs are unaffected.

Bump to v1.0.1.
@HackPoint
HackPoint merged commit e9c6dc1 into main Jul 13, 2026
4 checks passed
@HackPoint
HackPoint deleted the fix/mcp-sidecar-stable-path branch July 13, 2026 11:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant