Experimental, by invite
The database that sleeps when your app does.
Every app gets its own SQLite database, served over HTTPS. Create it in a click and connect with the client you already use. When nobody's asking, it's just a file.
- @libsql/client
- Drizzle
- plain HTTP
From a click to your first query.
AOZUMI DB speaks the same HTTP protocol as libSQL, so @libsql/client, Drizzle and anything built on them connect without changes.
Create it
In your app's Settings, open Databases and choose Create SQLite database.
AOZUMI wires it up
Production gets
AOZUMI_DB_URLandAOZUMI_DB_TOKEN. The token opens this one database and nothing else.Deploy
Redeploy, and your app is talking to its database.
import { createClient } from "@libsql/client";
const db = createClient({
url: process.env.AOZUMI_DB_URL!,
authToken: process.env.AOZUMI_DB_TOKEN,
});
await db.execute({
sql: "insert into notes (body) values (?)",
args: ["hello"],
});
const { rows } = await db.execute("select * from notes");Writes wait their turn.
SQLite takes one write at a time. Plain SQLite turns the next writer away with “database is locked”. AOZUMI DB hands every write a number and runs them in order, while reads carry on.
In our benchmark, with 32 clients writing at the same time, AOZUMI DB turned no write away. A median write took 1.6 ms with 1,000 arriving every second.
37,000 reads a second, on a laptop.
We measure with YCSB, the standard benchmark for databases you reach over a network, on the kind of machine you have, not a tuned server.
What comes with every database.
No instance to size, no connection pool to tune, no server to patch. Here's the whole list, the way SQLite would print it.
| feature | what_you_get |
|---|---|
| limits | 256 MB, 5 s a statement, 100 requests a second |
| tokens | each one opens one database, nothing else |
| guard rails | ATTACH, VACUUM INTO and risky pragmas refused |
| when idle | just a file; no instance of yours to keep running |
| per workspace | up to 3 while it's experimental |
| backups | not yet: point-in-time restore is in the server, not the console |
Questions, answered.
How do I get it?
Sign in with your AOZUMI account and open AOZUMI DB. While it's experimental, a workspace asks for access there and we switch it on. Once it's on, you can create databases in AOZUMI DB, or for an app from its Settings, under Databases.
Is it really SQLite?
It speaks SQLite's SQL and keeps each database as a SQLite file. AOZUMI's own server, written in Rust, serves it over HTTPS.
Which clients work?
Anything that speaks libSQL's HTTP protocol: @libsql/client, Drizzle on top of it, or plain HTTP with a bearer token.
Is my data backed up?
Not yet. While it's experimental there are no backups, so keep a copy of anything you can't lose. Point-in-time restore is already built into the server and comes to the console later.
What happens when I delete my app?
Its databases are deleted with it, and so are the AOZUMI_DB_URL and AOZUMI_DB_TOKEN variables AOZUMI set.
Give your next app a database.
AOZUMI DB is experimental and by invite. Run this to sign in and ask for access for your workspace.
insert into early_access (workspace)
values ('your-workspace');Run itRunning it opens AOZUMI DB with your AOZUMI account.