The event-native database

warp

SQLite-shaped. Embedded. Zero dependencies. And it does millions of writes a second on a laptop.

Every entity is its own append-only event stream. History, real-time, time-travel and physical erasure aren’t features you bolt on — they’re what the engine is.

Measured. Native M1, idle. Not estimated.
5.4M
writes / sec
durable, parallel
16.7M
reads / sec
8 threads, hot
10.4M
reads + 695K writes
at the same time
42MB
RAM at 50M events
flat — was 4.1GB
340K
sagas / sec
multi-entity + rollback
0
dependencies
libc only. one binary.

Same machine. Same workload.

warp’s fair peer is SQLite — both embedded, both in-process. Head to head, warp does ~8× the writes and ~25× the reads. The client-server engines are a different category (a network hop per op). Honest, and it holds.

warp
2,775,000
3,460,000
SQLite
352,548
137,968
MySQL
125,600
19,322
MongoDB
97,560
5,696
PostgreSQL
47,040
17,615

Batched inserts / point reads per second, one 8-core machine. Full methodology, per-engine durability config, and the honest caveats live in the repo — we don’t merge durability classes, and we don’t call it “the fastest database.” It isn’t a relational engine. It’s the fastest embedded event store.

Events are the methods. State is the fold.

import { warp } from "@geeksquad/warp"

const Account = warp.entity("account", {
  state: { balance: 0, currency: "USD" },
  events: {
    deposited: (s, p) => ({ ...s, balance: s.balance + p.cents }),
    withdrew:  (s, p) => ({ ...s, balance: s.balance - p.cents }),
  },
})

const db = await warp.open({ entities: { account: Account } })

await db.account("alice").deposited({ cents: 10_000 })
await db.account("alice").state()   // { balance: 10000, currency: "USD" }
await db.account("alice").history() // the raw, immutable truth
await db.account("alice").erase()   // physically gone. GDPR by design.

No stringly-typed events. No manual JSON. No schema.sql. Payload types are inferred from the reducers; a typo is a compile error.

Embedded, like SQLite

Link the library, store to local files, zero network, zero ops. One static binary — competes with SQLite, not Postgres.

HA + horizontally scalable

Built into the engine, no daemon. Consistent-hash ownership + fire-and-forget replication. Kill the owner — a warm replica keeps serving.

Flat to terabytes

Tiered rotating segments + on-disk index. 50M events in 42MB of RAM, ~40ms cold-open. Reads and writes never slow down with size.

Real durability

Optimistic ~4ms flush, or true F_FULLFSYNC on-platter group commit at ~1.36M/sec. Object-storage shipping for machine-loss.

Polyglot by C-ABI

The same .dylib/.so embeds in any FFI language — Node (proven), Python, Go, Bun, Deno, Ruby. In-process at 1.7M+/sec.

Honest by default

Every number here was measured on one laptop and labeled by arch and durability class. The kind of benchmark that survives a Hacker News thread.