macOS UI does not recover when the LaunchDaemon is unloaded; Connect silently does nothing #6855
Unanswered
core3750x
asked this question in
Issue Triage
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
On macOS, the NetBird tray UI can start while the system daemon is not registered with
launchd. The tray menu loads slowly, and clicking Connect produces no visible response. Reinstalling the same NetBird package fixes the problem because the installer starts the service as root.The UI should detect this state and either recover the installed LaunchDaemon or show an actionable error instead of silently ignoring Connect.
Environment
/Applications/NetBird.app/Library/LaunchDaemons/netbird.plistObserved state
The app and service definition are installed, but the launchd job and daemon socket are absent:
The CLI confirms that its gRPC connection cannot reach the daemon:
The last daemon log entries show a clean shutdown and no later restart:
At the same time:
/Library/LaunchDaemons/netbird.pliststill exists and is owned byroot:wheel./usr/local/bin/netbirdcorrectly points to the binary inside NetBird.app.KeepAliveis enabled in the plist, but that cannot help after the job has been booted out of launchd.Reproduction / recovery
Actual: the UI remains running but cannot connect to the daemon, and Connect gives no actionable feedback.
Expected: the UI should clearly identify that the installed daemon is unavailable. Ideally it should invoke a supported privileged recovery flow; at minimum it should explain that the service must be started and surface the exact recovery action.
Manual recovery, without reinstalling:
Reinstalling the exact same v0.73.2 package also recovers the client. Its post-install log explains why:
Code notes
In v0.73.2, tray Quit only calls
systray.Quit()(client/ui/event_handler.go), so the current evidence does not prove that Quit itself unloads the daemon. The robust bug is the missing recovery/actionable-error path when the UI is launched with an installed but unloaded daemon.mainhas a rewritten Wails UI and already models this state asDaemonUnavailable, so the fix should target the current UI rather than the removed v0.73.2 systray implementation.Acceptance criteria
DaemonUnavailablewhere practical.Beta Was this translation helpful? Give feedback.
All reactions