OPEN SOURCE · MIT // PROTOCOL v0.1 · LIVE // CONSTELLATIONS ECOSYSTEM

The truth layer /
your agents keep asking for.

Flows is a deterministic substrate for AI-native software teams. Code extracts facts. Narratives cite facts by hash. Humans seal what they've vouched for. Drift becomes visible the moment it happens — not six months later in a production incident.

~/acme-platform — zsh flows@0.1.3
# the verb triplet — the whole protocol, in three calls flows extract ./src --domain checkout parsed 47 files · wrote facts/checkout.jsonl · pinned a3f9e2c flows status 12 domains sealed · 4,218 facts · 10 fresh 2 drifted · route::POST:/api/checkout, model::Booking flows apply --agent=claude --task="refactor auth" context assembled from 3 domains · 8,412 tokens · 0 hallucinated refs
§ 01 · THE BET

Verified truth is the new scarce resource.

"Agents are retrieval-bound, not reasoning-bound. They fail at the substrate, not the reasoning layer. The scarce resource at the top of an agentic stack isn't a better model or a bigger context window — it's machinery that separates what is from what we say about it, and makes the gap between them loud.

/ the shape

Compute is cheap. Tokens are cheap. Plausibility is a commodity.

The substrate that tells you — or your agent, or your auditor — this is actually true, pinned to a specific commit, vouched for by a specific person on a specific date is the load-bearing layer every other part of the stack depends on.

Systems that manufacture verified truth at the rate modern teams change become infrastructure. Systems that don't become fiction.

/ why now · three conditions, all new in the last 24 months
01 agent throughput // 40× faster than review

Agent authorship has outrun human review.

A subagent reads 10k lines and proposes a doc change in 30 seconds. A human needs 20 minutes to review and commit. If your system requires humans to keep docs in sync with code, you've installed a 40× bottleneck between what agents produce and what your team can trust. The fix is not faster humans — it's flipping which side moves at agent speed.

02 chain depth // compounds hallucination

Agentic chains compound mistakes.

Agent A writes a spec. Agent B reads it and writes code. Agent C reads the code and updates the spec. Agent D reads the updated spec and writes more code. Somewhere in that chain, A hallucinated a constraint — and now the hallucination has been cited, built on, and compounded into the codebase. Every agent-authored artifact needs to be falsifiable against a deterministic source.

03 remote teams // no tribal cushion

Remote teams can't paper over stale docs.

Co-located teams with tenured engineers know what the docs meant to say. Remote teams with contractors, agents, and rapid onboarding don't have that social cushion. If the docs are stale, the docs are the knowledge — and stale knowledge compounds into wrong decisions, shipped, in production, in weeks not years.

§ 02 · INNOVATIONS

Three ideas that compound.

01 / TRUTH × EXECUTION

The factoring most teams miss.

Agents are retrieval-bound, not reasoning-bound. Conflating the substrate (what is true) with the orchestration (who does the work) is why agentic systems stall after the demo. Flows separates them with an explicit contract. Each half compounds independently — and the substrate outlives any specific executor.

// substrate queries · executor ships · contract holds
02 / VERB TRIPLET

Three verbs. One protocol.

extractstatusapply. The invariant across languages, domains, and editors. Make and Nix applied to knowledge artifacts. If it doesn't fit the triplet, it's not a Flow.

// spec is 42 pages · implementations are replaceable
03 / PROVENANCE AS UX

Every claim, clickable.

SHA-pinned source references — not footnotes, not audit logs. A first-class interface element. Clients tap a claim, see the commit, the file, the line, the date a human last vouched. Compliance-compounding. EU AI Act-ready before the deadline.

// locked at commit SHA · hashed · verifiable
§ 03 · ARCHITECTURE

One stack. Clean seams.

Human Surface
Dashboard · domain maps · audit badges
The view clients, PMs, and auditors actually open.
— trust ——————————→
Execution
Orchestrator · tasks · workspaces · cost
Routes work to agents, tracks spend, closes loops.
— shipping ———————→
Substrate
Flows · extractors · facts/ · provenance · retrieval
The truth layer. Deterministic. Human-readable. Machine-queryable.
— truth ———————————→
Source
Repositories — code, the ultimate ground
Flows pins to SHAs here. Nothing invented, nothing lost.
— git ——————————————→

The drift-to-seal loop — how the substrate stays honest.

