FAQ & Fehlerbehebung
Port 3333 ist bereits belegt
Ein anderer Prozess nutzt den Port. PID ermitteln und beenden:
lsof -i :3333kill -9 <PID aus der Ausgabe>Alternativ einen anderen Port in der .env setzen:
PORT=3334Der Hub startet nach einem Neustart nicht
Der LaunchAgent muss möglicherweise neu geladen werden. Beide Befehle nacheinander ausführen:
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.penates.plistlaunchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.penates.plistGibt der zweite Befehl Bootstrap failed: 5 aus, prüfen ob die Plist-Datei den Modus 644 hat (chmod 644 ~/Library/LaunchAgents/com.penates.plist). launchd lehnt world-writable Dateien stillschweigend ab.
claude (oder codex, agy) wird im Terminal nicht gefunden
Der Server-Prozess, den der LaunchAgent startet, erbt möglicherweise nicht den Shell-PATH. Die benötigten Verzeichnisse in ~/.zprofile eintragen, damit launchd sie übernimmt:
echo 'export PATH="$HOME/.local/bin:/opt/homebrew/bin:$PATH"' >> ~/.zprofilesource ~/.zprofileDanach den LaunchAgent neu starten, damit der neue PATH übernommen wird.
Ich habe den Auth-Token vergessen
Den Token direkt aus der .env-Datei lesen:
grep AUTH_TOKEN ~/penates/.envDer Token ist derselbe Wert, den der Browser beim ersten Besuch abgefragt hat. Er ist im Browser unter dem localStorage-Key penates_token gespeichert.
Ich erhalte 401-Fehler seit Cloudflare Access aktiviert ist
Im Audit-Log nachschauen, welcher Grund gemeldet wird:
tail -20 ~/.penates/audit.log | grep auth.fail | jq -cHäufige Reason-Codes:
bad-jwt:no-jwt- der Browser ist nicht durch Cloudflare Access gegangen. Cookies für die Domain löschen und neu laden, damit der Access-Login-Flow erneut durchläuft.bad-jwt:bad-aud-CF_ACCESS_AUDin der.envstimmt nicht mit dem Audience-Tag der Access-Applikation überein. Den Wert im Cloudflare-Dashboard unter Access > Applications nachprüfen.bad-jwt:bad-iss-CF_ACCESS_TEAM_DOMAINist falsch. Muss exakt die Team-URL ohnehttps://sein.bad-jwt:expired- das JWT ist abgelaufen. Die Session-Duration in den Access-Applikation-Einstellungen erhöhen.bad-bearer- der im Browser gespeicherte Bearer-Token stimmt nicht mitAUTH_TOKENin der.envüberein. Den gespeicherten Token mitlocalStorage.removeItem('penates_token')in der DevTools-Console löschen. Der Hub fragt beim nächsten Request erneut nach dem Token.
Der tmux-Socket fehlt
Das kann nach einer Neuinstallation passieren, bevor tmux jemals gestartet wurde. Den Socket durch Starten einer temporären Session anlegen:
tmux new-session -d -s initDer Socket bleibt für die Laufzeit des tmux-Servers erhalten. Der Hub kann danach normal darauf zugreifen.
Sessions zeigen Aktivität „unknown”
Sessions, die außerhalb des Hubs gestartet wurden (über SSH, Moshi oder ein normales Terminal), haben keine Claude-Code-Hooks eingerichtet. Die Aktivität bleibt unknown, bis ein Hook feuert. setup.sh auf dem Rechner ausführen, auf dem die Session läuft, um die Hooks zu installieren, oder POST /api/sessions/:name/adopt aufrufen, um die Session im Hub zu registrieren.
Das Terminal zeigt korrumpierte Mehrbyte-Zeichen
Die PTY-Umgebung benötigt das richtige Locale. Der Hub setzt LANG und LC_CTYPE automatisch für Sessions, die er anlegt. Erscheinen _ anstelle von Zeichen wie ö, ⏺ oder ✻, sicherstellen, dass tmux mit dem Flag -u gestartet wird und das Shell-Profil ein UTF-8-Locale exportiert.