Skip to content

v6.0.0 Linux: LifeOS vs LIFEOS case mismatch crash-loops Pulse on case-sensitive filesystems (+ stray dir side effect) #1391

Description

@badosanjos

Summary

PULSE/Observability/observability.ts hardcodes the runtime dir as ~/.claude/LifeOS (mixed case) while DeployCore deploys the runtime to ALL-CAPS ~/.claude/LIFEOS. On case-sensitive filesystems (Linux) Pulse crash-loops with ENOENT on first start — and as a side effect the crash loop mkdir's a stray REAL ~/.claude/LifeOS/ directory (it captures PULSE/state/pulse.pid), which then shadows any later symlink fix.

On macOS (default case-insensitive APFS) both paths resolve to the same dir, which is why this only bites Linux.

Environment

Ubuntu 24.04, LifeOS v6.0.0, Pulse via manage.sh install (systemd user unit).

Repro

  1. Fresh install on Linux, Setup toolchain, manage.sh install.
  2. Unit enters activating (auto-restart); pulse-stderr.log shows repeated {"msg":"Pulse crashed","error":"ENOENT: No such file or directory"}.
  3. ls ~/.claude/ now shows BOTH LIFEOS/ and a stray LifeOS/ real dir created by the crash loop.

Workaround (verified)

Stop the unit, remove the stray dir, ln -s ~/.claude/LIFEOS ~/.claude/LifeOS, start → Pulse boots clean (all modules load, port 31337 binds).

Fix suggestion

Use the same constant the deployer uses (LIFEOS, or a shared resolve helper — DeployComponents.resolveLifeosDir already tolerates both). Happy to send a small PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions