The network is
the network.

Everything else just works. Install one agent on every laptop, server and CI runner - get an internal IP, SSH by hostname, expose services with TLS, and share public tunnels. All under one identity.

$curl -fsSL https://get.tunnet.io | sh
LAPTOPWORKSTATIONCI-RUNNERMESH FABRICencrypted by defaultEDGEAPI-02DB-PRODGATEWAY
PEERS14
P5012ms
P9538ms
TUNNELS3
EDGES2
UPLINK9.2Gb/s

Plugs into what you already run

macOS
Linux
Windows
Docker
Kubernetes
Postgres
GitHub Actions
Terraform
AWS
GCP
Cloudflare
NixOS
Rust
macOS
Linux
Windows
Docker
Kubernetes
Postgres
GitHub Actions
Terraform
AWS
GCP
Cloudflare
NixOS
Rust
macOS
Linux
Windows
Docker
Kubernetes
Postgres
GitHub Actions
Terraform
AWS
GCP
Cloudflare
NixOS
Rust
macOS
Linux
Windows
Docker
Kubernetes
Postgres
GitHub Actions
Terraform
AWS
GCP
Cloudflare
NixOS
Rust

Six verbs in One mesh

Every primitive is a verb that shares the same identity, policy and audit. Learn six commands, run a network.

Mesh · Every machine on one private network.

Direct paths when possible, relayed automatically when NAT blocks. Hostnames for every machine - no IPs to remember.

  • Identity-based paths
  • Auto relays when NAT blocks
zsh - mesh
$tunnet status --peers
$# 14 peers · 12ms p50 · all direct

Solo hackers and 5,000-person orgs.
Same tool. Same commands.

Individuals & small groups

Direct mode

Spin up a mesh from your laptop with a passphrase. No control plane, no server, no billing.

SETUP
one command
INFRA
no servers
AUTH
a passphrase
COST
free forever
zsh - quick start
$sudo tunnet create --name my-net --secret "a-strong-passphrase"
$tunnet invite --name my-net
$sudo tunnet join <INVITE_CODE>

Free, forever.

Teams & organizations

Managed mode

Full control plane with SSO, audit and API. Deploy on your infra or self-host with Docker.

IDENTITY
SSO · OIDC
CONTROL
dashboard + API
TRUST
audit + recording
HOSTING
cloud or self-hosted
zsh - quick start
$docker compose up -d
$sudo tunnet enroll \
$ --control-url https://control.acme.dev \
$ --token $TOKEN

Cloud or self-hosted.

Outgrowing Direct?tunnet upgrade-to-managedmigrates your network without losing connectivity.

Global edge.
Your control plane.

Tunnet's public tunnels ride on edges you can run yourself. Point DNS, configure ACME, and your team gets public HTTPS endpoints on infrastructure that never leaves your account.

  • Anycast public HTTPS endpoints for every tunnel
  • ACME out of the box, BYO cert supported
  • Regional pinning, health checks, graceful drain
  • Same identity everywhere - one policy engine
SFO
NYC
LDN
FRA
SGP
TYO
SYD
SAO
JNB
DUB

The network doesn't have to be
the weakest link.

Tunnet ships with the posture your auditors ask for on day one - identity everywhere, encryption everywhere, audit everywhere. Because everything is open source, you never have to take our word for it.

CLIENT NODEany laptop · server · runnerQUIC · TLS 1.3MESH FABRICone identity · one policyPOLICY ENGINEdefault-denyAUDIT LOGeverything is loggedEDGEyour infra · your certs
TLS 1.3 over QUIC

Every link is encrypted end to end. No unencrypted paths, no shared secrets on the wire.

Device identity, not keys

Machines enroll with verifiable identity. No SSH keys to distribute, rotate, or leak.

Policy engine by default

ACLs, roles, and tags decide reachability. Zero trust isn't a mode - it's the default.

Full audit trail

Every session, tunnel, and file transfer is logged. SSH sessions can be replayed on demand.

You can read every line

Agent, control plane, dashboard, edge - AGPL, MPL and Apache by component. Self-host the entire stack.

Verified file transfers

Send verifies every transfer cryptographically. Consent-based receiving, per-rule.

From install to
full-fleet zero-trust.

Every primitive is a verb. Every verb does one thing. Follow a machine from its first enroll to running a fleet-wide policy.

  1. 01 · JOIN THE MESH
    zsh - join the mesh
    $sudo tunnet enroll --control-url https://control.acme.dev --token $TOKEN
    $tunnet status --peers

    Enroll

  2. 02 · ADVERTISE A SUBNET
    zsh - advertise a subnet
    $tunnet route add 192.168.1.0/24
    $tunnet route list
    $tunnet netcheck

    Route a LAN

  3. 03 · SERVE TO THE MESH
    zsh - serve to the mesh
    $tunnet serve 3000 \
    $ --hostname grafana.acme.mesh \
    $ --acl "role:ops"
    $tunnet serve status

    Expose internal

  4. 04 · PUBLIC TUNNEL VIA EDGE
    zsh - public tunnel via edge
    $tunnet tunnel 3000
    $# → https://demo-api.rl.acme.tunnet.io
    $tunnet tunnel status

    Public in one command

  5. 05 · PASSWORDLESS, KEYLESS SSH
    zsh - passwordless, keyless SSH
    $tunnet ssh db-server
    $tunnet ssh sessions
    $tunnet ssh play <session_id>

    SSH by identity

  6. 06 · DIRECT → MANAGED
    zsh - direct → managed
    $tunnet upgrade-to-managed
    $# Migrates your network to the full control plane
    $# without losing connectivity

    Grow up

Not just the agent.
Every line.

Agent, control plane, management API, dashboard, edge - read every line, audit every path, self-host the whole thing. Commercial licenses exist for AGPL components when AGPL doesn't fit; the freedom stays either way.

0

lines of open Rust

0 licenses

components

0

contributors

0+

GitHub stars

MPL-2.0runtime · agent · SDKs
AGPL-3.0control plane · dashboard · edge
Apache-2.0protocol · tooling · scripts

Loved by the engineers.
Trusted by the auditors.

I stopped writing VPN docs. New engineers install one binary and can SSH to prod within an hour - with audit and re-auth already on. It's the closest thing to a magic packet I've seen.
RVRavi NairStaff Platform Engineer, Halogen
Our auditors saw identity-scoped access, encrypted transport, and session recording out of the box. Deployment went from six weeks of ZTNA rollout to one afternoon per office.
MCMarta CohenHead of Security, Northgate

The questions everyone asks first.

Ship the mesh
your team can trust.

Start free with Direct mode. Grow into Managed when you're ready. Self-host the whole thing whenever you want.

zsh
$curl -fsSL https://get.tunnet.io | sh
$sudo tunnet enroll --control-url https://control.acme.dev --token $TOKEN
$tunnet status --peers