After Numa Pompilius, who built institutions that outlasted kings.
Block ads and trackers. Override DNS for development. Name your local services with .numa domains. A single portable binary built from scratch in Rust — no Raspberry Pi, no cloud, no account.
Every time you visit a website, you ask a DNS resolver where to go. That resolver sees every domain you visit, when, and how often. Your ISP logs these queries by default.
Ad blockers work in one browser. Pi-hole needs a Raspberry Pi. Your local dev services live at localhost:5173 and you can never remember which port is which.
DNS is the foundation of everything you do on the internet, but the tools for controlling it locally are either too complex (dnsmasq + nginx + mkcert) or too limited (cloud-only, appliance-only).
A portable DNS proxy with ad blocking, encrypted upstream, local service domains, and a REST API. Everything runs in a single binary.
frontend.numa instead of localhost:5173app.numa/api → :5001.numa names — self-publish, DHT-backedEvery query walks through the same deterministic pipeline. Local data takes priority; the network is the fallback.
| Pi-hole | NextDNS | Cloudflare | AdGuard Home | Numa | |
|---|---|---|---|---|---|
| Ad & tracker blocking | Yes | Yes | Limited | Yes | 385K+ domains |
| Portable (travels with laptop) | No (Raspberry Pi) | Cloud only | Cloud only | No (network appliance) | Single binary |
| Developer overrides | No | No | No | No | REST API + auto-expiry |
| Local service proxy | No | No | No | No | .numa domains + WebSocket |
| Data stays local | Yes | Cloud | Cloud | Yes | 100% local |
| Live dashboard | Yes | Yes | No | Yes | Real-time + controls |
| DNS-over-HTTPS upstream | No | Yes | Yes | No | Built in (HTTP/2 + rustls) |
| Conditional forwarding | No | No | No | Manual | Auto-detects Tailscale/VPN |
| Zero config needed | Complex setup | Yes | Yes | Docker/setup | Works out of the box |
Benchmarked with dig against public resolvers on the same machine. Cached queries resolve in under a microsecond.
| Resolver | Avg | P50 | P99 |
|---|---|---|---|
| Numa (cached) | <1ms | <1ms | <1ms |
| Numa (cold) | 9ms | 9ms | 18ms |
| System resolver | 9ms | 8ms | 44ms |
| Quad9 | 15ms | 13ms | 43ms |
| Cloudflare | 19ms | 14ms | 132ms |
| 22ms | 17ms | 37ms |