Find the right NetBird repository

Start where the behavior is owned. A change that appears to be one dashboard control can also require a management API update, generated client changes, and documentation, so identify the boundaries before you open a pull request.

Repository-local instructions are authoritative. Read CONTRIBUTING.md, AGENTS.md, CLAUDE.md, pull request templates, and workflow files in the target repository before you start.

Common contribution paths

Use these four paths to narrow the search. The detailed maps below explain the ownership boundaries.

Build the product

Most core product work belongs in netbirdio/netbird. This repository contains the agent, CLI, desktop application, management and signaling services, relay, shared protocols, networking code, installers, and end-to-end tests.

Inside the core repository

PathOwns
client/, client/cmd/, client/server/Agent lifecycle, CLI, daemon, and background-service behavior
client/ui/The Wails and React desktop application
client/internal/routemanager/, route/Routing and route management across operating systems
client/firewall/Platform firewall backends and rule management
client/internal/dns/, dns/DNS management and resolver behavior
client/ssh/, client/mdm/, client/system/Built-in SSH, MDM-delivered policy handling, and host information
management/Accounts, users, peers, groups, Networks, Policies, setup keys, identity integration, persistence, and the management API
signal/Peer signaling and connection negotiation
relay/Encrypted traffic relay and relay protocol behavior
proxy/The identity-aware proxy used by Agent Network
client/proto/, shared/management/proto/, shared/signal/proto/, flow/Protocol definitions, generated bindings, and flow-event types
shared/Management, signal, relay, authentication, and API types shared across components
stun/, encryption/, sharedsock/, util/Shared connectivity, encryption, socket, and utility primitives
e2e/End-to-end suites and their shared test harness
infrastructure_files/, release_files/, tools/Self-hosting assets, release packaging, and development tooling

Look at package-level tests and nearby files before changing shared code. A small edit to a protocol, API type, routing primitive, DNS package, authentication helper, or persistence model can affect several binaries and platforms.

Improve the experience

AreaRepositoryTypical changes
Web dashboardnetbirdio/dashboardAdministration UI, API client usage, forms, tables, permissions, and account workflows
Android clientnetbirdio/android-clientAndroid application, VPN service, mobile UI, and Android-specific networking
iOS and tvOS clientnetbirdio/ios-clientApple-platform UI, network extension, core submodule integration, packaging, and release builds

The desktop application is not in a separate UI repository. Its Wails and React source lives under client/ui in netbirdio/netbird.

Mobile repositories combine platform code with core NetBird components. Read their project files, submodule instructions, signing requirements, and CI workflows before choosing a build or test matrix.

Make the docs clearer

Product documentation lives in netbirdio/docs. It includes conceptual and task guides, troubleshooting, the API documentation site, navigation, and reusable MDX components.

For a typo, broken link, or small clarification, open the relevant page on docs.netbird.io, select Edit on GitHub near the bottom, and propose the focused change in your browser. For a larger contribution, fork the repository, create a branch, and follow the documentation build and preview workflow.

Technical docs changes need evidence. Check the current product source, UI, schema, or tested behavior before changing a command, option, default, UI label, port, platform limitation, or version boundary. API pages under src/pages/ipa/resources are generated; update their OpenAPI source and use the documented generator instead of editing the output directly.

Extend the ecosystem

AreaRepositoryTypical changes
Kubernetes operatornetbirdio/kubernetes-operatorCustom resources, controllers, generated manifests, Helm packaging, and end-to-end cluster behavior
Terraform providernetbirdio/terraform-provider-netbirdResources, data sources, provider schema, generated reference docs, and acceptance tests
NetworkManager pluginnetbirdio/network-manager-vpn-pluginLinux NetworkManager integration, editor UI, D-Bus behavior, and packaging
Helm chartsnetbirdio/helmsKubernetes deployment templates and chart values
Home Assistant add-onnetbirdio/addon-netbirdAdd-on packaging and Home Assistant deployment behavior
Ansible collectionnetbirdio/ansible-netbirdNetBird configuration through Ansible modules and roles
Community projects listnetbirdio/awesome-netbirdCurated community tools, integrations, and learning resources

For specialized SDKs, integrations, packaging, and experimental tools, browse the netbirdio organization. Confirm that the repository is active, accepts the kind of contribution you plan to make, and is not a fork, mirror, generated artifact, or example repository.

Changes that cross repository boundaries

Plan related work together, but keep each pull request scoped to one repository:

  • A management API change can require the core OpenAPI output, dashboard client, Terraform schema, and docs to change together.
  • A CLI or configuration change can affect installers, packaging, mobile clients, and documentation.
  • A Kubernetes custom resource change can require generated code, CRDs, RBAC, manifests, examples, and operator documentation.
  • A dashboard workflow can need core API support and a matching procedural update in the docs.
  • A release-format change can affect downstream package and deployment repositories even if their source code does not change.

Link related pull requests and state the expected merge or release order when one depends on another. Test compatible revisions together, and do not copy generated output across repositories without recording its source and generation command.

Before you open a pull request

Confirm these points in the target repository:

  1. The issue or discussion is current, the direction is agreed when required, and nobody else is already doing the work.
  2. The default branch and pull request base are correct.
  3. The repository accepts external changes in the area you plan to edit.
  4. You know which files are generated and which command updates them.
  5. You can run the relevant tests without exposing credentials or damaging your normal network environment.
  6. You understand the pull request template, title format, contribution agreement, license, and sign-off rules that apply there.

Next, use the build and test guide, then work through the pull request checklist.