KI / Automatisierung 8. Mai 2026

2026 OpenClaw MCP Node-Laufzeit-Mismatches: Warum nvm im Terminal funktioniert, MCP-Unterprozesse auf einer gemieteten ProxyMac Mac mini aber mit ENOENT abstürzen

ProxyMac Engineering-Team 8. Mai 2026 ca. 12 Min. Lesezeit

Teams, die OpenClaw mit eigenen MCP-Servern auf Mac-mini-M4-Mieten in Hongkong, Japan, Südkorea, Singapur und den USA betreiben, posten häufig Stderr mit /usr/bin/env: node: No such file or directory, während Node v22 in der Terminal.app einwandfrei läuft. Die Ursache ist nicht „OpenClaw kaputt“, sondern mehrere Node-Installationen, die sich gegenseitig überlagern—nur eine davon erben launchd-gestützte Gateways. Dieses Handbuch vermittelt (1), wie Upstream-Stacks zunehmend moderne Node-Semantik für MCP-Transporte voraussetzen, (2) eine Symptom-Hash-Tabelle von Errno-Zeichenketten zu Fixes, (3), warum nvm-Hooks unter LaunchAgents nie laufen, (4) eine Neun-Schritte-Audit-Leiter mit Verweisen auf PATH & Homebrew, Umgebungsvariablen und Upgrade-Rollback, sowie (5) Corepack-Kantenfälle, wenn MCP-Shells pnpm dlx aufrufen. Zahlenanker: Node 22-Feature-Grenzen, 120-Sekunden-Neustart-Stürme und null Toleranz für implizite Dotfile-Abhängigkeit in regulierten Flotten.

Die Laufzeit-Spaltung: interaktive Shells gegen LaunchAgent-Welten

Interaktive-zsh-Sitzungen sourcen gern nvm.sh, stellen Homebrew-Pfade für Apple Silicon voran und zeigen Corepack-Shims. launchd startet OpenClaw mit dünnem Environment—oft nur /usr/bin:/bin:/usr/sbin:/sbin—sofern die plist keine Ergänzungen auflistet. MCP-Server erben, was das Gateway erbt; daher scheitern Shebangs #!/usr/bin/env node, wenn env node auf diesem PATH-Segment nicht findet.

  • Beobachtbare Metrik: Erfassen Sie node -p process.execPath aus Terminal und aus einem kleinen LaunchAgent-Echo-Job—Abweichungen über eine Pfadkomponente hinaus erfordern sofort plist-Anpassungen.
  • ABI-Fehler: Das Mischen von arm64-Binaries mit Rosetta-Shells zeigt sich als kryptische V8-Abstürze statt sauberem ENOENT—immer noch Laufzeit-Mismatch.
  • Parallele Installationen: Homebrew /opt/homebrew/bin/node, manuell geladenes pkg und nvm-verwaltete Builds können koexistieren; CI-spiegeltes JSON, das nur eines referenziert, bricht woanders.
Tipp: Jeden auf Cloud-Minis ausgerollten Node-Tarball mit einer Textdatei /etc/proxymac-node.channel (Semver + Prüfsumme) versehen—Betrieb löst mehrdeutige Tickets damit 35 % schneller.

Symptom-Hash-Tabelle: Errno-Zeichenketten für MCP-Betreiber

Log-FingerabdruckWahrscheinliche UrsacheErster Korrekturschritt
env: node: No such filePATH ohne brew-/nvm-PräfixAbsoluten PATH-Block ergänzen oder Symlink unter /usr/local/bin
Error: Cannot find module 'node:fs'Sehr altes Node parsiert moderne Import-MapsAuf ≥22-LTS-Kanal gemäß Plattformhinweis aktualisieren
MODULE_NOT_FOUND im MCP-WorkerNODE_PATH fehlt für DaemonExplizites workingDirectory oder gebündelte Abhängigkeiten nutzen
spawn EBADF nach UpgradeGemischte TeilinstallationenRollback über Rollback-Playbook

Warum nvm.sh sourcen der falsche Produktionsvertrag ist

nvm verzögert Node-Downloads hinter Shell-Funktionen—ideal für Menschen, fragil für Mitternachtsautomatisierung. Stattdessen einen fest verdrahteten Interpreter-Pfad direkt im MCP-JSON referenzieren oder mit /bin/bash -lc wrappen, erst nach Threat Modeling zu Injektionsrisiken. Mit Secrets-Hygiene aus Schlüsselbund-Leitfaden kombinieren, damit Wrapper keine Tokens über set -x leaken.

Neun-Schritte-Laufzeit-Audit-Leiter

  1. Bereitstellungen einfrieren: CI-Merges bis zum Abschluss der Diagnose pausieren—launchctl kickstart nicht endlos triggern.
  2. Effektives PATH ausgeben: LaunchAgent temporär instrumentieren, sortierte Umgebung zu loggen (geschützte Datei).
  3. Node-Builds vergleichen: node -p "[process.version, process.arch]" in beiden Kontexten ausführen.
  4. MCP-JSON normalisieren: Relative Interpreter-Hinweise durch absolute Exec-Pfade ersetzen.
  5. Corepack ausrichten: Einmal global mit festgepinnten Paketmanagern aktivieren—Versionen dokumentieren.
  6. OpenClaw-Upgrades querdurch: Upgrade-Matrix befolgen.
  7. JSONL tailen: stderr-Zeilen mit Logging-Leitfaden korrelieren.
  8. ulimit prüfen: Große Monorepos erschöpfen mitunter FDs—siehe ulimits.
  9. RCA veröffentlichen: Betroffene Regionen (HK / JP / KR / SG / US) und Semver-Endpunkte festhalten.
Vermeiden: Die gesamte .zshrc in plist-ProgramArguments zu stopfen—Reviewer können Sicherheits-Regressionen dann kaum sinnvoll diffen.

Corepack, pnpm und MCP-Einstiegspunkte, die Paketmanager spawnen

Wenn MCP-Definitionen pnpm dlx oder yarn node aufrufen, muss Corepack konsistent aktiv sein—interaktive Shells beenden Setup-Prompts, die launchd nie sieht. Nicht-interaktive Flags einbauen und Caches unter diensteigenen Verzeichnissen spiegeln, damit sich HK- und US-Replikas gleich verhalten.

FAQ

Beseitigt Docker diesen Schmerz? Container pinnen OS-Images, aber Sie müssen weiterhin ein Node-Basis-Tag wählen—dieselbe Semver-Disziplin.

Spielt Apple Silicon eine Rolle? Ja—Fat-Binaries von Intel-Laptops treffen arm64-Minis falsch.

Wo passen SSH-Sitzungen hin? Manuelles SSH erbt Login-Shells; Gateway-Prozesse nicht—SSH-Tests als Hinweise behandeln, nicht als Vertrag.

Warum ProxyMac Mac mini zu diszipliniertem Node-Pinning passt

Gemietete Mac-mini-M4-Hosts in HK / JP / KR / SG / US geben Teams deterministische Apple-Silicon-Umgebungen ohne Beschaffungsverzögerung—ideal, wenn MCP-Gateways den Node-Upstream monatlich mitgehen müssen. Hardware-Miete über die Preisseite mit Betriebsdokumentation im Hilfecenter kombinieren; VNC nutzen, wenn GUI-Installer Gatekeeper-Dialoge interaktiv durchklicken müssen.

MCP mit einem fest verdrahteten Node-Binary ausliefern

OpenClaw · MCP · HK / JP / KR / SG / US