A pure-Rust, zero-dependency, Redis-compatible serving engine.

One engine, three forms: a standalone server, an in-process Rust library, and a WebAssembly module for the browser. Every form speaks RESP2 — redis-cli and every Redis client library work unchanged.

Install
# server
cargo install kevy
# container
docker run --rm -p 6379:6379 goliakk/kevy:latest
# browser
npm i @goliajp/kevy
Measurements · four-way arena

Measured, not claimed.

1.60×redis 8 (GET)
3.00×valkey 9.1 (GET)
3.60×dragonfly (GET)
serverconfigurationGET ops/sSET ops/srelative (GET)
kevy 3.18.0 --threads 8, io_uring 6,389,776 ±2.8k 6,384,676 ±582k
redis 8 (8.4.x) --io-threads 8 3,996,004 ±198k 2,460,024 ±112k
valkey 9.1 --io-threads 8 2,132,196 ±68k 1,598,402 ±0.1k
dragonfly (2025-06) --proactor_threads=8 1,776,199 ±42k 1,453,224 ±28k

Protocol: redis-benchmark -c 50 -P 16 -n 8M -t get,set, median of 5 runs ± sample stdev. One box (i7-10700K, 8C16T, Linux 6.12), fair-fight pinning: server on cores 0–7, benchmark client on cores 8–15; every server measured with the same client, same protocol, same box. Reproduce with bench/arena.sh; full decomposition in bench/PERF-DECOMP-V4-T9.md.

Capabilities · one engine

Redis parity below, a serving engine above.

Redis-compatible KVRESP2 wire protocol; replies byte-checked against valkey 9.1 for 98 commands. Strings, hashes, lists, sets, sorted sets, TTLs.
Declared indexesRange / unique secondary indexes maintained in the write path — never drifting, rebuilt from data — with one-hop hydration (IDX.*).
CJK full-text searchDictionary-free CJK bigram tokenization with BM25 ranking, as an index kind — same query surface, same hydration.
Vector searchHNSW ANN index kind, plus server-side hybrid retrieval: BM25 × KNN fusion in one query.
CDC feedChange stream with (generation, offset) positions and exact recovery points — the built-in outbox.
Replication & failoverStreaming replication with heartbeat/ACK lag truth, planned zero-loss handover (FAILOVER), quorum crash elections.
Consistency ladderOpt-in per request: WAIT, read-your-writes tokens, bounded staleness, quorum-fenced writes.
MCP serverOfficial kevy-mcp: stdio JSON-RPC for AI agents, schema generated from the same verb contract as COMMAND DOCS.
WebAssemblyThe engine in the browser (@goliajp/kevy): OPFS/IndexedDB persistence, cross-tab pub/sub, zero dependencies.
Embedded & IoTFeature-gated kevy-embedded down to a minimal KV+TTL core; musl/ARM cross-build and size/RSS budget gates in CI.
Live demo · WebAssembly

Run kevy in this browser, right now.

The demo loads the real engine as a ~420 KB wasm module: a command-line REPL over the browser API, persistence to OPFS (IndexedDB fallback) that survives a reload, and pub/sub across tabs. Nothing leaves your machine — there is no backend.

Open the live demo → Storage & pub/sub playground →