/ single trust boundary · everything else automatable
01 / SOURCE code change 02 / extract facts/*.jsonl 03 / status drift detected 04 / agent proposal (sandbox) ✻ TRUST BOUNDARY · not automatable human reviews · edits · merges PR optional · projection baserow row · discord ping 05 / apply · seal provenance.lock.json 06 / state fresh · dashboard green // next code change drift state human action sealed state automation
§ 04 · OPEN SOURCE

The protocol is yours.

The verb triplet, the lockfile format, the extractor interface, the retrieval contract — all MIT. We're not asking you to bet your stack on our hosted dashboard.

Flows is a protocol first. The system is the convention, not the tooling. The reference implementation is the most complete today; it won't be the only one tomorrow.

We sell orchestration, sandboxes, and the managed surface for teams that want to ship, not assemble. The substrate stays open. The commercial layer stays honest. Walk away with your flows/ directory any time.

01 Flows Protocol — verb triplet, lockfile, provenance spec MIT
02 flows-core — reference CLI, audit, extractors SDK MIT
03 Seed Bank — composable extractor primitives MIT
04 MCP bridge — agent retrieval contract MIT
flows-protocol / spec.toml v0.1
# the contract, in full
[protocol]
verbs = ["extract", "status", "apply"]
invariant = "deterministic-first"

[provenance]
pin = "git-sha"
hash = "sha256"
format = "lockfile.jsonl"

[retrieval]
order = ["bm25", "graph", "vector"]
# vector last. always last.

[review]
cadence = "lockfile-boundary"
human_in_loop = "batched"
§ 05 · FOR WHOM

Four roles. One substrate.

Developers
What does my agent actually know?
Pinned context, not hallucinated refs. Extractors you write in the language you already ship in. Every context bundle SHA-pinned. Swap models, keep the substrate.
Product Managers
Where does this claim come from?
Clickable provenance on every domain. Specs stay synced with code without a human translator. Drift shows up on a dashboard, not in a production incident.
Indie & Small Teams
How do I ship parallel projects?
Three projects with a two-person team becomes plausible. Each project's drift auto-surfaces to its owner. Event-driven attention, not meeting-driven coordination.
Clients & Auditors
Is what you told me true?
Every deliverable ships with its provenance bundle. Tap a claim, see the commit, the file, the line, the date a human vouched. No handoff theater.
§ 06 · PRODUCT

Start open. Scale managed.

○ OPEN CORE · START HERE

Flows.

flows-core · MIT · self-hosted

The substrate. CLI, extractors, provenance, lockfile, dashboard. Drop it in any repo. The truth layer your agents query.

  • Verb triplet CLI (extract / status / apply)
  • Deterministic retrieval — BM25 + graph + vector
  • Provenance lockfile, SHA-pinned, reviewable in any PR
  • MCP bridge — works with Claude, Cursor, Zed
  • Extractor SDK — build your own Seed Bank
$ npm i -g @flows/cli docs →
◐ MANAGED · FOR TEAMS SHIPPING

MetaSolves.

orchestration · commercial · hosted

The execution layer. Multi-tenant orchestration, sandbox pools, agent routing, cost attribution — all consuming Flows as substrate.

  • Task → workspace → agent orchestration
  • Sandbox pool (Hetzner / SSH VM providers)
  • Agent routing across Claude, GPT, local
  • Per-client dashboards with unified billing
  • Contribution loop — runs compound substrate
// early access · design partners join waitlist →
§ 07 · HONEST LIMITS

What Flows doesn't do.

Every system has a shape. Ours is narrow on purpose. The list below is not a roadmap; it's a contract with the reader about what you're buying.

LIMIT / 01

Doesn't catch semantic drift.

If a controller's internal logic changes while the route signature stays constant, the hash doesn't move. That's what integration tests and behavioral assertions are for. A future behavior::* fact type could narrow this gap; not there yet.

LIMIT / 02

Doesn't replace product taste.

An agent can propose phasing; a human still decides P1 vs P3. Flows surfaces drift; it doesn't tell you whether a feature is worth building. Judgment is load-bearing here, and on purpose.

LIMIT / 03

Doesn't fix bad source material.

If metadata.json is full of wishful thinking, the lint can't tell you — it only catches code-doc divergence, not internal-doc-vs-reality divergence. Domain ownership and validator review do that work.

LIMIT / 04

Doesn't enforce seal quality.

You can seal without reviewing. The system makes it harder — clear warnings, visible lockfile diff in PRs — but a determined rubber-stamper can defeat it. Social norms and PR culture do their part.

LIMIT / 05

Doesn't scale infinitely in current shape.

Eventually the number of fact types or deliverable tables exceeds what a two-dimensional taxonomy can hold. Probably a graph, probably nested kinds. A problem for 50+ projects, not 3.

LIMIT / 06

Doesn't replace domain expertise.

Flows tells you "this doc cites this fact and the fact's hash changed." It doesn't tell you what to write instead. Humans with domain knowledge still do the writing. That's a feature, not a bug.

Ship with substrate.
Not with hope.

Read the spec, run the CLI, watch your agents stop hallucinating. No signup, no telemetry, no waiting.