Lazy Connections
NetBird now includes an experimental lazy connection feature designed to improve performance and reduce resource usage by connecting to peers only when needed. Instead of maintaining always-on connections, NetBird activates them on-demand based on activity or signaling.
This guide walks you through enabling and configuring this feature in your NetBird client.
Minimum supported agent version: v0.45.0. This or higher version must also be installed on the peers you are trying to access for lazy connections to function.
This feature also requires an upgraded NetBird Management server. If you're self-hosting NetBird, ensure your server is updated to version v0.45.0, which adds support for lazy connections.
This feature is currently under active development and will continue to evolve. Future releases will enhance disconnection logic and add support for accessing resources through routing peers, which is not yet available.
What Are Lazy Connections?
When enabled, lazy connections allow the NetBird agent to:
- Establish peer-to-peer connections only when needed (e.g., when pinging a remote peer).
- Monitor peer activity and automatically disconnect peers that remain inactive and unreachable for a specified time.
- Keep critical peers (such as routers or excluded peers) always connected to ensure uninterrupted communication.
This feature is especially useful in large-scale deployments or resource-constrained environments, where maintaining full-mesh, permanent connections to all peers is unnecessary and inefficient.
When using lazy connections, there may be a slight delay when initiating a connection to a peer that is not yet connected. This is expected behavior, as the connection is established on-demand.
How Automatic Disconnection Works
Once a connection between two peers is established, it will remain open as long as the remote peer is reachable. The connection is not closed just because there is no data transfer.
In other words, the inactivity timer only triggers a disconnect if the peer is both inactive and unreachable for the full duration of the threshold.
The default inactivity threshold is 60 minutes, and can be configured via the NB_LAZY_CONN_INACTIVITY_THRESHOLD
environment variable.
Additionally, the disconnection logic is being improved and will be enhanced in future releases to better support mobile devices—providing more intelligent reconnection behavior and improved handling of intermittent connectivity.
Enabling Lazy Connections on agent
Lazy connections are disabled by default. You can enable Lazy Connections using the following environment variable:
export NB_ENABLE_EXPERIMENTAL_LAZY_CONN=true
Or pass the flag directly via the CLI when running the agent:
netbird up --enable-lazy-connection
This configuration is not persistent. You must reapply the flag or environment variable after each restart unless it is built into your service definition (e.g., systemd or Docker).
Enabling Lazy Connections in the NetBird Dashboard
The lazy connection feature can also be configured through the NetBird Dashboard. Here’s how it works once the setting is updated:
Setting enabled:
- The client’s lazy connection manager is now active. Existing peer connections and ongoing connection attempts will remain unchanged for one hour. After that, any connection that couldn't be established due to unavailable remote peers will transition to an idle state.
Setting disabled:
- The lazy connection manager is now disabled. The client will immediately attempt to establish connections with all remote peers.
Get started
- Make sure to star us on GitHub
- Follow us on X
- Join our Slack Channel
- NetBird latest release on GitHub