The CLI up path only tolerated a not-yet-ready daemon via a 10s blocking
dial, so "netbird service start" immediately followed by "netbird up"
(e.g. a container entrypoint) failed with a generic "daemon not running"
error. The container entrypoint worked around this with a shell poll loop
(status --check live) before running up.
Move the readiness wait into the CLI, mirroring how the GUI already dials:
- DialClientGRPCServer now uses grpc.NewClient with a tuned reconnect
backoff and waits for the connection to reach READY (retrying on
TRANSIENT_FAILURE) up to a 30s deadline, instead of grpc.DialContext +
WithBlock with a hard 10s timeout.
- up now polls Status via waitForDaemonStatus, retrying while the RPC is
Unavailable (socket up but service not yet registered).
Add an explicit daemon-ready signal so clients can wait deterministically
instead of heuristically:
- New optional StatusResponse.daemonReady field (field 5, wire-compatible
with older GUIs/daemons which leave it unset). Regenerated with the
pinned protoc v33.1 toolchain so no version churn leaks into the diff.
- The server sets ready once Start succeeds and the DaemonService is
registered (SetReady, called from the service controller).
- waitForDaemonStatus waits for daemonReady=true (or an already-Connected
status), with a bounded grace window so older daemons that never set the
field are not blocked.
Simplify the container entrypoint accordingly: drop the readiness poll
loop (up now waits) and the now-dead NB_ENTRYPOINT_SERVICE_TIMEOUT env,
keeping only the daemon+up process glue and SIGTERM forwarding for clean
shutdown.
optimizes the NetBird client startup process by avoiding unnecessary login commands when the peer is already authenticated. The changes increase the default login timeout and expand the log message patterns used to detect successful authentication.
- Increased default login timeout from 1 to 5 seconds for more reliable authentication detection
- Enhanced log pattern matching to detect both registration and ready states
- Added extended regex support for more flexible pattern matching
This will allow running netbird commands (including debugging) against the daemon and provide a flow similar to non-container usages.
It will by default both log to file and stderr so it can be handled more uniformly in container-native environments.