Stream. Process. Store. One Engine.
Liven is a database built for data that moves. It ingests streaming data, transforms it on the fly, and stores it durably — all with a single pipeline query language. One binary.
# Install via crates.io
# Launch the server
# One-liner install (Linux & macOS)
|
Why Liven?
Databases today make you choose: batch or stream? Historical or real-time? Key-value or vector? Liven was built to erase those lines.
One query language, two modes:
- Historical queries against stored data
- Real-time subscriptions on the same pipeline — just add
.listen()
One engine, three deployment models:
- Embedded library (~1.5 MB) — runs inside your Rust process
- Network server — TCP + WebSocket, thousands of clients
- Interactive TUI or web dashboard — for ad-hoc queries and monitoring
Built-in capabilities that usually require separate systems:
- Vector similarity search (int8 quantized, cosine similarity)
- Stream joins (time-bounded correlate, multi-hop chain)
- Event pattern detection (sequence FSM)
- Time-windowed aggregations
- Full-text substring matching
Quick Start
# Launch the server
# → Open http://localhost:43120
# → Admin auth key printed on first start — save it
# Insert and query
# Live subscription
Embedded in Rust
[]
= { = "0.0", = false }
For a minimal embedded build with no server, TUI, or TLS:
use Liven;
let db = open?;
db.query?;
let results = db.query?;
How It Works (at a glance)
Client → Pipeline Query Engine → Append-Only Storage
↑
In-Memory Index
(SkipMap + broadcast channel)
- Writes are appended to segment files. A background flusher batches them for throughput without sacrificing durability.
- Reads go through a lock-free in-memory index. Point lookups resolve in microseconds.
- Subscriptions broadcast every write to all listeners. The server evaluates pipeline filters before delivery.
- Compaction reclaims space from deleted records automatically.
- Recovery replays segments on startup. CRC32 checksums catch corruption.
Installation
From crates.io
From source
Before building with the
serverfeature, build the Web UI first:&& && &&Or skip the dashboard entirely:
cargo build --no-default-features
Docker
Package managers
| Platform | Format | Command |
|---|---|---|
| Debian/Ubuntu | .deb |
cargo deb --no-build -p liven |
| Fedora/RHEL | .rpm |
cargo generate-rpm --no-build -p liven |
| macOS | .dmg / .tar.gz |
See RELEASE.md |
| Windows | .msi / .zip |
See RELEASE.md |
Pre-built packages for each platform are available on the GitHub Releases page.
Logs
Liven logs to stdout/stderr. View logs based on your platform:
| Platform | Command |
|---|---|
| Linux (systemd) | sudo journalctl -u liven -f |
| Linux (manual) | liven start > liven.log 2>&1 |
| macOS (launchd) | tail -f /usr/local/var/log/liven/stdout.log |
| macOS (manual) | liven start > liven.log 2>&1 |
| Windows | liven.exe start > liven.log 2>&1 |
Advanced: Set RUST_LOG=debug or RUST_LOG=trace for verbose output.
Security
Auth-key mode (default)
Symmetric keys with BLAKE3 hashing. Four role levels:
| Role | Read | Insert | Delete | Admin |
|---|---|---|---|---|
read-only |
✅ | ❌ | ❌ | ❌ |
write |
✅ | ✅ | ❌ | ❌ |
write-delete |
✅ | ✅ | ✅ | ❌ |
admin |
✅ | ✅ | ✅ | ✅ |
Keys can be generated, revoked, and role-changed at runtime via the Web UI or REST API — no server restart required.
mTLS / ZTNA
Mutual TLS with X.509 certificates. Client CN maps to capabilities. Single-port mode multiplexes cleartext and TLS on the same listener.
Master key
Stored in ./liven.key (mode 0600). Override with LIVEN_SECURITY_MASTER_KEY environment variable.
Feature flags
Liven uses Cargo feature flags to control the binary size. The default feature includes everything:
| Feature | Dependencies | Size impact |
|---|---|---|
server |
axum, tower-http, rust-embed | ~+3 MB (web UI + REST API) |
tui |
ratatui, crossterm | ~+1 MB (interactive terminal) |
tls |
tokio-rustls, x509-parser | ~+500 KB (mTLS support) |
# Minimal embedded build (no server, no TUI, no TLS)
# Embedded with TLS support
Licensing
SSPL 1.0 OR Commercial
- SSPL — Free for self-hosting, development, and personal use.
- Commercial — Required for managed services or proprietary embedding.
Contact team@livendb.com for commercial licensing.