Skip to content
v0.5.1GitHub
Linux-first · REST-native · multi-model

Your friendly neighborhood database.

One small, fast process on io_uring covers the three shapes of data a backend needs: key-value, JSON documents and slim relational tables. Everything speaks REST, down to the single record. No driver stack, no proprietary protocol.

 host — bash
$ sudo apt install ./luradb_*.deb
$ sudo systemctl start luradb
$ curl http://127.0.0.1:3000/health
{"shards":[…],"status":"ok","version":"0.5.1", …}

$ curl -i -X PUT \
    http://127.0.0.1:3000/store-api/kv/default/keys/hello \
    -H "Authorization: Bearer $KEY" -d 'world'
HTTP/1.1 200 OK
content-length: 0

$KEY is the admin API key in /etc/luradb/luradb.toml.

domain: ordersRELtables · views · left joins · KVREF/JSONREFJSONdocuments · indexes · search · bulk loadKVkeys · TTL · watch · ETagREST API/store-api/…MCP/mcpone API key,one permission set

Three engines, one domain, one API

A domain is the unit you create, protect and back up. Inside it, each engine keeps the shape of data it is good at, and a relational row can point at a key or a document in the same domain.

  • REL
    Slim relational

    Tables, indexes, views, left joins. /sql and row endpoints, CSV import with inferred types.

  • JSON
    JSON documents

    Versioned documents with ETag, secondary indexes, search queries, NDJSON bulk load.

  • KV
    Key-value

    TTL, prefix listings, bulk delete, a resumable watch stream over SSE, conditional writes.

Where to start

Getting started

From the package to the first stored key, document and table.

Operating

Run it under systemd or Docker, size it to the host, keep it safe.

Using

Three data shapes, one REST API, and an MCP server for assistants.

Where LuraDB lives

Nine places where one small process does the job. The tags say which engines carry it.

RELJSONKV
Your own service

A backend that ships with your service: one package, one unit, a REST API it talks to directly.

KV
Sessions that clean up after themselves

Sessions and tokens with a TTL expire on their own. No Redis on the side.

RELJSONKV
Memory for your agents

Give AI agents a real store over MCP: keys for state, documents for context, tables for facts.

KV
Flags that flip live

Services watch a key and switch the moment it changes. No redeploy, no polling.

RELJSON
Catalogs with loose ends

Fixed fields in a table, the messy attributes in JSON, linked in one row.

RELJSONKV
One customer, one domain

Each tenant gets its own domain, its own API keys, its own permissions.

JSON
The webhook inbox

Catch every incoming payload as it is. Index it, search it later.

JSONKV
Throwaway database for pipelines

A real, persistent store for CI runs, installers and playbooks. Seeded, used, gone.

RELJSONKV
On the host, out of the way

Sidecar over a Unix socket, installed in one step, under systemd, logging to journald.

RELslim relationalJSONJSON documentsKVkey-value
Built for the small jobs, done well

The state store behind an installer, the backend of a small web app, a sidecar over a Unix socket, a home lab service.

Reads scale across cores

Domains are spread over data shards; point reads run on the connection thread, longer reads on a reader pool.

What LuraDB is not

No analytical engine, no distributed cluster, no data-warehouse ambition. Features earn their place by making the small case better.