Skip to content

mcpx: codedb and fff entries in .mcpx.json still use /home/user absolute paths #864

Open

Description

@dezren39

Follow-up to #863 (which made the desktop-commander entry portable).

The same portability wart remains for two other entries in the tracked project config .mcpx.json:

  • codedb: command: "/home/user/bin/codedb"
  • fff: command: "/home/user/.local/bin/fff-mcp"

These absolute paths only resolve on machines whose home is /home/user. Because mcpx project scope overrides user scope, a machine with a different home directory cannot shadow them with working user-level entries — the broken project entries win and the servers fail to start.

Observed on the Muse sandbox (home /home/hatch), merged project view via mcpx status:

  • server "codedb": start /home/user/bin/codedb: fork/exec ...
  • server "fff": start /home/user/.local/bin/fff-mcp: fork/exec ...

Possible directions (not prescribed): portable npx-style commands like the rest of the file where a published package exists, a PATH-relative command name, or an env-substituted path if mcpx config supports it. Any change should keep the laptop (home /home/user) working unchanged in behavior.

Acceptance criteria

  • The codedb and fff entries in the tracked .mcpx.json no longer hard-code /home/user absolute paths; they resolve on machines with a different home directory (verified on the Muse sandbox, home /home/hatch, via mcpx status with no fork/exec errors for these servers).
  • Behavior on the laptop (home /home/user) is unchanged: both servers still start and respond.
  • The chosen mechanism (PATH-relative name, published package command, or env substitution) matches the portability approach already used for the desktop-commander entry in mcpx: make desktop-commander entry portable (npx form) #863.

Activity

  1. added
    kind/bugSomething isn't working (prefixed form of the classic bug label)
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/sSmall: expected under 2 hours of work
    app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 26, 2026
  2. dezren39 commented on Oct 26, 2026

    @dezren39
    MemberAuthor

    Intake review

    Fleet monitor intake pass (2026-10-25 run). Acceptance criteria appended to the body this pass (original body preserved verbatim above it).

    Still live — verified this run: No sibling issue or PR found addressing the codedb / fff entries (search this run: none); #863 fixed only the desktop-commander entry, and this is its named follow-up.

    Related: #863 (the desktop-commander portability fix — its mechanism is the precedent to match). Cross-repo note: mcpx also lives in dezren39/nix, but this issue is specifically about this repo's tracked .mcpx.json project entries, so it stays single-repo per the fleet's one-change-one-issue rule; if the fix turns out to be an mcpx config-mechanism change (e.g. env substitution support), that part would be a set handled from the origin issue.

    Notes / suggested approach: Because project scope overrides user scope in mcpx, these two entries are actively broken on any non-/home/user machine (observed fork/exec failures on the Muse sandbox, home /home/hatch). Prefer, in order: a PATH-relative command name if both tools are reliably on PATH, a published-package command like the rest of the file where one exists, or env substitution if mcpx supports it. Verify on both homes (sandbox /home/hatch and laptop /home/user) per the criteria.

    Risks: Low. Only real risk is picking a mechanism that resolves differently under the systemd/user-session PATH vs an interactive shell — the mcpx status check on each machine covers it.

  3. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Nov 1, 2026
  4. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Triage verdict — CONFIRMED, with one dormancy nuance and one scope expansion (queue task 2277, lane B)

    Verified on current main b56ccda (.mcpx.json read from origin/main):

    • ✅ fff — confirmed, active. Line 13 (active mcpServers): "command": "/home/user/.local/bin/fff-mcp". Project scope overrides user scope, so this breaks fff on every machine whose home isn't /home/user — the failure mode in the issue stands.
    • ⚠️ codedb — path confirmed, impact dormant. Line 89 still has "command": "/home/user/bin/codedb", but the entry now sits under disabledMcpServers — parked there by 387a0cf ("mcpx: park the codedb server under disabledMcpServers", Drew 2026-10-29). It cannot fail to start while parked; the wart returns the moment it's re-enabled, so it stays in the fix scope at lower urgency. Its parked state is Drew's call and the fix does not re-enable it.
    • ➕ Scope expansion (same pattern, not named in the issue): fff-nix (lines 79–80) and fff-worktree (lines 83–84) are active entries with the same absolute command plus absolute-path args — /home/user/code and /home/user/.local/share/opencode/worktree. Those args name machine-specific roots, so they're in the fix packet too.
    • Route facts: mcpx spawns servers via exec.Command, so bare command names resolve through PATH exactly like the existing npx/go entries (the mcpx: make desktop-commander entry portable (npx form) #863 desktop-commander precedent, 789b7f9); there is no $HOME/tilde expansion of server command/args in pkgs/mcpx/internal/config, so "just write $HOME/..." is not an available spelling today.

    Remainder, routed as one scoped small_fix packet (enqueued as task 4865, packet-864-fix.json): bare-name commands for fff/codedb after PATH verification in the daemon environments; fff-nix/fff-worktree removed from the tracked project config (machine-specific roots belong in user scope) unless a portable root spelling is proven; grep-verified zero /home/user in .mcpx.json; file stays biome/treefmt-clean. No mcpx expansion machinery, no codedb re-enable.

  6. 13 remaining items

  7. added
    status/parkedDeliberately paused with a recorded resume condition
    on Nov 1, 2026
  8. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    Parked (task 4865) with the mechanism verified — one open question remains before editing .mcpx.json:

    • Commands: bare PATH-relative names are the fix. mcpx: make desktop-commander entry portable (npx form) #863's desktop-commander mechanism was npx (a published package exists); none exists for fff-mcp/codedb, and the file's own precedent for local tools is bare names (go). Verified resolvable: sandbox has /home/hatch/.local/bin/fff-mcp and /home/hatch/bin/codedb; laptop login PATH resolves /home/user/.local/bin/fff-mcp (codedb is not on the laptop login PATH, but its entry is disabled/dormant).
    • Args (the blocker): fff-nix (/home/user/code) and fff-worktree (/home/user/.local/share/opencode/worktree) — mcpx's server spawn does no env or tilde expansion (checked pkgs/mcpx/internal: only a dashboard dir param expands ~). ~/code and ~/.local/share/opencode exist on both machines, so ~/… args are right if fff-mcp expands them itself — that needs one test before changing config that must keep working unchanged on the laptop.

    Resume: run that fff-mcp tilde test, then apply bare commands + the verified arg form in one PR.

  9. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 1, 2026
  10. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  11. added
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 1, 2026
  12. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · blocked

    • Agent: repo-worker-code (OpenChamber scheduled lane)
    • Session / ID: queue task 4865 (ses_e5e67a8fec6ffeLfS170uRGYAq)
    • Evidence: the live mcpx daemon (mcpx serve, PID 3095268) has a PATH that omits /home/user/.local/bin and /home/user/bin; fff-mcp is installed only at /home/user/.local/bin/fff-mcp. Therefore the packet-required bare fff-mcp command does not resolve for this daemon. No tracked config edit or workaround was made, per the packet’s explicit stop condition.
    • Blocker: make fff-mcp resolvable from the daemon PATH or revise the packet to authorize another portable invocation.
    • Resume: after that blocker is resolved, revalidate and finish the scoped .mcpx.json changes.
  13. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 4865 (small_fix, blocked, priority 50) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

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

Metadata

Metadata

Assignees

Labels

app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workkind/bugSomething isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/blockedQueue or user escalation statequeue/queuedHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanstatus/blockedQueue or user escalation statetask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions