Repolode
razvandimescu

razvandimescu/numa

A portable DNS resolver in Rust that blocks ads, names local dev services as .numa domains, and can seal queries with ODoH.

Open-source alternative to:Pi-holeAdGuard Home

Stars
1,977
Forks
140
Open issues
29
Last commit
23 hours ago

What is it?

Numa is a DNS resolver shipped as a single binary that runs on a laptop without a cloud account or dedicated hardware. It blocks ads and trackers using Hagezi Pro lists, lets you reach local development services by names like frontend.numa with automatic HTTPS, and supports overriding any hostname with automatic revert.

It can forward queries to an existing system DNS, resolve recursively from the root servers with DNSSEC validation, or send queries through an ODoH relay so that no single party sees both the client's identity and the question. It also serves DNS-over-TLS and DNS-over-HTTPS clients, and can run as a public ODoH relay. The DNS wire-protocol parser is written from scratch without DNS libraries.

Installation covers Docker, Homebrew, Cargo, Nix, Arch packages and install scripts. The install command registers a system service, points system DNS at Numa and trusts its local CA. Numa also supports mDNS-based discovery of services across several machines on a LAN.

Key features

  • 01Blocks ads and trackers with Hagezi Pro lists, refreshed daily.
  • 02Resolves .numa local domains with HTTPS and WebSocket passthrough.
  • 03Overrides hostnames with auto-revert, controllable through a REST API.
  • 04Supports recursive resolution with DNSSEC validation.
  • 05Encrypts upstream queries with DoH, DoT or ODoH.
  • 06Serves DoT and DoH to clients, including iOS Private DNS.

Use cases

  • Naming local dev servers and reaching them over HTTPS in a browser.
  • Blocking ads and trackers across a home or office network.
  • Running a private recursive resolver with DNSSEC validation.
  • Sending DNS queries through an ODoH relay for privacy.

Quick start

  1. 1

    Install with Homebrew (macOS)

    brew install razvandimescu/tap/numa
  2. 2

    Run Numa in the foreground (port 53 needs root)

    sudo numa
  3. 3

    Test a lookup against the local resolver

    dig @127.0.0.1 example.com

Things to know

  • The README lists Numa's maturity as New, so it has a shorter track record than Pi-hole, AdGuard Home or Unbound.
  • Numa has no DHCP and no clustering, and most settings live in the config file rather than the dashboard.

In collections

Topics

FAQ

What is numa?
A portable DNS resolver in Rust that blocks ads, names local dev services as .numa domains, and can seal queries with ODoH. Numa is a DNS resolver shipped as a single binary that runs on a laptop without a cloud account or dedicated hardware. It blocks ads and trackers using Hagezi Pro lists, lets you reach local development services by names like frontend.numa with automatic HTTPS, and supports overriding any hostname with automatic revert.
Is numa free to use? What license does it have?
numa is open source under the MIT license. Check the license terms before using it in commercial products.
Is numa still maintained?
Actively maintained. The last commit to numa was on Nov 6, 2026.
What can I use numa for?
Naming local dev servers and reaching them over HTTPS in a browser. Blocking ads and trackers across a home or office network. Running a private recursive resolver with DNSSEC validation. Sending DNS queries through an ODoH relay for privacy.
How do I install numa?
Install with Homebrew (macOS): brew install razvandimescu/tap/numa Run Numa in the foreground (port 53 needs root): sudo numa Test a lookup against the local resolver: dig @127.0.0.1 example.com
Where can I get numa?
The source code and installation instructions are on GitHub: https://github.com/razvandimescu/numa

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects