BUSL-1.1 · source available

Compile scattered configuration into one validated model — then resolve an exact, reproducible config for any product or deployment.

The same inputs always produce the same bytes. Built for teams shipping many variants of a system from shared building blocks — and for anyone who needs configuration to be auditable and bit-for-bit reproducible.

configflux · compile → resolve
$ configflux-compiler compile --source model.json --out build/
 compiled 142 chunks → 150% model
 validated typed graph (0 conflicts)
$ configflux-interpreter resolve \
    --request-file resolve.json --response-file out.json
 resolved → 100% model
 canonicalized · sha256 9f2c…a17b
wrote 6 outputs in 0.42s · same inputs → same bytes
The problem

Managing many configuration variants by hand drifts, and can't be reproduced. ConfigFlux makes configuration deterministic and auditable: a typed model you validate once, and resolve into an exact config — the same bytes, every time.

01 / How it works

One pipeline — from CUE chunks to a live runtime

Every stage is typed and deterministic. Nothing is resolved twice the same way by accident — it's the same way by construction.

ConfigFlux pipeline: author, compile, resolve, serve CUE chunks are compiled into a 150 percent model, resolved into a strict 100 percent model, and served by the runtime, which delivers resolved configuration to consumers over a stable CLI, a first-party C++ SDK, ROS 2 adapters, and a versioned C ABI for any language or your own stack. Compile Resolve Serve CUEchunks 150%model 100%model Runtimelive system CLI C++ ROS 2 any language · your stack
C++ headers build flags artifact manifests software BOM runtime config
01 — Author

Decentralized CUE configuration chunks — your shared, typed building blocks.

02 — Compile

Merge and validate into the 150% model (a typed graph); emit a hash-addressable Compiled Model Package (CMP).

03 — Resolve

Apply late-binding selections to resolve the strict 100% model; export generated C++ headers, build flags, manifests, and a software BOM.

04 — Serve / Run

The runtime delivers resolved config to a live system — deterministic delta-first sync, a layered store, commit/rollback, and an event bus.

02 / Key features

Rigorous where it matters, honest about the rest

Deterministic by construction

Outputs are canonicalized and hashed. The same inputs always produce the same bytes — and the same hashes.

Scenario packs

Reusable product families for robotics, industrial automation and building systems — a starting point, not a blank page.

Bazel-only, hermetic build

One command, fully sandboxed and reproducible. No surprise dependencies leaking in from your host.

Staged pipeline

Compiler → interpreter → runtime, driven by the one-shot cfx CLI, with a first-party C++ SDK and ROS 2 adapters for embedding in real systems.

Integrate from anywhere

Resolved configuration ships as plain files, a stable CLI (JSON in/out), and a versioned C ABI — read it from any language, subprocess the CLI, or bind the ABI. First-party C++ and ROS 2 SDKs included.

Auditable outputs

Resolved models, generated headers, build flags, manifests, and a first-party software BOM — all inspectable.

Signed releases

Release binaries are cryptographically signed, so you can verify exactly what you're running.

Requirement traceability

Behavior maps back to tracked requirements, so your guarantees are auditable — not just asserted.

03 / Quickstart

Up and running in one command

Grab a signed release, or build from source. Either way it's hermetic and reproducible.

$ git clone https://github.com/configflux/configflux
$ cd configflux
$ bazel build //...
$ bazel test //...
Requires Bazel (via Bazelisk), a C++20 toolchain, and Git. Rust is fetched hermetically.
Browse the worked examples in the repo →
04 / Concepts

A small glossary

SPL

Software product line — a family of related systems built from shared, configurable building blocks.

150% model

The superset model containing every option and variant, before any resolution is applied.

100% model

The fully resolved configuration for one specific product or deployment.

CUE

The typed configuration language used to author and constrain chunks.

CMP

Compiled Model Package — the hash-addressable artifact the compiler emits from the validated 150% model.

05 / Who it's for

Built for variants you can't afford to get wrong

If you ship many configurations of the same system — and someone needs to prove which one shipped — this is for you.

Device fleets

Many units, many firmware and feature combinations, one source of truth.

Industrial automation

Cells and lines configured per site, with an audit trail for each.

Building systems

HVAC and controls tuned per building from shared, validated blocks.

Multi-environment deploys

Dev, staging and production resolved from one model — no drift.

SCENARIO PACKS — same engine, increasing complexity
water pump wind turbine automation cell mobile robot building HVAC
Status — early and source-available

ConfigFlux is validated for small to mid-size models today: deterministic compilation, validation, resolution, and signed, hashed outputs all work end to end.

Very large or densely-constrained models are an area of active research — we don't claim to handle arbitrarily large problems yet. The measured performance benchmarks report exactly the workloads validated for this release. Licensed BUSL-1.1 (source available).

See what's shipped →
06 / Docs

Learn more

Design overview
How the compiler, interpreter and runtime fit together.
Model spec
The 150% / 100% model and how resolution is defined.
Worked examples
End-to-end runnable examples, from a minimal model to a composed fleet.
Interface contracts
The frozen compiler / interpreter / runtime API envelopes, diagnostics, and hash semantics.
Security policy
Reporting, signed releases and disclosure.

Make configuration reproducible.

Build from source in one command, or grab a signed binary. Source-available under BUSL-1.1; free for production use under the license grant.

Get started → View on GitHub