Central management plane for WireSentinel endpoint enrollment, policy distribution, audit collection, and operational metrics.
| Path | Purpose |
|---|---|
controller/ |
Domain services (auth, enrollment, devices, policies, audit, metrics) |
api/ |
Axum HTTP API (controller-api binary) |
database/ |
SQLite migrations and sqlx helpers |
agents/ |
Rust SDK for endpoint enrollment + heartbeat |
web-ui/ |
Vite + React admin UI |
# API
export DATABASE_URL=sqlite://./data/controller.db?mode=rwc
export WS_CONTROLLER_JWT_SECRET=change-me
cargo run -p controller-api
# UI
cd web-ui && npm install && npm run devDefault admin user is seeded on first run: admin / admin (change immediately in production).
POST /api/v1/auth/login— JWT loginGET /api/v1/devices— list devices (viewer+)POST /api/v1/devices/register— agent enrollment (public, token required)POST /api/v1/devices/{id}/heartbeat— agent heartbeat (public)POST /api/v1/enrollment/tokens— create token (operator+)GET/POST /api/v1/policies— policy CRUD + push/revokeGET /api/v1/audit,POST /api/v1/audit/ingestGET /api/v1/metrics— JSON or Prometheus (Accept: text/plain)GET /health— public health probe
cargo test --workspace
cd web-ui && npm run buildPowerShell helpers: scripts/build.ps1, scripts/run-tests.ps1.
- Set
WS_CONTROLLER_JWT_SECRETto a strong random value. ControllerSecurityPolicycontrols JWT TTL, bcrypt cost, and HTTPS enforcement flag.- RBAC roles:
admin,operator,viewer.
Apache-2.0. See LICENSE.