routerd documentation

routerd turns typed YAML resources into a working, observable router on a Linux or FreeBSD host. Pick the section that matches what you are trying to do.
Recommended stable release
For a new deployment, start from the recommended stable milestone v20260619.1730. See Stable milestone for details.
By goal
| If you want to… | Start here |
|---|---|
| Install or upgrade routerd | Install and upgrade |
| Understand what routerd is and why it exists | Concepts → What is routerd |
| Understand where routerd fits | Concepts → Positioning |
| Stand up a router for the first time | Tutorials → Getting started |
| Generate a starter config in the browser | routerd config wizard |
| Enable editor completion and validation | How-to → VS Code YAML schema |
| Try a diskless mini PC router | Tutorials → Diskless mini PC walkthrough |
| Solve a specific deployment problem | How-to guides |
| Look up a resource kind or field | Reference → Resource API |
| Operate a running router | Operations → Reconcile |
| Read background notes on hard cases | Knowledge base |
| Catch up on what changed | Releases → Changelog |
All sections
- Concepts — positioning, vision, design philosophy, resource model, ownership semantics
- Install and upgrade — release archive install, package dependencies, upgrade, uninstall
- Tutorials — diskless mini PC, first router, WAN/LAN services, basic firewall, FreeBSD quickstart
- How-to — multi-WAN, FLET'S setup, VS Code YAML schema, PVE overlay, OpenTelemetry export, troubleshooting
- Knowledge base — field notes from real deployments (DHCPv6-PD clients, NTT NGN PD acquisition)
- Reference — Resource API, control API, plugin protocol, supported platforms, hardware, ownership rules
- Operations — reconcile and removal, state database, host inventory
- Design notes — open architectural questions and design rationales
- Releases — changelog
Next steps
- Install routerd — download the release archive and run
install.sh - Config wizard — generate a starter configuration in the browser
- Resource model — understand how routerd organizes router intent
- Getting started — the safe first loop: validate → plan → dry-run → serve