Stable
v0.11.0
Für den regulären Einsatz
22.10.2026
Release auf GitHubOb im Büro, zu Hause oder unterwegs: wave-mesh verbindet Laptops, Server, NAS und Cluster über WireGuard direkt miteinander, auch hinter NAT und ohne Portfreigabe. Den Koordinationsserver betreibst du selbst, und er sieht nie einen privaten Schlüssel.
Mehrere Waves gleichzeitig. Ein Gerät ist zugleich im Netz der Firma, im eigenen und in dem eines Kunden, ohne umzuschalten.Alle Pfade direkt. Die Geräte haben sich gegenseitig durch ihre NATs gefunden.
Ein Binary für Linux, macOS und Windows, jeweils für amd64 und arm64.
Downloads
Wähle eine Version und lade das Archiv für dein System direkt von GitHub herunter.
Stable
Für den regulären Einsatz
22.10.2026
Release auf GitHubUnstable
Vorabversion zum Testen
22.10.2026
Release auf GitHubEin Wave ist ein Netz. Du startest den Server einmal, danach braucht jedes Gerät zwei Befehle.
Zur ausführlichen AnleitungControl-Server, Relay und Postgres per Kustomize im eigenen Kubernetes-Cluster; ein einzelner Server mit k3s genügt. Der Server vergibt Adressen, Namen und Regeln.
$ cd deployment/server/overlays/mywave$ kubectl apply -k .
Ein einzelnes Binary von der Release-Seite. install richtet Dienst und Tray-Icon ein, danach braucht der Alltag kein sudo mehr.
$ sudo ./wave install
wave login nennt deinen Server und zeigt einen Link zum Anmelden. Danach findet das Gerät alle anderen im Wave von selbst, und es kann beliebig vielen Waves beitreten.
$ wave login https://control.example.com$ wave up
Jedes Gerät erfährt über STUN seine öffentliche Adresse, und beide Seiten schlagen gleichzeitig ein Loch in ihr NAT. Gelingt das nicht, etwa bei symmetrischem NAT im Mobilfunk, läuft der Verkehr über ein Relay. Wird der direkte Weg frei, wechselt die Verbindung, ohne abzureißen.
Abgesichert durch Ende-zu-Ende-Tests mit echten NATs, die in jeder CI laufen.
wave0 10.77.0.2
name laptop.wave.example.com
dns *.wave.example.com
relay connected wss://relay.example.com
PEER ADDRESS PATH HANDSHAKE
nas 10.77.0.3 direct 192.168.1.20:41641 3ms 12s ago
workstation 10.77.0.4 via relay 61ms 8s ago
cluster 10.77.0.9 direct 203.0.113.7:41641 18ms 31s ago
↳ https://grafana.wave.example.com 10.77.128.1
Ein Gerät ist in so vielen Waves, wie du brauchst, und zwar alle zugleich: im Wave der Firma, im eigenen zu Hause und in dem eines Kunden, auch an verschiedenen Control-Servern. Umschalten zwischen Netzen gibt es nicht. Jeder Wave bleibt für sich, mit eigenen Schlüsseln, eigenen Adressen und eigenen Namen, und einer kann nicht in den anderen sehen.
Überschneiden sich die Adressen zweier Waves, verweigert der Client den zweiten, statt still eine Route zu überschreiben. In den Apps für iPhone und Android (in Arbeit) trägt ein einziger Tunnel alle Waves, und jeder lässt sich einzeln pausieren.
control.example.com https://control.example.com
wave0 10.64.0.12
name laptop.corp.example.com
dns *.corp.example.com
PEER ADDRESS PATH HANDSHAKE
gitlab 10.64.0.3 direct 198.51.100.4:41641 9ms 5s ago
staging 10.64.0.8 direct 198.51.100.9:41641 11ms 40s ago
────────────────────────────────────────────────
wave.example.net https://wave.example.net
wave1 10.80.0.5
name laptop.home.example.net
dns *.home.example.net
PEER ADDRESS PATH HANDSHAKE
nas 10.80.0.3 direct 192.168.1.20:41641 2ms 12s agoTrägt ein Wave ein DNS-Suffix, das dir gehört, heißen deine Geräte laptop.wave.example.com statt 10.77.0.5. Ein lokaler Resolver beantwortet nur die Namen des Waves, alles andere geht unverändert an dein normales DNS.
Jedes Gerät bekommt ein Let's-Encrypt-Zertifikat auf seinen Namen. Der private Schlüssel entsteht auf dem Gerät und verlässt es nie. Erneuert wird unbeaufsichtigt, über Cloudflare, Hetzner, IONOS oder INWX. Ohne Zugangsdaten geht es auch, dann legst du den TXT-Record selbst an.
$ wave cert
This wave answers dns-01 by hand, so laptop.wave.example.com needs a record first:
name _acme-challenge.laptop.wave.example.com
type TXT
value 0Zq8…
Waiting... Ctrl-C is safe: `wave cert` takes the same order up again.Mitglieder, Gruppen, Tags und Dienste stehen als Karten nebeneinander. Eine Regel ist ein Pfeil, die Ports hängen an der Kante. Die Seite zeigt, wer danach wen erreicht, bevor du speicherst.
Ein gewöhnlicher Ingress mit der Klasse wave macht einen internen Dienst im Wave erreichbar und sonst nirgends. Umgekehrt erreichen Pods Geräte und Dienste des Waves über deren Namen, per HTTP und HTTPS mit TLS Ende zu Ende. Der Connector im Cluster hat keinen eingehenden Port.
Der Dienst installiert neue Versionen selbst, aber nur mit gültiger Ed25519-Signatur. Erreicht die neue Fassung keinen Server, geht er von allein zurück.
wave-mesh trennt drei Ebenen strikt. Der Control-Server verteilt nur öffentliche Schlüssel, das Relay reicht nur Chiffrat weiter. Den Verkehr zwischen deinen Geräten kann keiner von beiden entschlüsseln.
| Ebene | Aufgabe | Kennt private Schlüssel |
|---|---|---|
| Control-Server | Identität, Autorisierung, Netzkarte, DNS | nein |
| Relay | Adressen spiegeln, Chiffrat weiterreichen | nein |
| Gerät | WireGuard-Tunnel, lokale Konfiguration | nur den eigenen |
Der Control-Server signiert die Netzkarte mit seinem Ed25519-Schlüssel, und Geräte übernehmen nur, was dazu passt.
Auch die Pakete, mit denen sich Geräte finden, sind verschlüsselt: X25519 und XChaCha20-Poly1305.
E-Mail und Passwort mit Argon2id und auf Wunsch einem zweiten Faktor per Authenticator-App, oder dein OpenID-Connect-Anbieter wie Pocket ID, Keycloak oder Google. Konten legt der Betreiber an, eine offene Registrierung gibt es nicht.
wave-mesh steht unter der Elastic License 2.0. Selbst betreiben ist und bleibt kostenlos.
0 €ohne Gerätelimit
Alle Funktionen, auf deiner eigenen Infrastruktur. Nutzen, ändern und im eigenen Unternehmen einsetzen ist erlaubt.
4 €pro Nutzer und Monat
Wir betreiben Control-Server und Relays für dich, du verbindest nur noch Geräte. Jährlich zahlst du 40 € statt 48 € pro Nutzer. Die Zahl der Nutzer wählst du beim Buchen und änderst sie jederzeit.
4.650 €einmalig
Wir installieren wave-mesh in der Cloud deines Unternehmens. Danach übernehmen wir auf Wunsch mit einem Wartungspaket Updates und Betrieb.
Angebote für Unternehmen. Alle Preise zzgl. gesetzlicher MwSt., es gelten unsere AGB. Nicht erlaubt ist nur, wave-mesh Dritten als gehosteten oder verwalteten Dienst anzubieten.
Alles unter „Verfügbar“ steckt in den stabilen Releases. „Als Nächstes“ ist in Arbeit oder geplant; was neu dazukommt, steht im Changelog.
Changelog lesenDer Koordinationsserver gehört dir: Er läuft auf deiner Infrastruktur, nicht bei einem Anbieter. Deine Geräte tragen Namen unter deiner eigenen Domain, und jedes bekommt ein öffentlich gültiges Zertifikat.
Der Datenpfad läuft heute im Userspace. Realistisch sind 100 bis 300 Mbit/s je Gerät. Ein schnellerer Pfad über Kernel-WireGuard ist geplant, aber noch nicht gebaut.
Nein. Ohne Domain heißen deine Geräte unter .internal und sind trotzdem per Namen erreichbar. Öffentlich gültige Zertifikate gibt es nur mit einer Domain, die dir gehört.
Nutzen, verändern und weitergeben, auch im eigenen Unternehmen. Nicht erlaubt ist, wave-mesh Dritten als gehosteten oder verwalteten Dienst anzubieten.
Einen Kubernetes-Cluster; ein einzelner Server mit k3s genügt. Control-Server, Relay und Postgres kommen als fertige Images und werden per Kustomize eingerichtet. Nach außen braucht es HTTPS und UDP 3478 für STUN.
Ein Server, ein Binary je Gerät, und alles spricht direkt miteinander.