Liven is a database that unifies streaming, processing, and storage in one engine. It handles real-time data ingestion, on-the-fly transformations, and durable storage — all with a single query language.
One command:
curl -fsSL https://livendb.com/install | shOr Docker:
docker run -p 43121:43121 -p 43120:43120 livendb/livenNo. Liven is a single binary with no runtime dependencies.
A stream is a collection of key-value records, similar to a table. Streams are created automatically when you first write to them.
| operator. For example:from("orders") | filter(amount > 100) | count()| Type | Example |
|---|---|
| Null | null |
| Boolean | true, false |
| Integer | 42, -17 |
| Float | 3.14 |
| String | "hello" |
| Array | [1, 2, 3] |
| Object | {"name": "Alice"} |
| Vector | [1, -2, 3, 0] |
Yes. Liven runs as a Rust library:
let db = Liven::open("./data")?;
db.query(r#"from("events").insert("k1", {value: 42})"#)?;Yes. Run `liven start` to start the server on port 43121 (database protocol) and 43120 (web UI).
| Aspect | Embedded | Server |
|---|---|---|
| Network | None | TCP + WebSocket |
| Latency | Microseconds | Milliseconds |
| Auth | None | Key-based or mTLS |
| Use case | Edge, IoT | Production backends |
Point lookups complete in microseconds. Writes are batched for high throughput — thousands of writes per second on modest hardware.
No. The index stores only keys and pointers, not full records. Index size is typically 1-2% of your data size. You can set a RAM limit (default 16 MB).
Yes. The index is lock-free, allowing thousands of simultaneous reads. Writes run on a dedicated thread and never block reads.
Liven's append-only design means existing data is never overwritten. On recovery, incomplete writes are discarded. Your data remains intact.
Yes. Every record includes a CRC32 checksum. Corruption is detected immediately on every read.
Liven detects disk full errors and returns a clear error. Your application can handle it gracefully.
Yes. Two modes:
Run the status() query:
status()Or use the web dashboard at http://localhost:43120.
Use explain():
explain("from(events) | filter(timestamp > 1704067200)")Liven is self-managing. Compaction runs automatically in the background.
liven crateYes:
liven start # Start the server
liven stop # Stop the server
liven query "..." # Run a query
liven tail "stream" # Watch a stream in real-time
liven vibe # Interactive TUI shellexplain("your query") to see the planlimit(N) to restrict resultsLiven uses ports 43121 (database) and 43120 (web UI). Stop the existing instance:
liven stopYes. Liven is dual-licensed under SSPL v1.0 and a commercial license. The SSPL version is free for self-hosting and development.
Can't find what you're looking for? Reach out to the team.