Expand description
Sagittarius — a self-hosted DNS sinkhole.
Shipped as a single self-contained binary containing the DNS engine,
persistent storage, and the web administration UI. See
SPEC.md for the full architecture and design rationale.
§Module layout
| Module | Responsibility |
|---|---|
app | Runtime that owns shared state and wires subsystems |
blocklist | Blocklist ingestion subsystem (fetch → parse → aggregate → schedule) |
cli | clap argument surface; parses args/env into a config::Config |
codec | Custom lazy DNS wire-format parser/serializer |
config | Operational configuration domain types |
error | Crate-wide error types and Result alias |
resolver | DNS query pipeline (tower service stack) |
storage | SQLite persistence (config, lists, credentials) |
telemetry | Logging initialisation (tracing subscriber setup) |
web | axum-based admin HTTP server with askama/Datastar UI |
Modules§
- app
- Application runtime.
- blocklist
- Blocklist ingestion subsystem (SPEC §6).
- cli
- Command-line interface — the input adapter that turns process arguments
and environment variables into a typed
Config. - codec
- DNS wire-format codec.
- config
- Operational configuration — the domain types the runtime is built from.
- error
- Crate-wide error strategy.
- resolver
- DNS resolution pipeline and resolver state.
- storage
- Persistent storage backed by SQLite.
- telemetry
- Telemetry module — structured logging initialisation and runtime diagnostics.
- time
- A tiny wall-clock helper shared across subsystems.
- web
- Web administration interface.