A Raspberry Pi, a VM, a NAS, or the home server you already run. Warden ships for Linux amd64 and arm64, so whatever hums in the corner of your rack is good enough — no new hardware to buy.
Warden runs on a Raspberry Pi, a VM, or the NAS you already own and filters DNS for the whole house — trackers, ads, and malware gone before a device even connects. No cloud, no account, no per-device setup.
A Raspberry Pi, a VM, a NAS, or the home server you already run. Warden ships for Linux amd64 and arm64, so whatever hums in the corner of your rack is good enough — no new hardware to buy.
One single binary with no runtime to install. It idles next to your other services until you look at what it blocks.
Point your router at Warden once and every device is covered: phones, laptops, TVs, consoles, and the IoT gadgets that can't run an ad-blocker. One resolver for the whole house.
No cloud, no account, no telemetry. Your rules, blocklists, and query history stay on your hardware — you hold the keys, and nothing about your network ever leaves home.
One network, many people. Each gets their own rules — the kids' tablets locked down, your work laptop wide open, guests kept to themselves.
One policy per person.
Each profile picks its lists, exceptions, and block-all. Unknown devices take the default profile — or get refused if you leave it unset.
sourcesrc/config/schema/profile.rs
Google, YouTube, Bing, DuckDuckGo.
One switch on a profile forces the family-safe variants. Attach the adult or gambling list to that profile if you want those blocked too.
sourcesrc/profiles/safesearch.rs
Homework hours, enforced.
A schedule swaps a device or group onto another profile by time and day of week. Nights, school hours, weekends. Midnight wrap included.
sourcesrc/config/schema/schedule.rs
Visitors, walled off.
Attach a profile to the guest subnet. Visitors get filtered DNS without inheriting your exceptions. Hand out the Wi-Fi without handing over your rules.
sourcesrc/config/schema/subnet.rs
nas.home, printer.home — names you define
are answered on the LAN and never queried upstream.
Name your boxes.
Create internal aliases — nas.home, printer.home — as A, AAAA, or CNAME. Stop memorizing IP addresses.
sourcesrc/dns/local.rs
The homelab, not the guest Wi-Fi.
The same name can resolve differently per profile — nas.home on the homelab profile, nothing on the guest one.
sourcesrc/config/schema/profile.rs
Logs you can actually read.
Map a host on the LAN so the log reads kids-ipad, not 192.168.1.107. IP, MAC, or both.
sourcesrc/config/schema/device.rs
PTR, generated.
Every local A or AAAA you define gets an automatic PTR. Reverse lookups for those records read in names, not numbers.
sourcesrc/dns/local.rs
Every query, every device, in the TUI — plus a config backup, so rebuilding after a tinker gone wrong is a restore, not a rewrite.
Nothing's a black box.
See requests as they land: who asked, which domain, allow or block. Can be off, blocked-only, or sampled.
sourcesrc/tracking/query_log.rs
Know each device.
Queries today, block %, and a 24h series for every client. Spot the chatty smart TV. Top domains stay network-wide.
sourcesrc/tracking/engine.rs
The wall of shame.
A live ranking of blocked domains across the network — a quick read on how hard the lists are working.
sourcesrc/tracking/top_n.rs
Rebuild from a tarball.
warden config backup writes a tar.gz of the config tree. Restore it on new hardware with warden config restore.
sourcesrc/cli/commands/config/backup.rs