跳至主要内容
Open router control plane

routerd

Make a host router readable again.

routerd describes WAN acquisition, LAN services, DNS, NAT, route policy, system bootstrap, and observability as typed resources. It is built for small networks where the router must be explicit, repeatable, and inspectable.

Latest stable: v20260619.1730

The Operator Loop

Six steps from intent to observation. Each step is safe to repeat.

1
Declare
router.yaml
2
Validate
routerctl validate
3
Plan
routerctl plan
4
Apply
routerctl apply
5
Serve
routerd serve
6
Observe
routerctl doctor / get / describe

What You Can Build

Home DS-Lite / PPPoE / multi-WAN router

A single YAML declares WAN acquisition, prefix delegation, NAT, DNS, and failover for a residential edge.

  • DHCPv6PD
  • DSLiteTunnel
  • EgressRoutePolicy
Start here →

Proxmox or lab edge router

Overlay tunnels and bridge adoption turn a hypervisor host into a declarative lab router.

  • Interface
  • WireGuardInterface
  • VXLAN
Start here →

FreeBSD host router

Same resource model renders to systemd, networkd, nftables, rc.conf, or pf depending on the host OS.

  • Package
  • SysctlProfile
  • cross-OS render
Start here →

Tailscale / WireGuard / overlay edge

Integrate site-to-site or exit-node overlays while keeping the local LAN declarative.

  • TailscaleNode
  • WireGuardInterface
Start here →

CloudEdge SAM selected /32 mobility

Selective address mobility lets cloud VMs capture and release /32 addresses across providers.

  • CaptureAddress
  • EventGroup
Start here →

Observable router operations

Treat the router like a service: health checks, event streams, connection inspection, and telemetry.

  • routerctl doctor
  • events
  • Web Console
  • OTel
Start here →

Observed Like a Service

routerd exposes runtime state through multiple interfaces. No guessing.

routerctl status / events / doctor

CLI inspection of resource phases, event history, and automated health diagnostics.

Connection / conntrack inspection

Live conntrack table queries with per-flow source, destination, NAT mapping, and byte counters.

Read-only Web Console

Browser dashboard showing status, connections, DNS queries, traffic, firewall logs, and config.

Logs / OpenTelemetry

Structured log sinks, metrics, and traces exported to any OTel-compatible collector.

Install, Validate, Apply

Start from the release archive. The installer brings in runtime packages, installs binaries and service templates, then you validate the YAML before changing the host.

curl -LO https://github.com/imksoo/routerd/releases/latest/download/routerd-linux-amd64.tar.gz
curl -LO https://github.com/imksoo/routerd/releases/latest/download/routerd-linux-amd64.tar.gz.sha256
sha256sum -c routerd-linux-amd64.tar.gz.sha256
tar -xzf routerd-linux-amd64.tar.gz
sudo ./install.sh
sudo install -m 0600 /usr/local/etc/routerd/router.yaml.sample /usr/local/etc/routerd/router.yaml
routerctl validate -f /usr/local/etc/routerd/router.yaml --replace
routerctl plan -f /usr/local/etc/routerd/router.yaml --replace
routerd serve --config /usr/local/etc/routerd/router.yaml

routerd is pre-release v1alpha1 software. The project favors clear, safe router semantics over compatibility with early experimental names.