Router management for FreeBSD

pebble.

Your router, in one YAML file.

Pebble turns a small FreeBSD machine into a router. You describe the network in pebble.yaml, check the plan of what will change, and apply it. The routing, firewall and DNS are done by FreeBSD's own tools.

Status
In use
Runs on
FreeBSD 15.1
Recently added
PPPoE and IPv6
Pebble web management overview with interface, service and traffic information
The web overview. The guide's screenshots use made-up router data, not a real network.

What it does

Plan before you apply

Pebble shows the generated files and exactly what will change before anything touches the network.

Firewall, DNS and DHCP

PF firewall and NAT, Unbound DNS with DNSSEC and optional blocklists, and DHCP. The WAN can be DHCP, static or PPPoE, with IPv6 through DHCPv6 prefix delegation behind the same default-deny firewall.

Rollback if you lose access

Changes that could cut you off need confirming. If you don't confirm, Pebble rolls them back.

Status and diagnostics

Traffic, WireGuard, service status and diagnostics, plus an optional web interface that is kept deliberately simple.

How a change goes in

1

Edit pebble.yaml

Describe the interfaces, firewall and services you want.

2

Read the plan

See the generated files and the differences.

3

Apply

Disruptive changes start a rollback timer.

4

Confirm

Once you can still reach everything, keep the change.

Why FreeBSD does the work

Pebble manages services FreeBSD already ships rather than writing its own packet handling. That keeps it much smaller than a full router distribution, and the parts that matter most are the parts with the longest track record.

Pebble user guide (PDF)
Pebble network view showing WAN and LAN interfaces and traffic graph
The network view, with WAN and LAN interfaces and a traffic graph.
apex.

Next: A fast native text editor with multiple cursors and Git built in. No plugins, no account.