FLUXFLUX
  • Introduction
  • Quickstart
  • Two Specs, One Substrate
  • The Six Families
  • The FLUID Seam
  • Deterministic & Governed
  • Runtime & Evidence
  • Anatomy
  • The Nineteen Kinds
  • Versions
  • Changelog
  • JSON Schema 0.5.0 ↗
  • UI Hints 0.5.0 ↗
  • Enforcement Contract 0.5.0 ↗
  • Bundle Manifest 0.5.0 ↗
  • The vNext Plan
  • The Nine RFCs
  • Conformance Profiles
Examples
What's New
FLUID ↗
GitHub
GitHub
  • Introduction
  • Quickstart
  • Two Specs, One Substrate
  • The Six Families
  • The FLUID Seam
  • Deterministic & Governed
  • Runtime & Evidence
  • Anatomy
  • The Nineteen Kinds
  • Versions
  • Changelog
  • JSON Schema 0.5.0 ↗
  • UI Hints 0.5.0 ↗
  • Enforcement Contract 0.5.0 ↗
  • Bundle Manifest 0.5.0 ↗
  • The vNext Plan
  • The Nine RFCs
  • Conformance Profiles
Examples
What's New
FLUID ↗
GitHub
GitHub
  • Guide

    • Introduction
    • Quickstart

Quickstart

Author a minimal universe, validate it offline, and cross the FLUID seam — in about five minutes. No cloud, no running engine.

1. Clone and install

git clone https://github.com/Agenticstiger/flux.git
cd flux
pip install jsonschema pyyaml rfc8785

2. Validate the shipped example

python3 scripts/validate.py examples/telco-payment-recovery
# [ok] examples/telco-payment-recovery

That one line just did two layers of work: every document against the JSON Schema, then the cross-document checks — reference resolution, sums, state membership, agentPolicy bounds, and FLUID seam conformance.

3. Author your first World

Create my-universe/world.flux.yml:

fluxVersion: "0.4.0"
kind: World
id: hello-world
name: Hello World
metadata:
  owner:
    team: my-team
spec:
  seed: 7
  population:
    size: 1000
    lifecycleMix: { active: 0.8, churned: 0.2 }
python3 scripts/validate.py my-universe
# [ok] my-universe

Try breaking it — typo lifecycleMix to lifecycle_mix, or make the mix sum to 0.9 — and the validator tells you exactly what and where. Unknown fields are rejected, not silently accepted: the validate gate is a hard gate.

4. Cross the seam

A Simulation emits streams under a FLUID contract by reference. Add a FLUID DataProduct (my-universe/hello.fluid.yml):

fluidVersion: "0.7.5"
kind: DataProduct
id: demo.gold.hello_stream
name: Hello Stream
metadata:
  owner:
    team: my-team
exposes:
  - exposeId: hello_stream
    kind: stream
    contract:
      schema:
        - name: customer_id
          type: STRING
          required: true
    binding:
      platform: kafka
      format: kafka_topic
      location:
        topic: demo.hello.v1

…and a Simulation (my-universe/sim.flux.yml):

fluxVersion: "0.4.0"
kind: Simulation
id: hello-sim
name: Hello Simulation
metadata:
  owner:
    team: my-team
spec:
  worldRef: hello-world
  emits:
    - productRef: demo.gold.hello_stream
      exposeId: hello_stream
      fluidVersion: "0.7.5"
python3 scripts/validate.py my-universe
# [ok] my-universe

The validator resolved productRef, validated hello.fluid.yml against the vendored FLUID 0.7.5 schema, and asserted the expose exists. If the FLUID document were invalid — or the pinned version wrong, or the exposeId missing — the bundle fails. What the twin proves is exactly what ships.

5. Use the schema in your editor

Add this line to the top of any .flux.yml for instant validation and completion in VS Code (with the YAML extension) and friends:

# yaml-language-server: $schema=https://agenticstiger.github.io/flux/schema/flux-schema-0.5.0.json

Next

  • The Six Families — what each kind is for.
  • The FLUID Seam — how discovery hands off to delivery.
  • Examples — the full 19-kind telco universe, annotated.
Edit this page on GitHub
Last Updated: 9/15/26, 6:51 PM
Prev
Introduction