MCPcopy Index your code
hub / github.com/encodeous/nylon

github.com/encodeous/nylon @v0.4.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.3 ↗ · + Follow
1,829 symbols 5,970 edges 192 files 244 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<img src="https://github.com/encodeous/nylon/raw/v0.4.3/docs/assets/banner.svg" width=500 height=250 alt="nylon - a self-healing mesh network built on WireGuard">

Join our Discord Docs


nylon

Nylon is a self-healing WireGuard mesh that routes around failures. If a link goes down, nylon reroutes traffic through the next-best path in seconds. No manual intervention, no central coordination servers, just like how a real network should be :)

Under the hood, nylon implements the Babel routing protocol (RFC 8966) on top of a modified wireguard-go, using measured latency as the routing metric.

Nylon targets under 10 seconds of convergence time after a link failure, as you can see in the demo below.

Demo

Main Features

  • Multi-hop Routing: traffic flows through the lowest-latency path across your mesh. Unlike Tailscale, Nebula, or ZeroTier, nodes don't need to be directly reachable from each other. Nylon forwards through intermediate hops automatically.
  • No Coordination Server: no SaaS dependency, no single control-plane. Nodes exchange routes directly over the same WireGuard tunnel that carries your data.
  • Single Binary, Single Port: one statically-linked binary, one UDP port (57175), one YAML config. That's it.
  • WireGuard Client Compatibility: connect stock WireGuard clients (iOS, Android, Windows) to the mesh with zero extra software. Mobile clients roam between gateways seamlessly.
  • Native WireGuard Speeds: data-plane runs entirely in wireguard-go (polyamide), capable of 10+ Gbps throughput.

Getting Started

Download the latest release binary from the releases page, then head to the docs for setup instructions.

Read the full documentation at nylon.jq.ax includes configuration reference, guides for connecting WireGuard clients, port forwarding, and comparisons with Tailscale/Nebula.

Sample systemd service and launchctl plist files can be found under the examples directory.

[!NOTE] Stability: I daily-drive nylon on Linux and macOS. The routing protocol has an extensive test suite and integration tests with simulated network conditions. The config format may still change between releases.

Security: Nylon does not modify WireGuard's cryptographic code. All nylon control traffic (route updates, probes) is sent inside the encrypted WireGuard tunnel. For security concerns, contact me directly.

Windows: The Windows client has known issues. For now, I recommend connecting Windows machines as passive WireGuard clients via a Linux/macOS gateway.

Bugs and feature requests welcome via GitHub issues.


Built with sweat and tears (thankfully no blood)

nylon is not an official WireGuard project, and WireGuard is a registered trademark of Jason A. Donenfeld.

Extension points exported contracts — how you extend this code

Bind (Interface)
A Bind listens on a port for both IPv6 and IPv4 UDP traffic. A Bind interface may also be a PeekLookAtSocketFd or BindS [5 …
polyamide/conn/conn.go
Device (Interface)
(no doc) [4 implementers]
polyamide/tun/tun.go
Router (Interface)
Router is an interface that defines the underlying router operations [2 implementers]
core/router_algo.go
PrefixHealth (Interface)
(no doc) [3 implementers]
state/prefix_health.go
CloseWriter (Interface)
(no doc) [1 implementers]
polyamide/ipc/namedpipe/namedpipe_test.go
VirtualNet (Interface)
(no doc) [1 implementers]
core/sys_virtual.go
PacketFilter (FuncType)
(no doc)
integration/harness.go
TCFilter (FuncType)
(no doc)
polyamide/device/traffic_control.go

Core symbols most depended-on inside this repo

Close
called by 104
polyamide/conn/conn.go
NeighUpdate
called by 92
core/router_harness.go
Error
called by 87
polyamide/device/uapi.go
String
called by 59
core/router_harness.go
MakePubRoute
called by 59
core/router_harness.go
ComputeRoutes
called by 57
core/router_algo.go
BroadcastUpdateRoute
called by 54
core/router_harness.go
GetActions
called by 54
core/router_harness.go

Shape

Method 1,004
Function 567
Struct 200
TypeAlias 35
Interface 16
FuncType 7

Languages

Go100%

Modules by API surface

protocol/nylon_ipc.pb.go272 symbols
protocol/nylon.pb.go67 symbols
polyamide/tun/netstack/tun.go60 symbols
core/router_harness.go44 symbols
polyamide/tun/offload_linux.go42 symbols
polyamide/conn/bind_windows.go39 symbols
state/endpoint.go34 symbols
polyamide/device/device_test.go32 symbols
polyamide/ipc/namedpipe/namedpipe.go31 symbols
polyamide/conn/bind_std.go31 symbols
e2e/harness.go30 symbols
polyamide/ipc/namedpipe/namedpipe_test.go29 symbols

For agents

$ claude mcp add nylon \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact