- Go 78%
- Svelte 8.4%
- JavaScript 7.8%
- TypeScript 2%
- CSS 1.8%
- Other 2%
gonemaster
gonemaster is a Go implementation of the Zonemaster DNS test engine, with a local CLI, an HTTP server, a server automation client, a Nagios plugin, an MCP bridge for AI agents, and public analysis views for tagged domain cohorts.
The public UI is available here: https://gonemaster.evilbit.de/
What gonemaster Tests
gonemaster checks the DNS health of a domain by running it through a series of testcases grouped into modules. Each testcase emits log messages that are scored into a numeric result and a letter grade. The modules are:
- basic - does the zone exist and have a working authoritative nameserver.
- address - nameserver IP addresses and their reverse DNS (PTR) mappings.
- connectivity - UDP/TCP reachability and network (ASN and prefix) diversity.
- consistency - whether nameservers agree on SOA, serials, NS sets, and more.
- delegation - parent/child delegation: NS records, glue, and referrals.
- dnssec - the DNSSEC chain of trust: DS, DNSKEY, signatures, and algorithms.
- nameserver - nameserver behaviour and capabilities, such as EDNS handling.
- syntax - hostname and domain name syntax.
- zone - zone-level records such as SOA timers and MX.
For the full inventory of testcases and what each one checks, see the specifications. Scoring and letter grades are described in the scoring documentation.
Highlights
- Parallel-safe engine runs with per-run state isolation.
- Text, JSON, JSON stream, and raw log output.
- Undelegated testing with explicit nameserver and DS input.
- HTTP server with persistent queue, batches, tags, profiles, and metrics.
- Public API and public UI that avoid exposing internal job IDs.
- Public cohort analysis with immutable snapshots.
- Stored packet cache save/restore for reproducible runs.
Quick Start
Run One Local Test
gonemaster example.com
gonemaster --json --domain example.com | jq
gonemaster --module dnssec --testcase dnssec01 example.com
Direct CLI documentation: pawal.codeberg.page/gonemaster/cli
Start the Server
The server embeds the admin, public, and analysis web UIs; building them requires Node.js:
make ui-build
go build -o ./gonemaster-server ./cmd/gonemaster-server
./gonemaster-server
For an API-only server without the embedded UIs (no Node.js required), build
with make build-gonemaster-server-noui.
Server documentation: pawal.codeberg.page/gonemaster/server
Automate the Server
gonemaster-client jobs create --domain example.com --wait --view summary
gonemaster-client jobs batch --file domains.txt --tag tld --wait
gonemaster-client entries query --tag tld --module DNSSEC --latest
Client documentation: pawal.codeberg.page/gonemaster/client
Publish Analysis Cohorts
gonemaster-client tags create tld --description "Top-level domains"
gonemaster-client tags add-domains tld --file tlds.txt
gonemaster-client jobs batch --from-tag tld --tag tld --wait
Analysis documentation: pawal.codeberg.page/gonemaster/analysis
Install
Prebuilt binaries for Linux, macOS, and Windows are published on the releases page.
Install the local CLI with Go (1.26 or later):
go install codeberg.org/pawal/gonemaster/cmd/gonemaster@latest
Build from source:
git clone https://codeberg.org/pawal/gonemaster.git
cd gonemaster
go test ./...
go build -o gonemaster ./cmd/gonemaster
sudo install -m 0755 gonemaster /usr/local/bin/gonemaster
The Makefile includes common targets such as build, test, ui-build,
packaging, and documentation/specification checks. Run make help for the
current list.
Documentation
Full documentation: pawal.codeberg.page/gonemaster
Start with the architecture overview for a one-sitting tour of the system: binaries, request lifecycles, data model, concurrency, security posture, and known limitations.
- CLI - local test runner
- Server - HTTP server and queue
- Client - automation client
- Nagios - Nagios and Icinga plugin
- MCP - Model Context Protocol bridge for AI agents
- Analysis - cohort analysis and snapshots
- Specifications - testcase and tag reference
- OpenAPI - machine-readable API spec
- Changelog - release history
- pkg.go.dev - Go package docs;
engineis the main entry point for embedding gonemaster programmatically
Screenshots
CLI output:
Admin UI:
Metrics view:
License
gonemaster is released under a BSD-style license. See LICENSE.