Architecture · Built for evidence

An intelligence layer with receipts.

Flux separates the systems that collect from the system that writes and the systems that read. Every number on screen traces back to a validated, versioned snapshot — and every recommendation carries the evidence that produced it.

The data path

From cloud signal to answered question.

Collection, coordination, analysis, and serving are four separate concerns with four separate failure modes. Flux keeps them that way on purpose.

SOURCES COLLECTION ANALYTICAL WRITE PUBLICATION SERVING Resource Graphinventory · tags Cost Managementactual · amortized FOCUS exportscharge-level ledger Advisorrecommendations Platform metricsutilization LogicMonitorCPU · mem · disk Scheduled collectors inventory · advisor cost history · policy telemetry · FOCUS checkpointed, independently retried Sync worker durable queue expiring claims crash-recoverable throttle-aware API pacing Singleton writer one process owns all analytical mutation Staged payloads idempotency keys checksum verified DuckDB columnar analytics append-only history source lineage kept derived evidence Validate & sign checkpoint + copy schema & row checks report smoke queries SHA-256 checksum rejected ⇒ never live Immutable snapshot private blob storage versioned, retained instant rollback doubles as the analytical backup API instance local read-only copy no shared lock atomic version swap API instance scales horizontally reads never block on ingestion Flux experience dashboards · reports Ask Flux · evidence PostgreSQL control plane advisory leases — one owner per job expiring claims — crashed work recovers retry & throttle state — survives restarts apply-job ledger — exactly-once writes publication ledger — which version is live
Flux-owned boundary Component Data flow Coordination (no data)
Zeroshared locks between ingestion and reads
N+1API instances serve the same versioned truth
Everysnapshot validated and checksummed before it goes live
Last-gooddata survives any collector or source failure
Design principles

Four decisions that shape everything else.

One writer, many readers

A single process owns every analytical mutation. Readers never contend with it, because they never touch the same file — they serve a published copy. Ingestion can run flat out while the dashboard stays responsive.

Nothing goes live unvalidated

Each candidate snapshot is opened independently, schema-checked, smoke-queried, row-counted, and checksummed before it is approved. A snapshot that fails any gate is recorded and discarded — the previous version keeps serving.

Partial is stated, never implied

When a source is throttled, stale, or incomplete, Flux says so on the surface where the number appears. A partial total is never presented as an estate-wide one — in the UI, in exports, or in an assistant answer.

Built to be read by an agent

Every recommendation retains its source, method version, observation window, and confidence, and the whole estate is exposed through one bounded governed catalog. That catalog is what an AI agent reads — and the same evidence exports reproducibly outside the app.

Publication lifecycle

How a change reaches your screen.

Collection and serving are decoupled by a versioned handoff. That single design choice is what lets Flux ingest a large estate continuously without ever making a reader wait — and what makes rolling back a bad dataset a pointer change instead of a restore.

checkpointvalidate checksumupload approveadopt
publication · worker
// collection completes, coalesced
checkpoint analytical store
validate candidate → schema ✓ views ✓ rows ✓
sha256 a7f3…c9b2
upload flux-analytics-00000013
approve version 13 (atomic)

// each instance, independently
instance A ▸ verify → smoke → swap ▸ v13
instance B ▸ verify → smoke → swap ▸ v13
in-flight requests finish on v12
Coverage

What Flux reads, and what it refuses to do.

Read-only by construction. Flux authenticates with a managed workload identity, holds no secrets in its codebase, and performs no cloud mutation.

Cost & commitment

Actual and amortized cost, checkpointed daily history, and FOCUS charge-level ingestion — the open FinOps billing standard — plus commitment coverage, utilization, and discount realization against list.

Estate & change

Full resource inventory across every configured subscription, exact consecutive-snapshot diffs, drift anomalies with warming-up states, policy posture and exemptions.

Utilization

Platform metrics and LogicMonitor reconciled per resource, with coverage states, disagreement review, and a hard rule: missing telemetry is never classified as idle.

The guardrails are the product

No autonomous cloud mutation. No arbitrary SQL execution. Readers cannot start or configure synchronization. Successful source data survives partial failures. These constraints are enforced in code and covered by tests — not documented as intentions.

See it against your own estate.

Connect a subscription read-only and watch the first snapshot publish.