You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Make the app's daemon management follow NODESPACE_HOME #3616
The desktop app's daemon management (ensure_daemon_running, the launchd plist it writes) ignores NODESPACE_HOME. An app started with an isolated home still manages, and points its launchd job at, the user's real daemon setup. Also, the launchd daemon doesn't inherit the app's NODESPACE_HOME. #3611 documents that limitation for the bundled-model copy.
Found while implementing #2781 Part B (#3611). Related: #3601, #3609, #3612 (other components that now follow NODESPACE_HOME).
Decide and document whether an isolated NODESPACE_HOME app run should register its own launchd job, pass NODESPACE_HOME to the daemon, or refuse to manage a launchd job at all. Write the decision in the docs first.
Implement it, with tests using scratch homes and no real launchctl calls.
@malibio for tomorrow's discussion: the decision is proposed in NodeSpaceAI/nodespace-docs#111 and implemented in #3637. Both are held until we agree.
What we found. An app started with only NODESPACE_HOME set still connected to the real$HOME/.nodespace socket, registered the real launchd job (without NODESPACE_HOME), and stopped the real daemon on quit. So it read and wrote the user's own databases. daemon-cli-protocol.md claimed a different home meant a different socket; it didn't.
Proposed rule. For a home other than the user's, the app runs the daemon headless as its own child process. It never calls launchctl, systemctl or reg, uses a per-home socket or pipe, and stops the daemon by PID, never by image name. Deleting the home cleans everything up. The trade-off: no tray, no crash restart and no login start for another home. The user's own home is byte-for-byte unchanged, and a test proves it against main.
Rejected: a per-home launchd job (leaves orphaned login jobs, and nodespace uninstall and the product check only know the shared label), a dev flag, and expecting a hand-started daemon.
Open for the discussion:
The daemon's and CLI's own socket fallback still ignore NODESPACE_HOME.
The skill installer and onboarding still write under the real home.
The Windows lines were checked by reading only, with no Windows build.
Activity
mstomar125 commentedon Oct 5, 2026
@malibio for tomorrow's discussion: the decision is proposed in NodeSpaceAI/nodespace-docs#111 and implemented in #3637. Both are held until we agree.
What we found. An app started with only
NODESPACE_HOMEset still connected to the real$HOME/.nodespacesocket, registered the real launchd job (withoutNODESPACE_HOME), and stopped the real daemon on quit. So it read and wrote the user's own databases.daemon-cli-protocol.mdclaimed a different home meant a different socket; it didn't.Proposed rule. For a home other than the user's, the app runs the daemon headless as its own child process. It never calls
launchctl,systemctlorreg, uses a per-home socket or pipe, and stops the daemon by PID, never by image name. Deleting the home cleans everything up. The trade-off: no tray, no crash restart and no login start for another home. The user's own home is byte-for-byte unchanged, and a test proves it against main.Rejected: a per-home launchd job (leaves orphaned login jobs, and
nodespace uninstalland the product check only know the shared label), a dev flag, and expecting a hand-started daemon.Open for the discussion:
NODESPACE_HOME.🤖 Generated with Claude Code
malibio commentedon Oct 5, 2026
Closing as not planned.
NODESPACE_HOMEis a test setting for the daemon and the CLI; the desktop app does not read it and manages one daemon through the shared registration. Reasoning: https://github.com/NodeSpaceAI/nodespace-docs/pull/111#issuecomment-5998859172