Files
nx9-wg/docs/architecture.md
T
thakaresandCopilot 2ac6c81dfe cli: avoid data-dir initialization for version; create db parent dirs; redact generated passwords in CLI output
- Prevent 'nx9-wg version' from creating data directories by avoiding database initialization.
- Create parent directories when an explicit --database path is provided.
- Redact printed generated administrator passwords; announce file path or redact instead.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-16 16:26:24 +05:30

2.3 KiB

NX9 WireGuard Architecture Blueprint

System Overview

nx9-wg is structured as a modular Rust workspace consisting of seven specialized crates and a root binary.

Crate Responsibility Dependencies
nx9-core Domain entities, cryptographic utilities (Argon2id, x25519, SHA-256), data validation, and configuration types. serde, argon2, x25519-dalek, sha2, ipnet, chrono, uuid
nx9-db Authoritative persistence layer using SQLite with WAL mode, automated migrations, and isolated repository modules. nx9-core, sqlx (sqlite)
nx9-wireguard WireGuard interface controller, client .conf configuration builder, live telemetry inspection, and pure Rust QR engine. nx9-core, qrcode, image, base64
nx9-network Linux kernel IP forwarding, routing table synchronization, and atomic inet nx9_wg nftables ruleset generator. nx9-core, ipnet
nx9-api Axum REST API, session and token authentication middleware, WebSocket live event broadcast, and Reconciliation Engine. nx9-core, nx9-db, nx9-wireguard, nx9-network, axum, tower
nx9-ui Dioxus web client shell (client only, business logic isolated in backend). nx9-core
nx9-wg Primary application binary providing CLI operations and HTTP daemon server. All workspace crates, clap

Architectural Invariants

  1. Strict SQL Isolation: All raw SQL queries and SQLite interactions are confined entirely to crates/nx9-db/. No other crate or handler interacts with SQLite directly.
  2. Zero Shelling Out: WireGuard, routing, and packet filtering interact with kernel abstractions and netlink without executing wg, wg-quick, or iptables subprocesses.
  3. Single Administrator Model: The system maintains exactly one administrative identity with CHECK (id = 1). No RBAC, multi-tenant, or organization complexity is introduced.
  4. Secret Redaction: Passwords, private keys, preshared keys, and API tokens are never logged, persisted in plaintext, or exposed in error messages. All secret wrapper types implement custom Debug redactions ([REDACTED]).
  5. Deterministic Reconciliation: Desired state in SQLite is the single source of truth. The reconciler computes drift and idempotently applies adjustments without touching unmanaged Linux resources.