Releases: xmit-dev/flower
Release list
Flower v0.2.0
Flower 0.2.0 adds continuous backups with point-in-time restores, and foreign keys that the server enforces.
Get started: Run Flower in five minutes downloads the server below and installs the SDK:
npm install @flower-js/sdk@0.2.0New
- Backups and point-in-time restores. Set
FLOWER_BACKUP_URLtos3://BUCKET/PREFIX(AWS S3 or any S3-compatible store;FLOWER_BACKUP_S3_*sets the endpoint and credentials) orfile:///PATH. The leader then ships every entry it applies, stamped with the time it was applied, and now and then writes a compressed base of the whole state (zstd). Retention keeps 30 days by default.flower backup restore --data DIR --id N --advertise HOST:PORT --at TIME(or--index N) rebuilds the state as of any moment in that window, offline, into the data directory of a new single-node cluster.flower backup listshows what each generation can restore, andGET /admin/backupshows what a node's backup is doing. Guide: Backups & restores. - Foreign keys.
collection.references(target, on, { onDelete })declares that each row holds the key of one oftarget's rows: in a field, in several fields that make up a tuple key, or in its own key. At the end of every mutation, the server checks that each row written refers only to rows that exist, and that no deleted row is still referred to. Otherwise the mutation fails withFOREIGN_KEY_VIOLATION.onDeleteisrestrict(the default),cascadeorsetNull. Reference: References.
Upgrading from 0.1.0
Upgrade every node of a cluster together: stop them all, replace the binary, then start them again. Foreign keys add a replicated command, so the compatibility contract's state machine version goes from 17 to 18, and 0.1.0 and 0.2.0 nodes refuse to talk to each other. Data directories written by 0.1.0 open as they are. They can't be downgraded afterwards.
Also
- The handbook no longer calls Flower unreleased, and its backups page uses the release's
./flower. - The SDK is published to npm by the release workflow itself, through npm trusted publishing, with a provenance statement.
Downloads
| Archive | Runs on |
|---|---|
flower-0.2.0-x86_64-unknown-linux-gnu.tar.gz |
Linux x86-64, glibc 2.35+ |
flower-0.2.0-aarch64-unknown-linux-gnu.tar.gz |
Linux Arm64, glibc 2.35+ |
flower-0.2.0-x86_64-apple-darwin.tar.gz |
macOS 15+, Intel |
flower-0.2.0-aarch64-apple-darwin.tar.gz |
macOS 15+, Apple silicon |
Each archive holds the standalone flower server, its MIT license and third-party notices. The .sha256 files verify the archives. macOS builds are not notarized. flower-js-sdk-0.2.0.tgz is the tested SDK package, as published to npm.
Full Changelog: v0.1.0...v0.2.0
Flower v0.1.0
Flower's first release: a database you program in TypeScript. You write the methods and the values derived from your data; Flower keeps those values up to date in the same commit and replicates every change with Raft.
Get started: Run Flower in five minutes downloads the server below, installs the SDK, deploys an app and calls it. The handbook covers the rest.
npm install @flower-js/sdkWhat's in 0.1.0
- Your code is the API. Collections of JSON records with schemas, derived values Flower recomputes when what they read changes (materialized per row when you ask), aggregates maintained from row deltas, and queries, mutations and cross-group transactions. Only the methods you list in
httpare callable. - Reactive reads. Live queries over SSE from any replica, fresh by default or replica-local when you opt in; a typed
FlowerClientchecks every alias and argument against your app's types. - Replicated. Three nodes tolerate one failure; a write is acknowledged once a majority has it on disk. Named partitions spread tenants across several Raft groups, move between them, and retire when a tenant leaves.
- Components. Durable timers (
scheduler), work queues with leases and fencing, expiring records, and external values kept current by ordinary worker processes (runQueueWorker,reconcile). - Access and crypto. Authenticate callers once and give each method an access rule; NaCl, JWT and WebAuthn passkeys inside callbacks, with managed keys that never enter application memory.
- Operations. Staged deployments, TLS and HTTP/2, OpenTelemetry traces and metrics, capacity budgets, a NixOS module (
services.flower.instances), and a Rust guest SDK (flower-sdk) for apps compiled to WebAssembly.
Flower is a working prototype and its API may still change before 1.0: current boundaries lists what it does today and the limits to plan around.
Downloads
| Archive | Runs on |
|---|---|
flower-0.1.0-x86_64-unknown-linux-gnu.tar.gz |
Linux x86-64, glibc 2.35+ |
flower-0.1.0-aarch64-unknown-linux-gnu.tar.gz |
Linux Arm64, glibc 2.35+ |
flower-0.1.0-x86_64-apple-darwin.tar.gz |
macOS 15+, Intel |
flower-0.1.0-aarch64-apple-darwin.tar.gz |
macOS 15+, Apple silicon |
Each archive holds the standalone flower server (QuickJS/Wasm embedded; no Node needed), its MIT license and third-party notices; the .sha256 files verify them. macOS builds are not notarized. flower-js-sdk-0.1.0.tgz is the tested SDK package, as published to npm.
Full Changelog: https://github.com/xmit-dev/flower/commits/v0.1.0