Three concerns.
One graph.
Three connected foundations — endpoint command, telemetry evidence, and governed actions — share tenant, authorization, and audit primitives. The architecture supports a real, partial remediation loop today; field evidence, operational scale, and complete PSA/service workflows are still being built.
A modular monolith that refuses to leak.
Fully async FastAPI on Postgres 16. Tenant isolation isn’t middleware — it’s row-level security enabled and forced on nearly every tenant-scoped table, with an app role that cannot bypass it. Missing tenant context returns zero rows.
Domain routers can be enabled explicitly, but the control plane remains a modular monolith today. Docker Compose and a CI-validated Helm chart provide the supported deployment paths.
One binary. Every platform. Tiny footprint.
A single Rust binary for Windows, Linux and macOS — enrollment, telemetry, signed typed commands, a loopback-only MCP tools surface, and local-inference foundations are implemented today, designed for a 200MB RAM ceiling.
Local inference triages and classifies on-device — cutting bandwidth and working offline. We’d rather ship the daemon honestly-scoped today than promise a wrapper around vaporware.
Types that can’t drift.
React 19 + Vite + Tailwind, with every API type generated from the checked-in OpenAPI spec. CI fails the build if backend and frontend drift by a single field — and the same generated client now backs a mobile app too.
Grows from one box to a cluster.
Deliberately partial. Honestly reported.
Everything marked shipped passes real tests against real backing services — locally and in CI, on every push. See the Platform page for what drift detection, policy packs, and identity sync actually do.