Flux
Flux is a local-first developer automation platform, written in Rust. One .flux
file describes how to build, test, package, and deploy a project; Flux runs it as a
parallel dependency-graph pipeline with caching and encrypted secrets. It also makes the
repository legible to AI agents (flux project, flux ask) — it embeds no LLM, and pipes
context to a model you configure. It orchestrates your existing tools rather than replacing
them.
Give Flux a project, and it knows how to build, test, package, and ship it.
- Phase 1 — build and test projects.
- Phase 2 — a dependency-graph engine, parallel execution, artifacts, releases, encrypted secrets, container build-environments, deployment, local runners, and a plugin foundation.
- Phase 3 — an intelligent cache that rebuilds only what changed, reusable pipeline modules, build analytics, reproducibility locks, runner pools, and per-environment secrets.
- Phase 4 — a platform layer: multi-project workspaces with
cross-project affected-detection, first-party dev tools (
fmt,lint,doctor,changelog,version,deps), pipeline templates, a policy engine, and a plugin PDK. - Phase 5 — an AI-native layer: repository intelligence
(
flux project), a knowledge graph, honest AI agents (flux agent run …), a natural-language front door (flux ask), local GitHub integration (flux github), a docs engine (flux docs), and a self-contained HTML dashboard. Flux embeds no model — it makes the repository legible to the AI agents and people who work on it, and can delegate to an external model you configure.
Why Flux?
A project's "how to build and ship me" knowledge is usually scattered across
package.json scripts, a Makefile, CI YAML, shell scripts, and stale docs.
Flux replaces that with one source of truth — a .flux file:
project "my-app"
language rust
environment { image "rust:latest" } # optional container build env
pipeline {
step frontend { command "npm --prefix web run build" }
step backend { command "cargo build --release" }
step tests {
needs [ frontend, backend ] # runs after both, which run in parallel
command "cargo test"
}
step deploy {
needs tests
command "./deploy.sh"
only_if branch == "main" # conditional
retries 2 # retry on failure
secrets [ DATABASE_URL ] # inject an encrypted secret
}
}
secret DATABASE_URL
deployment { target kubernetes replicas 3 }
Install
# Homebrew (macOS/Linux)
# Scoop (Windows)
# Cargo
# From source
The crate is flux-platform because the short name was already taken on
crates.io by an unrelated crate. The installed binary is still flux.
Prebuilt binaries are attached to every GitHub Release for five targets: Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64).
Commands
| Command | What it does |
|---|---|
flux init |
Detect the project and write a starter .flux |
flux build |
Run the pipeline as a dependency graph (parallel) |
flux test |
Run the test step(s) and their dependencies |
flux run <step> |
Run one step and its dependencies |
flux ci |
Clean, cache-free pipeline; records an artifact |
flux clean |
Clear the build cache (artifacts/secrets/runners kept) |
flux info |
Show detection, container engine, and runners |
flux deploy [--target T] |
Deploy per the deployment { … } block |
flux project / flux ask "…" |
Repository intelligence / natural-language query |
flux agent run <name> |
Run an AI agent (planner, reviewer, maintenance, …) |
flux github init / docs / dashboard |
GitHub CI scaffolding / regen docs / HTML dashboard |
flux artifact push <path> / list |
Push to / list the artifact registry |
flux release create <version> |
Bundle a version's artifacts into a release |
flux secret set <name> <value> / list |
Manage encrypted secrets |
flux plugin list / install <name> |
Inspect / install plugins |
flux runners start / list |
Register / list local build runners and pools |
flux analytics |
Build-performance stats from run history |
flux lock / flux reproduce |
Capture / verify a reproducible environment |
flux secret set <n> <v> --env prod |
Per-environment encrypted secrets |
flux init <template> |
Scaffold from a template (react, node-service, rust-api, library, cli) |
flux workspace status / build |
Multi-project workspace, builds only affected members |
flux policy |
Check the pipeline against declared policies |
flux fmt / lint / doctor |
Language-aware format, lint, and environment diagnosis |
flux changelog / version <part> |
Generate a changelog / bump the semver |
flux deps [--json] / status / graph |
Inspect dependencies (JSON too), project state, and the pipeline |
flux plugin create <name> |
Scaffold a plugin with the PDK |
The graph engine (2.1)
flux build compiles the pipeline into a dependency graph and executes it:
- Parallel — independent steps run concurrently (up to the core count).
needs— declares dependencies; execution order comes from the graph.- Failure propagation — dependents of a failed step are skipped.
retries N— retry a failing command up to N times.only_if <var> == "value"— conditional steps (e.g.branch == "main").- Cycle & unknown-dependency detection — reported before anything runs.
Backward-compatible: a pipeline with no needs runs as a linear chain,
exactly like Phase 1.
$ flux build
Pipeline:
dependency graph · up to 16 steps in parallel
plan: frontend → backend → tests → deploy
✓ frontend (0.3s)
✓ backend (1.9s)
✓ tests (2.1s)
• deploy skipped (only_if branch == "main" is false)
Platform features
- Artifact registry (2.4) —
flux artifact push/list, versioned and multi-platform, stored under.flux-cache/artifacts/. - Releases (2.4) —
flux release create v1.0bundles a version's artifacts into a downloadable listing. - Secrets (2.6) —
flux secret setencrypts values at rest with ChaCha20 and injects them into a step'senv. See the honest threat model in src/secrets/mod.rs. - Containers (2.5) —
environment { image "…" }runs each command inside an ephemeral Docker/Podman container; degrades to native when no engine exists. - Deployment (2.7) —
flux deploytargets local, docker, or kubernetes (generates a real Deployment manifest); acts when the tool is present, degrades honestly when it isn't. - Runners (2.2) —
flux runners startregisters this machine as a worker; the graph engine schedules steps across its cores. - Plugins (2.10) —
flux plugin install <name>records a plugin; the built-in language plugins drive default pipelines. - Flux Assist (2.12 / 3.11) — on failure, Flux matches the output against known signatures and suggests fixes. No AI, no network — just heuristics.
Infrastructure features (Phase 3)
- Intelligent cache (3.2) — declare
inputs [ "frontend/**" ]on a step and it's only invalidated when a matching file changes. Combined with the graph, editing one package rebuilds only that package and its downstream steps — like Turborepo/Bazel/Nix, simplified. - Modules (3.3) — put reusable pipelines in
modules/*.fluxand pull them in withuse <name>. Stop copy-pasting.fluxbetween projects. - Observability (3.5) — every run is recorded;
flux analyticsreports average build time, cache-hit rate, the most expensive step, and failures. - Reproducibility (3.6) —
flux lockwrites a.flux.lockcapturing toolchain versions + a source hash;flux reproducereports any environment drift so "works on my machine" becomes checkable. - Runner pools (3.1) — declare
runners { pool "gpu" { requirements { … } } }and view them withflux runners list. A declaration of the machines a project expects, not a scheduler: cross-machine dispatch is deferred (see Scope & honesty), so no step field pretends to select one. - Secret environments (3.7) — the same secret name holds different values in
--env developmentvs.--env production, each with its own key.
Platform features (Phase 4)
- Workspaces (4.1/4.2) — a
flux.workspacefile declares member projects and their dependencies.flux workspace buildbuilds them in dependency order and, whensharedchanges, rebuilds onlysharedand what depends on it — the intelligent cache applied across repositories. - First-party tools (4.5) —
flux fmt,flux lint(language-aware),flux doctor(environment/toolchain/config health),flux changelog(from git commits),flux version <major|minor|patch>(bumps the manifest),flux deps. - Templates (4.6) —
flux init rust-api|react|library|cli|node-servicewrites a curated pipeline with best-practice defaults. - Policy engine (4.15) —
policy production { require tests, require security, require approvals 2 }.flux cirefuses to run a pipeline that violates policy (approvals come fromFLUX_APPROVALS). - Plugin PDK (4.19) —
flux plugin create <name>scaffolds a plugin with a manifest, source, tests, and README.
AI-native platform (Phase 5)
Flux embeds no language model. Instead it makes a repository legible — it
writes a structured, deterministic description that AI agents and humans consume,
and can delegate to an external model you configure in flux.yaml
(ai.command). See docs/repository-intelligence.md
and docs/agents.md.
- Repository intelligence (
flux project) — languages, architecture (with dependency edges), dependency inventory, git activity, and a deterministic health score. Writes a knowledge graph to.flux-cache/knowledge/*.json. - AI agents (
flux agent run <name>) —planner,reviewer,tester,documentation,maintenance,release. Honest heuristic analyzers that write structured reports to.flux-cache/reports/; withai.commandset, each report is expanded by your external model. - Ask (
flux ask "…") — a natural-language front door.--contextprints the raw bundle for any tool to consume; otherwise it answers offline or via your model. - GitHub (
flux github init|review|plan) — CI scaffolding, working-tree/PR review, and issue → plan. Local-first, with optionalghCLI enrichment; never posts on your behalf. - Docs engine (
flux docs [--check]) — regenerates the command reference, agent catalogue, and amanifest.jsonfeed from live sources;--checkguards drift in CI. - Dashboard (
flux dashboard) — a self-contained static HTML report (no network, no server).
flux init scaffolds this layer: it writes flux.yaml and .flux.d/
(authored assets) alongside the .flux pipeline.
Self-maintenance & release
Flux helps maintain itself and any project it runs on:
flux verify [--full]— run the whole check suite (format, lint, tests, release build, validate examples) in one command.flux doctor --all— repository health: CI, release workflow, examples, docs, and community files, with an overall percentage.flux validate·flux format·flux explain— check, canonically format, and describe a.fluxin plain language.flux plugin search <q>·flux plugin verify— search the catalog, verify installed plugins.
Automated releases: pushing a vX.Y.Z tag triggers
release.yml, which builds Linux/macOS/Windows
binaries and attaches them to the GitHub Release. A nightly workflow runs a
security audit, build/test, and a broken-link check. Packaging files (Docker,
Homebrew, Scoop) live in packaging/.
Detection
| Language | Detected by | Default pipeline |
|---|---|---|
| Rust | Cargo.toml |
cargo fetch → cargo build --release → cargo test |
| Node | package.json |
npm install → npm run build → npm test |
| Python | requirements.txt / pyproject.toml |
pip install -r … → compile → pytest |
Examples
Runnable sample projects live in examples/ — rust-app,
node-app, python-app. From any of them:
Roadmap
Available now (v0.3)
- ✅
.fluxconfiguration language +flux validate - ✅ Dependency-graph pipeline engine (parallel,
needs, retries,only_if) - ✅ Intelligent build cache (input scoping + graph-aware invalidation)
- ✅ Modules, artifacts & releases, encrypted secrets, reproducibility lock
- ✅ Deployment dispatch, workspaces, policy engine
- ✅ First-party tools (
fmt/lint/doctor/changelog/version/deps) - ✅ Plugins + PDK, local runners
- ✅ AI-native layer: repository intelligence, knowledge graph, AI agents,
flux ask, local GitHub integration, docs engine, HTML dashboard
Coming soon
- ○ Cross-machine distributed runners
- ○ Served web dashboard (Flux ships a local static
flux dashboardtoday) - ○ Hosted GitHub App (local
flux github+ghtoday) - ○ REST API & SDKs
- ○ Hosted plugin marketplace
- ○ Team workflows
- ○ winget package (Homebrew and Scoop are live today)
Documentation
- The
.fluxlanguage - Architecture
- Repository intelligence · AI agents · GitHub integration
- Command reference (generated by
flux docs) - Contributing · Security policy · Changelog
Scope & honesty
Flux implements the graph engine and the self-contained subsystems across all three phases to real, tested quality. Some spec items are deliberately deferred because they can't be meaningfully built or verified in a single-machine sandbox, and stubbing them would be dishonest:
- Cross-machine distributed execution (2.3 / 3.1 networking) — real gRPC controller/agents, heartbeats, a job queue, auth, and encrypted transport. Runner pools and the parallel graph engine are the foundation; pool-based scheduling across machines is the deferred part.
- Web dashboard (2.8) and Flux Cloud (2.9) — a React/TypeScript front
end plus a hosted service. The CLI and
.flux-cache/state are the data source a future dashboard would read. - Enterprise teams/RBAC (3.10) and hosted plugin marketplace fetch (3.4)
— these need real identity and a registry service.
flux plugin installrecords intent locally; the marketplace catalog is built-in, not fetched. - REST API & SDKs (4.16), visual pipeline editor (4.13), and live
notification delivery (4.12) — a hosted HTTP service, a web front end, and
outbound network calls. The CLI,
.fluxconfig, and.flux-cache/state are the data model these would sit on top of. The policy engine, workspaces, and first-party tools are all real and local.
A note on paths
.flux is the config file. Flux keeps its state (cache, artifacts,
secrets, runners, deploy manifests) under .flux-cache/, which is
git-ignored.
License
Apache-2.0. See LICENSE.