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 ghcr.io/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 open source under the Apache License, Version 2.0. It is free for any use, including commercial and proprietary embedding.
Can't find what you're looking for? Reach out to the team.