f8f3a9868ab88f43f8da212a354e9496b8dfd902
- Migration v2: INSERT → INSERT OR IGNORE for idempotency - Config: validate server.tls_cert and server.tls_key are non-empty - gRPC: add input validation matching REST handlers - gRPC: add logger to zone/record services, log timestamp parse errors - REST+gRPC: extract SOA defaults into shared db.ApplySOADefaults() - DNS: simplify SOA query condition (remove dead code from precedence bug) - Startup: consolidate shutdown into shutdownAll(), clean up gRPC listener on error path, shut down sibling servers when one fails Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MCNS
Metacircular Networking Service -- an authoritative DNS server for the Metacircular platform. MCNS serves DNS zones backed by SQLite, forwards non-authoritative queries to upstream resolvers, and exposes a gRPC and REST management API authenticated through MCIAS. Records are updated dynamically via the API and visible to DNS immediately on commit.
Quick Start
Build the binary:
make mcns
Copy and edit the example configuration:
cp deploy/examples/mcns.toml /srv/mcns/mcns.toml
# Edit TLS paths, database path, MCIAS URL, upstream resolvers
Run the server:
./mcns server --config /srv/mcns/mcns.toml
The server starts three listeners:
| Port | Protocol | Purpose |
|---|---|---|
| 53 | UDP + TCP | DNS (no auth) |
| 8443 | TCP | REST management API (TLS, MCIAS auth) |
| 9443 | TCP | gRPC management API (TLS, MCIAS auth) |
Documentation
- ARCHITECTURE.md -- full technical specification, database schema, API surface, and security model.
- RUNBOOK.md -- operational procedures and incident response for operators.
- CLAUDE.md -- context for AI-assisted development.
Description
Languages
Go
97.5%
Shell
1.2%
Makefile
0.7%
Dockerfile
0.6%