Releases: netbirdio/netbird
Release list
v0.74.6
v0.74.5
What's Changed
- [proxy] enforce model allowlist for URL-routed providers (Bedrock/Vertex) by @mlsmaycon in #6764
- [management] Remove proxy peer stale deduplication logic by @mlsmaycon in #6768
Full Changelog: v0.74.4...v0.74.5
v0.75.0-rc.6
What's Changed
- [client] fix MDM managementURL conflict on default-port URL echo by @riccardomanfrin in #6672
- [management,client] 0.75.0 release by @mlsmaycon in #6473
- [client] introduce client-side event aggregation by @dmitri-netbird in #6627
- [client] add json gateway for netbird daemon by @jnfrati in #6272
- [client] fix: re-generate gateway proto files by @jnfrati in #6696
- [client] Merge v0.74.x branch by @theodorsm in #6700
- [doc] Update Agent Network Readme by @braginini in #6699
- [client] Fix browser relay WebSocket close and raise RDP dial timeout by @lixmal in #6684
- [management] add traffic filters for source and dest id by @pascal-fischer in #6697
- [client] fix flaky test around event aggregation by @dmitri-netbird in #6710
- [client] Add SSO login flow timing instrumentation by @mlsmaycon in #6717
- [client,management] sync 0.74.4 changes by @mlsmaycon in #6727
- [management] fix duplicate operationId in OpenAPI spec by @CoderSufiyan in #6734
- [management] Add agent_network_only account setting by @mlsmaycon in #6736
- [management] Add dashboard_features account setting by @mlsmaycon in #6742
- [client] Bring the connection up in Go after SSO login by @mlsmaycon in #6744
- [client] Enable launch-on-login by default on fresh GUI installs by @mlsmaycon in #6738
- [management] require dashboard_features.agent_network when enabling agent_network_only by @mlsmaycon in #6750
- [proxy, client] Include system events in status conversion by @lixmal in #6746
- [management] add logs to ephemeral delete by @pascal-fischer in #6747
New Contributors
- @CoderSufiyan made their first contribution in #6734
Full Changelog: v0.74.2...v0.75.0-rc.6
v0.74.4
What's Changed
- [management] fix: prevent reverse proxy domain from being pushed as DNS search domain by @blaugrau90 in #6498
- [client] Recover from rosenpass key desync by @lixmal in #6714
- [client] Bump golang.org/x/crypto to v0.54.0 by @lixmal in #6709
New Contributors
- @blaugrau90 made their first contribution in #6498
Full Changelog: v0.74.3...v0.74.4
v0.74.3
What's Changed
- [client] fix MDM managementURL conflict on default-port URL echo by @riccardomanfrin in #6672
- [client] Update gopsutil to v4 by @mlsmaycon in #6688
- [client] Fix hanging status command during relay dial by @theodorsm in #6694
Full Changelog: v0.74.2...v0.74.3
v0.75.0-rc.5
What's Changed
- [client] Make lazy connections opt-out via NB_LAZY_CONN by @lixmal in #6617
- [client] Run privileged client tests natively with sudo on Linux by @pappz in #6635
- [self-hosted] Remove image override logic in getting started by @mlsmaycon in #6636
- [management] Add vLLM support for Agent Network by @braginini in #6643
- [management] return nil when config is not set by @mlsmaycon in #6642
- [management] Add vLLM e2e test by @braginini in #6649
- [misc] Fix GHCR image push after dockers_v2 migration by @mlsmaycon in #6653
- [client] Increase management client gRPC receive limit default to 16MB by @riccardomanfrin in #6641
- [client] Fix slow wg operations by @pappz in #6633
- [client] backport enforce a single selected exit node by @pappz in #6640
- [client] Fix backoff.Ticker goroutine leak in reconnect guard by @theodorsm in #6663
- [client] Update Wails to v3.0.0-alpha2.111 by @pappz in #6660
- [client] Remove lazy connection UI toggle by @pappz in #6661
Full Changelog: v0.75.0-rc.4...v0.75.0-rc.5
v0.74.2
What's Changed
- [management] Add vLLM e2e test by @braginini in #6649
- [misc] Fix GHCR image push after dockers_v2 migration by @mlsmaycon in #6653
- [client] Increase management client gRPC receive limit default to 16MB by @riccardomanfrin in #6641
- [client] Fix slow wg operations by @pappz in #6633
- [client] backport enforce a single selected exit node by @pappz in #6640
- [client] Fix backoff.Ticker goroutine leak in reconnect guard by @theodorsm in #6663
Full Changelog: v0.74.1...v0.74.2
v0.74.1
What's Changed
- [client] Make lazy connections opt-out via NB_LAZY_CONN by @lixmal in #6617
- [client] Run privileged client tests natively with sudo on Linux by @pappz in #6635
- [self-hosted] Remove image override logic in getting started by @mlsmaycon in #6636
- [management] Add vLLM support for Agent Network by @braginini in #6643
- [management] return nil when config is not set by @mlsmaycon in #6642
Full Changelog: v0.74.0...v0.74.1
v0.75.0-rc.4
What's Changed
- [client] Reduce false-positive DNS health warnings by @lixmal in #6453
- [client] Fix DNS custom zone teardown: handler leak and external CNAME resolution by @lixmal in #6445
- [misc] Bump the actions group across 1 directory with 9 updates by @dependabot[bot] in #6451
- [client] Surface DNS forwarder upstream failures via Extended DNS Errors by @lixmal in #6441
- [misc] Add TARGETPLATFORM build argument to Docker build commands by @mlsmaycon in #6499
- [client] Add Auth.Stop() to cancel an in-progress interactive login by @pappz in #6486
- [client] Fix engine lifecyrcle race by @pappz in #6443
- [client] fix WaitStreamConnected test call after ctx signature change by @pappz in #6503
- [misc] Add enterprise getting-started and migrate script by @bcmmbaga in #6501
- [management] do not use meta diff for login by @pascal-fischer in #6502
- [management] validate meta change against posture checks by @pascal-fischer in #6510
- [management] empty file check in nmap on other posturechecks by @pascal-fischer in #6511
- [client] Fix empty profile handle regression in debug config by @riccardomanfrin in #6514
- [management] Reschedule inactivity expiration when a peer disconnects by @bcmmbaga in #6523
- [client] Skip re-resolving cached management cache domains by @lixmal in #6518
- [management] validate posture checks on meta change before account update by @pascal-fischer in #6527
- [management] less strict metaHash when blocking peers by @pascal-fischer in #6531
- [management] move some logs to trace by @pascal-fischer in #6541
- [client] Suppress Quick Actions popup when DisableAutoConnect=true by @riccardomanfrin in #6542
- [management] simplify affected peers ignore disabled by @pascal-fischer in #6540
- [management] Optimize affected posture checks and add logs by @mlsmaycon in #6522
- [management] bring back client version check on login filter hash by @pascal-fischer in #6552
- [infrastructure] small gh workflow fixes by @dmitri-netbird in #6546
- [misc] Add Agent-Network readme by @braginini in #6562
- [client] Update Wails v3 to v3.0.0-alpha2.106 by @pappz in #6545
- [client] Fix stuck Windows tray dark icon on state change by @pappz in #6532
- [client] Remove hardcoded autostart from Windows installers by @pappz in #6544
- [Doc] Point Agent Network banner to netbird.ai by @braginini in #6564
- [client] Improve network addresses filter by @pappz in #6515
- [client] Fix blocked status lock via relay manager path by @pappz in #6547
- [client] Eliminate packet loss during lazy connections. by @pappz in #6355
- [client] fix nil pointer panic when applying SSH server setting to an existing config by @Adel-Ayoub in #6556
- [client] lower ICE handshake offer/answer log level to debug by @riccardomanfrin in #6565
- [self-hosted] Add agent-network preset with dedicated configurations by @mlsmaycon in #6569
- [misc] Bump the actions group across 1 directory with 4 updates by @dependabot[bot] in #6550
- [client] Keep signal stream alive while receive loop is blocked on worker handoff by @lixmal in #6530
- [client] Categorize privileged tests behind a build tag and run them in Docker by @pappz in #6425
- [client] Forward non-address DNS record types through route forwarders by @lixmal in #6455
- [misc] Update careers page link by @mlsmaycon in #6538
- [client] add per-phase timing metrics for sync processing by @riccardomanfrin in #6533
- [client] Wait for signal receive watchdog to stop before reconnect by @pappz in #6574
- [client] report management unhealthy while Sync stream is failing by @pappz in #6575
- [signal] Refresh receive liveness when worker handoff drains by @lixmal in #6594
- [client] raise duration validation limit to 24 hours by @pappz in #6598
- [client] Skip firewall ruleset rebuild when config is unchanged by @pappz in #6508
- [client] bound system info / posture-check gathering with a timeout to prevent sync-loop freeze by @riccardomanfrin in #6512
- [misc] Require on-premise EULA acceptance in enterprise scripts by @bcmmbaga in #6596
- [client] Reinject captured first packet on lazy connection activation by @lixmal in #6572
- [management] Add peer expiration reason to activity meta by @bcmmbaga in #6619
- [management,proxy,client] 0.74.0 version by @mlsmaycon in #6563
- [management, client] Add management-controlled client metrics push by @pappz in #5886
- [client] Fix pointer comparisons in profile config apply by @pappz in #6622
- [management] detach JWT group sync write from request cancellation by @den-dw in #6621
- [misc] Run agent-network e2e nightly + on manual dispatch by @mlsmaycon in #6629
- [client] use dedicated IsHealthy RPC for management health check instead of GetServerKey by @riccardomanfrin in #6421
- [management,proxy] Add per-provider skip_tls_verification for agent-network by @mlsmaycon in #6630
- [client] Fix race between WG watcher initial handshake read and endpoint creation by @pappz in #6626
- [management] Enable lazy connections by default on new accounts by @mlsmaycon in #6571
New Contributors
- @dmitri-netbird made their first contribution in #6546
- @Adel-Ayoub made their first contribution in #6556
- @den-dw made their first contribution in #6621
Full Changelog: v0.75.0-rc.2...v0.75.0-rc.4
v0.74.0
Release Notes for v0.74.0
New Feature: Agent Network
This release introduces Agent Network, a per-account LLM gateway that gives people and agents keyless, identity-based access to LLM APIs and internal resources over the tunnel. It is built on top of the existing reverse proxy and private services, so the transport is still NetBird's WireGuard overlay and the identity model is still your IdP. Have a tunnel, get access; no tunnel, no access.
Agents point at a tunnel-only endpoint instead of the provider's URL. NetBird holds the upstream provider key server-side, injects it per request, and ties every call to a real identity from your IdP. Client-supplied auth headers are stripped before the request is forwarded, so a hardcoded key never reaches the provider. The whole thing is default deny: nothing reaches a provider until a policy explicitly allows it.
Core capabilities:
- Keyless access to LLM APIs. No keys stored or shared on the client. The tunnel is the credential.
- Provider catalog. First-party APIs (OpenAI, Anthropic, Azure OpenAI, AWS Bedrock, Google Vertex AI, Mistral), AI gateways (LiteLLM Proxy, Portkey, Bifrost, Cloudflare AI Gateway, Vercel AI Gateway, OpenRouter), and any custom/self-hosted OpenAI-compatible endpoint (Ollama, vLLM, local GPU hosts).
- Policies. A policy connects a Source Group (users or agent devices from your IdP) to one or more providers.
- Limits. Token caps and budget (USD) caps per user and per group, plus account-wide Global Limits that can only tighten a policy, never loosen it.
- Guardrails. Model allowlist, optional prompt capture, and PII redaction on captured logs.
- Usage and access logs. Per-request accounting (identity, provider, model, tokens, cost) plus a full access log (method, path, status, duration, and prompt/completion when capture is on), with denied-request reasons, 7-90 day or indefinite retention, and filtering by user or group.
- Agentic access to internal resources. Databases, internal APIs, and self-hosted models reachable over peer-to-peer WireGuard, no proxy in the path, governed by the same identities and policies.
- Bring your own gateway. When forwarding to LiteLLM, NetBird passes the calling identity along by writing IdP groups into
metadata.tagsand the identity into thex-litellm-end-user-idheader.
The dashboard ships copy-paste Agent Config for Claude Code, Codex, the OpenAI SDK, and cURL, with the endpoint pre-filled and no API key involved.
Discussion
Enabling Agent Network
Agent Network ships in the same backend. If you already run NetBird, set an environment variable on your dashboard and it appears in the left-hand menu:
# Enable alongside the rest of the platform
NETBIRD_AGENT_NETWORK_ENABLED=true
# Or run a stripped-down, Agent-Network-only dashboard
NETBIRD_AGENT_NETWORK_ONLY=trueFor a fresh, minimal deployment focused on the LLM and agentic-access use case:
curl -fsSL https://pkgs.netbird.io/getting-started.sh | NETBIRD_AGENT_NETWORK=true bashNote: Agent Network is self-hosted only for now; NetBird Cloud support is coming.
Learn more:
- Overview: https://docs.netbird.io/agent-network
- Quickstart: https://docs.netbird.io/agent-network/quickstart
- How it works: https://docs.netbird.io/agent-network/how-it-works
- Providers: https://docs.netbird.io/agent-network/providers
What's Changed
Agent Network
- Added the per-account LLM gateway (Agent Network): store, manager, policy engine, provider catalog, and management HTTP + proxy gRPC surfaces, with the reverse-proxy middleware chain handling limit checks, cost metering, guardrails, identity injection, and response parsing.
#6555 - Added agent-network telemetry metrics.
#6561 - Added management-controlled client metrics push.
#5886 - Added per-provider skip_tls_verification for Agent Network.
#6630 - Added Agent Network preset for self-hosted deployments.
#6569 - Added Agent Network documentation and banner updates.
#6562
#6564 - Added Agent Network nightly/manual E2E workflows.
#6629
Client Improvements
- Added management-controlled client metrics push.
#5886 - Eliminated packet loss during lazy connections.
#6355 - Reinject captured first packet on lazy connection activation.
#6572 - Improved network address filtering.
#6515 - Fixed empty profile handle regression in debug config.
#6514 - Skip re-resolving cached management cache domains.
#6518 - Suppress Quick Actions popup when DisableAutoConnect=true.
#6542 - Fix blocked status lock via relay manager path.
#6547 - Lower ICE handshake offer/answer log level to debug.
#6565 - Keep signal stream alive while receive loop is blocked on worker handoff.
#6530 - Wait for signal receive watchdog to stop before reconnect.
#6574 - Report management unhealthy while Sync stream is failing.
#6575 - Refresh receive liveness when worker handoff drains.
#6594 - Raise duration validation limit to 24 hours.
#6598 - Skip firewall ruleset rebuild when config is unchanged.
#6508 - Bound system info and posture-check gathering with a timeout to prevent sync-loop freeze.
#6512 - Categorize privileged tests behind a build tag and run them in Docker.
#6425 - Forward non-address DNS record types through route forwarders.
#6455 - Add per-phase timing metrics for sync processing.
#6533 - Use dedicated IsHealthy RPC for management health checks.
#6421 - Fix pointer comparisons in profile config apply.
#6622 - Fix race between WG watcher initial handshake read and endpoint creation.
#6626
Management Improvements
- Rescheduled inactivity expiration when a peer disconnects.
#6523 - Validate posture checks on metadata changes before updating the account.
#6527 - Relaxed metaHash validation when blocking peers.
#6531 - Simplified affected peers processing by ignoring disabled peers.
#6540 - Optimized affected posture checks and added additional logging.
#6522 - Restored client version checks in the login filter hash.
#6552 - Added peer expiration reason to activity metadata.
#6619 - Detached JWT group synchronization from request cancellation.
#6621 - Enabled Lazy Connections by default for new accounts.
#6571
Infrastructure & Miscellaneous
- Applied small GitHub workflow fixes.
#6546 - Updated the careers page link.
#6538 - Bumped GitHub Actions dependencies.
#6550 - Updated the project to v0.74.0.
#6563 - Required on-premise EULA acceptance in Enterprise installation scripts.
#6596
New Contributors
Full Changelog: v0.73.2...v0.74.0