Skip to content

ACPX runtime fails on nix-openclaw immutable store (plugin tries to write node_modules under /nix/store) #73

@kimptoc

Description

@kimptoc

Summary (provided by Codex)

When ACPX runtime is enabled in nix-openclaw, the plugin loads but ACP sessions fail with:

sessions_spawn runtime=acpACP runtime backend is currently unavailable. Try again in a moment.

Gateway logs show ACPX trying to create/install plugin-local dependencies inside /nix/store, which is read-only.

Environment

  • nix-openclaw on Linux (Home Manager)
  • OpenClaw gateway package from nix store
  • ACPX runtime plugin enabled

Actual behavior

Logs include errors like:

  • acpx local binary unavailable ... running plugin-local install
  • acpx runtime setup failed ... ENOENT ... mkdir '/nix/store/.../extensions/acpx/node_modules/acpx'

As a result, ACP runtime backend never becomes available.

Expected behavior

On Nix (immutable package paths), ACPX should start without attempting writes to plugin directory under /nix/store.

Repro

  1. Enable ACPX runtime plugin in nix-openclaw config.
  2. Rebuild/switch and restart gateway.
  3. Attempt sessions_spawn runtime=acp.
  4. Observe runtime unavailable + ENOENT in logs.

Suggested fix direction

  • Treat extension directory as read-only in packaged builds.
  • Resolve acpx binary from packaged dependency path (or configurable command) instead of plugin-local install.
  • If write/install is required, use a writable runtime cache path ($XDG_STATE_HOME or similar), not plugin install dir.
  • Add explicit detection/logging for immutable store paths and skip install fallback.

How it could work upstream (design): package acpx with gateway and have the ACPX plugin use that binary directly first, with plugin-local install only as a non-Nix fallback.

Metadata

Metadata

Assignees

No one assigned

    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