Skip to main content

FLO

FLO is a declarative plain-text language for process-improvement professionals modeling business processes.

It allows you to define processes in a minimal, versioned format and compile them into a canonical graph representation (FLO IR) for visualization and analysis.

The same model can serve visual review and downstream analysis tools without being trapped in a proprietary modeling application.

Start here: docs/Quickstart.md

Complete reference: docs/User_Manual.md

Supported platforms and trust assumptions: docs/SUPPORT.md


Vision: From Process Documentation To Organizational Observability

FLO's MVP is a way to represent a process clearly: define it in plain text, compile it into a canonical graph, validate it, and generate diagrams and analysis artifacts. Process models are explicit, versioned, diffable, and usable by both people and tools.

Over time, FLO is intended to become a layer of organizational observability. The goal is not to replace an ERP, CRM, HRIS, spreadsheet, or the people who operate an organization. Those remain the implementation. FLO makes the architecture legible around them.

That longer-term model could connect processes to organizational capabilities, interfaces, dependencies, ownership, and contracts—making it possible to query how work is structured, analyze dependencies and impact, and understand how a change may propagate through the organization. In that sense, the direction is from documenting individual processes to making the system discoverable and organizational change safer.

The principle is:

Don't build another ERP. Build the layer that makes the organization observable.

The current language and FLO IR are the foundation for that direction. The vision is deliberately broader than the current v0.x implementation; current capabilities and non-goals are described below.

FLO is available under the MIT License.


Development Workflow (uv)

FLO uses uv as the canonical developer tool for environment management, dependency sync, running commands, and builds.

From the repository root:

npm ci --ignore-scripts --no-audit --no-fund
uv sync --dev

Run FLO locally:

uv run flo render examples/reference/linear.flo --diagram sppm

Run quality gates:

uv run pre-commit run --all-files

Build distributions:

uv run python scripts/vendor_elkjs.py
uv build

Publish a release:

git tag v<version>
git push origin v<version>

Then publish the matching GitHub release. The release workflow reruns the quality gates, builds the wheel and source distribution, smoke-tests the installed wheel, and publishes to PyPI with trusted publishing (OIDC); routine releases do not use a local PyPI token.


Example

spec_version: "0.1"

process:
  id: onboarding_v1
  name: Client Onboarding
  version: 1
  owner:
    id: ops_mgr
    name: Ops Manager
  business_units:
    - id: sales
      name: Sales
    - id: ops
      name: Operations

steps:
  - id: start
    kind: start
    name: Start

  - id: collect_docs
    kind: task
    name: Collect Documents
    lane: sales

  - id: verify
    kind: task
    name: Verify Documents
    lane: ops

  - id: approved
    kind: decision
    name: Approved?
    outcomes:
      yes: finish
      no: collect_docs

  - id: finish
    kind: end
    name: Complete

What FLO Provides

  • Deterministic compilation to FLO IR\
  • Structural and semantic validation\
  • Graph projections: swimlane, spaghetti map, SPPM, and value stream map\
  • SVG and JSON exports\
  • Ingredients list and movement report exports\
  • Stable foundation for analytics

What FLO Does Not Provide

  • Workflow execution\
  • Task scheduling\
  • Orchestration\
  • Simulation engines (v0.x)

Architecture

  • src/flo/ --- compiler, validators, renderers, and CLI\
  • schema/ --- JSON schemas for FLO IR and types\
  • examples/ --- canonical reference examples\
  • tests/ --- unit, integration, and conformance tests\
  • docs/ --- user manual and design documents

Downstream projects depend on FLO IR.


Governance And Sources Of Truth

FLO assigns authority by domain rather than using one total document hierarchy:

  • product outcomes and release commitments: docs/requirements/
  • language, CLI, diagram, and public-interface meaning: docs/specs/
  • serialized structure: schema/
  • scope and privacy boundaries: docs/policy/
  • durable decision rationale: docs/design/adr/
  • user workflows: docs/Quickstart.md and docs/User_Manual.md

The complete governance model and change classes are defined in docs/GOVERNANCE.md.


Current Semantic Constraints (v0.1)

This is a summary only. Normative semantics live in docs/specs/core_language.md.

  • Exactly one start node.
  • At least one end node.
  • All edge endpoints must resolve to declared node IDs.
  • Every non-start node must have at least one predecessor.
  • Every non-end node must have at least one successor.
  • Every node must be reachable from start.
  • Every node must be able to reach at least one end node.
  • decision nodes must have at least two outgoing transitions.
  • wait_time is valid only on queue nodes.

Versioning

FLO follows semantic versioning at the spec level.

  • v0.x: rapid iteration\
  • v1.0: language stability

Philosophy

FLO treats processes as first-class artifacts:

  • Explicit\
  • Versioned\
  • Portable\
  • Validatable

It is a small language by design.


Schema Contract & Migration

As of v0.1 the compiler emits a schema-shaped canonical IR and the runtime enforces that contract. The compiler must set IR.schema_aligned to True and IR.to_dict() will produce the top-level mapping with process, nodes, and edges fields required by the authoritative JSON Schema in schema/flo_ir.json.

If you are upgrading from an earlier development version that relied on an internal IR translator, update any custom compiler integrations to emit the schema-shaped IR directly. The translator was intentionally removed; CI now validates example outputs using the same schema and will fail when the contract is violated.

Metadata

Release files for flo-lang 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flo-lang 0.4.1
File Size Uploaded Provenance
flo_lang-0.4.1.tar.gz 672.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for flo-lang 0.4.1
File Interpreter ABI Platform
flo_lang-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / flo_lang-0.4.1.tar.gz

Download URL flo_lang-0.4.1.tar.gz
Size 672.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c78a454125a1285e98c6243ae42839a30efcf1110843971a77f2d4fdd72fe6a5
BLAKE2b-256 checksum
How to use checksums
56279b7074088185816696040da7c4796957d1f1bb34ca1ff881b88eb3372470
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / flo_lang-0.4.1-py3-none-any.whl

Download URL flo_lang-0.4.1-py3-none-any.whl
Size 725.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f2987f6edd7900aa5ebf27cd6de1a6db498816e563d3da011161a0975da5ba2
BLAKE2b-256 checksum
How to use checksums
b6056a7f972001974773a06c3f05a0f8a66079b9f2c88f6aeef1419ac0dc0727
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Security for flo-lang 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for flo_lang-0.4.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page