Flux is a single Rust binary with five in-process modules. Every layer β from the gateway to the database β emits structured spans tied to one request ID. The CLI reassembles them on demand.
Flux runs your code β TypeScript on Deno V8, or Rust/Go/Java/Python/PHP/AssemblyScript via Wasmtime.
While it runs, every requestβs spans, mutations, and inputs are recorded automatically.
Later, inspect, replay against new code, or diff against any other request.
All five modules run in a single binary on port :4000. Every layer is instrumented at the runtime level β no application-level tracing hooks needed. Span data is stored in Postgres alongside mutation logs.
* Each hop produces a span stored in the trace store.
When a request arrives at the Gateway, Flux assigns it a globally unique request ID (UUID v4). This ID is propagated internally to every module. The gateway records auth result, rate-limit decision, matched route, and timing as the first span.
The Runtime receives the request with the propagated request ID. It executes your function β TypeScript in a Deno V8 isolate, or compiled WebAssembly via Wasmtime. Both runtimes share the same host API. Every ctx.db, ctx.queue, and ctx.fetch call is intercepted and recorded as a child span.
Every database write goes through the Data Engine, which applies schema validation, column policies, and row-level security before executing the SQL. After execution, it writes a mutation record: which table, which row, old value, new value, and the request ID that caused it.
All spans for a request ID are stored in an ordered graph. flux trace <id> retrieves them and renders the full tree β gateway, function, database queries, tool calls β in execution order with latencies.
Because every span includes its full input and output, any request can be replayed deterministically. flux incident replay re-executes against the current code with side-effects disabled. flux bug bisect replays across your git history to find regressions.
Every module is written in Rust for predictable latency and memory safety. TypeScript functions run on Deno V8. Functions in Python, Go, Java, PHP, Rust, C#, or Ruby compile to WebAssembly and run on Wasmtime with Cranelift AOT compilation. Your data stays in standard Postgres.
Auth, rate limit (per-tenant token bucket), CORS, routing. Routes requests to the Runtime via in-process dispatch.
TypeScript runs on V8 isolates. Python, Go, Java, PHP, Rust, C#, Ruby compile to WebAssembly and run on Wasmtime with Cranelift AOT. All share the same host API and tracing.
DB proxy: query compilation (JSON β SQL), column policies, row-level security. Writes mutation records for every change.
Durable async job queue backed by Postgres. Workers execute functions through the Runtime. Fully traced.
Management API: deploy functions, manage schemas, API keys, tenants. Used by the CLI and web dashboard.
The quickstart takes 5 minutes. You deploy a function, trigger a request, and trace it end to end from the CLI.