Gonemaster is a Go implementation of the Zonemaster engine and CLI. https://gonemaster.evilbit.de/
  • Go 75.3%
  • Svelte 9.3%
  • JavaScript 7.8%
  • TypeScript 3.9%
  • CSS 1.8%
  • Other 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Patrik Wallström 537e7fcac1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
docs: changelog entry for the DNSSEC chain algorithm mismatch link
2026-08-02 00:36:22 +02:00
.gitea docs: add architecture document and anti-rot CI check 2026-05-17 17:49:48 +02:00
analysis-ui deps: bump postcss and @sveltejs/kit to fix npm audit findings 2026-08-01 13:54:52 +02:00
cmd gonemaster-server: add --log-format/--log-level flags and structured lifecycle logs 2026-07-19 11:36:23 +02:00
docs ui-public: add explanation for the DS/DNSKEY algorithm mismatch finding 2026-08-01 23:46:01 +02:00
engine engine: report DS/DNSKEY algorithm mismatches in the DNSSEC chain 2026-08-02 00:30:09 +02:00
packaging packaging: add gonemaster-mcp to release binaries and packages 2026-05-31 23:05:43 +02:00
scoring scoring: exempt RSA_EXPONENT_UNSUPPORTED notices from penalty 2026-07-14 18:03:51 +02:00
server server: include per-nameserver response times in the domain detail response 2026-07-20 12:36:21 +02:00
share i18n: add messages for the DS algorithm field findings in all 11 locales 2026-08-01 23:44:05 +02:00
site server: rename nameserver15 testcase to software version disclosure (#80) 2026-07-05 21:43:05 +02:00
tools tools/i18n: parse glossary sections in the ui-explanations sync 2026-07-17 15:37:27 +02:00
ui deps: bump postcss and @sveltejs/kit to fix npm audit findings 2026-08-01 13:54:52 +02:00
ui-public ui-public: test the algorithm mismatch chain link layout and locale coverage 2026-08-02 00:34:19 +02:00
.gitattributes Added .gitattributes 2026-01-27 23:27:20 +01:00
.gitignore make: add package-deb/rpm targets for cross-arch nfpm builds 2026-05-20 15:22:08 +02:00
.gitmodules docs: scaffold Hugo site with Relearn 6.4.1 theme submodule 2026-05-14 01:23:21 +02:00
.woodpecker.yml ci: fail the build when sources are not gofmt-clean 2026-06-15 16:56:10 +02:00
Changelog docs: changelog entry for the DNSSEC chain algorithm mismatch link 2026-08-02 00:36:22 +02:00
docker-compose.test.yml cleanup: small cleanup 2026-05-03 22:16:33 +02:00
go.mod deps: bump miekg/dns to v0.6.86 2026-08-01 22:37:29 +02:00
go.sum deps: bump miekg/dns to v0.6.86 2026-08-01 22:37:29 +02:00
LICENSE Removed 'All rights reserved.' 2026-05-04 16:07:15 +02:00
Makefile make: run analysis-ui tests as part of make test 2026-06-11 21:57:29 +02:00
README.md docs: restructure README with quick start, releases, nagios/MCP, and license 2026-07-09 01:00:21 +02:00

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; engine is the main entry point for embedding gonemaster programmatically

Screenshots

CLI output:

ascii animation

Admin UI:

UI screenshot

Metrics view:

Metrics screenshot

License

gonemaster is released under a BSD-style license. See LICENSE.