跳到主要内容
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.

One Router Intent

Interfaces, DHCP, RA, DNS zones, DoH/DoT/DoQ forwarding, DS-Lite, NAT44, route policy, sysctl, packages, and systemd units live in one resource model.

Managed Protocol Daemons

DHCPv4, DHCPv6-PD, PPPoE, DNS, health checks, event relay, and firewall logging expose local HTTP+JSON status instead of hiding state in hooks.

Operational By Default

routerctl, SQLite-backed events, log sinks, OpenTelemetry hooks, conntrack inspection, and a read-only Web Console keep runtime behavior visible.

What It Can Build

DHCPv6-PD and DS-Lite with AFTR conditional DNS resolution
DHCPv4 scopes, reservations, DHCPv6, RA, RDNSS, DNSSL, and MTU options
Local DNS zones, DHCP-derived records, private upstreams, cache, and DNSSEC flags
Egress route selection with health checks, NAT44 exclusions, and conntrack preservation
Declarative packages, sysctl profiles, network adoption, systemd units, and log forwarding
Read-only Web Console for status, events, connections, DNS queries, traffic, firewall logs, and config

Validate, Plan, Apply

Start with a normal YAML file. Validate it, inspect the plan, run a dry application, then let the daemon keep the host converged.

routerd validate --config /usr/local/etc/routerd/router.yaml
routerd plan --config /usr/local/etc/routerd/router.yaml
routerd apply --config /usr/local/etc/routerd/router.yaml --once --dry-run
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.