FLOWER

A reactive database.

Store the facts. Keep their consequences in sync.

Flower is a replicated database of source records and reactive derived values. Isolated Rust application logic defines how state changes; the database maintains the dependencies, indexes, and live query results that follow.

One coherent state

A mutation publishes source changes and their required derived values and indexes atomically. A query reads a single snapshot. A watch keeps a query’s returned value up to date as its dependencies change.

Application logic in Rust

Clients call named application methods. Rust callbacks run in isolated WebAssembly guests, while the native engine owns storage, dependency tracking, authorization, and recovery. Shared interfaces give guests and native clients typed contracts.

Work beyond the transaction

Durable timers and queues connect application state to native Rust workers. Workers handle external systems; explicit identities and fencing govern retries and the acceptance of results.

Replicated consequences

Raft replicates accepted changes and results. Followers apply those consequences without rerunning application callbacks. The engine validates tracked reads and writes before accepting a mutation.