The guardian of your network.

Warden is Purge.cc's DNS resolver: it brings the blocklists home and keeps every device encrypted, private, and under your control.

warden  ·  tui live
A DNS Filter

A DNS resolver for your home or company: it answers every query on your own network and drops trackers and threats before they ever resolve.

See how it works →
Built in Rust

Written in Rust with no external runtime dependencies — one static binary, tuned to resolve fast on hardware as small as a Pi.

See how it's built →
Built for Security

Security is the design constraint, not a feature: encrypted upstreams, validated answers, and a resolver that fails closed rather than leaking.

See the features →
Open Source

Released under AGPL-3.0 — free to run, fork, audit and modify, and any hosted derivative has to stay open too.

See the code →
Your Own Lists or Rules

Purge.cc lists ship with Warden — yours to enable. Pick the ones you want, add any blocklist you already trust, or write the rules yourself.

See how rules work →
Declarative

The whole configuration lives in one TOML file. Version it, diff it, deploy it — no hidden state, nothing to reproduce by clicking.

See the config →
From lab to enterprise

One base, ready for every scale and challenge.

One resolver, built to filter DNS the secure, efficient way — simple enough for a homelab on a Pi or a VM, and ready to clean an organization's traffic at scale.

HOMELAB

Homelab

Self-hosted · one network

Warden for the home network. It runs on a Raspberry Pi, a VM, or a NAS and protects every device that touches the Wi-Fi — no cloud, no account, no fees.

  • 01Single binary — drop it on a Raspberry Pi, a VM, or a NAS.
  • 02Per-person profiles and time slots, from the living room to the kids' room.
  • 03TUI via SSH — live logs and block rate straight from the router.
  • 04Your rules, your blocklists. Nothing ever leaves the network.
Explore homelab features →
ENTERPRISE

Enterprise

Self-hosted · on-prem

The same resolver, at organization scale. Per-department policies, filtering without recording user tracking, and logs built for debug and control — on hardware you run.

  • 01Keep user privacy on — filtering stays active, tracking is not recorded.
  • 02Per-department policies, by group or VLAN, from the TUI.
  • 03Extensive logging — every query and every rule, so you can debug and stay in control.
  • 04On-prem or private cloud. Your DNS traffic stays yours.
Explore enterprise features →
A Built-in TUI

A TUI to help you monitor.

No web app to open. Dashboard, query log, network, filters — the whole resolver on one terminal, even over SSH from the router.

warden  ·  dashboard live
  1. Global Monitor

    The opening dashboard is the whole network at a glance: block rate, query volume and resolver health. Counters update as queries land, so you can keep traffic under watch in real time.

    • Block rate — 1h, 8h, 24h and 7d, side by side, so you can see how the filter is holding and spot an anomaly before it settles in
    • Live volume — query rate and record types as they land, so a quiet evening is obvious, and a sudden climb or a burst of unusual types is the first sign a device is misbehaving
    • Top offenders — which list is catching the most, and which devices are sending the most queries, so you can start to understand what the network is actually doing
    • Resolver health — cache hit rate, peak load and daemon poll, so you know the resolver is answering — not just that the filter is blocking
  2. Every Query in Detail

    The live log is every query from every device, as it lands. Isolate a host, read the type and the result, then write an allow or a block from the row itself — onto a list you can mount on a profile.

    • Every query — time, client, domain, type, result and RTT, so you can see who asked, what was decided, and how long it took
    • Filter by device — every query from one host, then narrow by domain, time, or blocked-only, so you can follow a single device without the rest of the LAN in the way
    • Query type — A, AAAA, HTTPS and the rest on each row, so you can tell IPv4 lookups from IPv6, and see how a device is trying to connect
    • Act on the row — take the name on the row and write it into a custom allow or block list, then mount that list on the profiles that should use it
  3. Document Your Network

    Warden already sees every client. Map a host so you recognize it, catalog it by owner, type and department, then read how much it talks and how much of that is blocked.

    • Map a device — pick a host on the LAN and give it a name, so you read kids-ipad, not 192.168.1.107
    • Catalog in layers — owner, type, department and group on the same host, so you can segment kids from work laptops, or one department from another
    • Traffic and block rate — queries today and blocked % on every row, so you can see what a device is actually doing, not only that it exists
    • The whole LAN — mapped and still unmapped, last seen a minute ago or last week, so a new phone or a forgotten gadget cannot hide
  4. Build Your Own Rules

    Profiles pick the lists. Attach a profile to a group of devices — or to a whole subnet — then decide, per profile, whether a feed is a blocklist, an allowlist, or silent.

    • Profiles on groups — write a profile and attach it to a group of devices, so the kids' tablets and the work laptops do not share one policy
    • Flip the nature — a list that blocks on one profile can allow on another, so the same feed is not the same rule everywhere
    • One list, many settings — inherit, invert, or make it inert for a profile, without copying the file
    • A whole subnet — attach a profile to a CIDR, so a lab range or the guest Wi-Fi gets the rules without naming every host
Under the hood

Developed with security
at the core.

Every layer is built to keep resolution safe — how it blocks, how it encrypts, how you configure it, and how you stay in control.

Blocking methods

Trackers hide behind friendly names. A list you didn't write can try to un-block itself. Warden walks the chain and sandboxes what it didn't author.

Disguised trackers don't get through.

CNAME chasing.

Warden walks the CNAME chain — up to 16 hops — and blocks the tracker even when it hides behind a first-party name.

source src/filter/cname.rs

A subscribed list can't un-block itself.

External-list sandbox.

Lists you subscribe to cannot smuggle an allow, $important, or regex rule. Only the rules you write get those powers.

source src/lists/parser.rs

Security

The hop to the upstream can be encrypted. Queries that look like a tunnel get refused.

Encrypted DNS, when you choose it.

DNS over HTTPS or TLS.

Cache misses can go out over DoH or DoT — you pick the upstreams. A fresh install uses plain DNS.

source src/upstream/resolver.rs

Tunnels get refused, not resolved.

DNS tunneling detection.

A burst of unique, cache-missing names under one domain is the usual shape of DNS exfil. Warden refuses those queries. On by default.

source src/security/tunneling.rs

Configurable

One resolver, many people and many names. Everything bends to your rules — without touching the global lists.

Different profiles for different people.

Per-person policies.

Each profile picks its lists, exceptions, and block-all. Unknown clients take the default profile — or get refused if you leave it unset.

source src/config/schema/profile.rs

Name your own boxes.

Custom local DNS.

Create internal aliases — nas.home, printer.home — resolved on the LAN. A and AAAA, plus auto PTR.

source src/dns/local.rs

Control

Policy that follows the clock, and a resolver that devices can't walk around.

Bedtime is bedtime.

Time-based schedules.

A schedule swaps a device or group onto another profile for a window — nights, school hours, weekends. Midnight wrap included.

source src/config/schema/schedule.rs

Devices can't skip the filter.

Anti-bypass.

Name the DoH or DoT resolvers you don't want resolved. Queries for those names are refused, and a blocklist cannot override them. Warden ships no list of its own — you add the names.

source src/security/anti_bypass.rs
Install