Memory engine, not a shared cluster.

One isolated engine per customer.

DBX holds working state and vector memory in the same process — and that process belongs to one tenant. Isolation is a directory, a WAL, and an HNSW index. Not a prefix you hope nobody forgets.

  • Isolated engines
  • RESP :6380
  • 100 tenants / node
  • BSL 1.1
Isolation · in-browser
AUTH acme

acme

session empty
vectors 0
WAL seq 0

harbor

session empty
vectors 0
WAL seq 0

lumen

session empty
vectors 0
WAL seq 0
acme>

Browser sketch of the product, not a live node. GET on harbor cannot see acme’s session.

Why it exists

Shared clusters make tenancy your job.

The stores you already run assume one pool. You bolt customers on with names. That works until it doesn’t.

  1. 01

    Tenancy is a key prefix

    One missing tenant:{id}: in one query is a cross-customer data leak.

  2. 02

    Two systems drift

    Session in a cache, embeddings in a vector DB. Dual writes. Two pages at 3am.

  3. 03

    Backup is cluster-wide

    You cannot restore one customer. You snapshot the whole machine.

  4. 04

    Delete-my-data is a sprint

    A scan, a prefix sweep, a blast radius. Off-boarding becomes a project.

  5. 05

    Noisy neighbor eviction

    One busy tenant evicts a quiet tenant’s working set from a shared pool.

Sketch · not a live node

A forgotten prefix leaks. A tenant worker cannot.

Two isolation models, side by side. Left is the accident on a shared cluster. Right is DBX: AUTH switches process, not a key name. This widget does not talk to a node.

Shared cluster

Tenancy is a prefix

> AUTH default
> SET user:alice:session tok-a
> SELECT 1
> SET user:bob:session tok-b
> KEYS user:*
leaked 1) user:alice:session
leaked 2) user:bob:session

One KEYS user:* returns alice and bob. The prefix was the only wall.

DBX

Tenancy is a process

> AUTH tenant-alice
> SET session tok-a
> KEYS *
this worker 1) session
> AUTH tenant-bob
> GET user:alice:session
isolated (nil) — alice’s heap is not here

AUTH switched workers. Bob’s engine never held alice’s keys.

Browser theatre. Same shape as the isolation bench above.

What has to stay true in the code

The tenant is the unit of everything.

Five claims. RESP is how you connect, not why you buy.

01

Tenant is a first-class object

POST /api/provision creates a live isolated engine — own data directory, WAL, HNSW, snapshots. Backup and delete hit exactly one customer.

02

State and memory in one engine

KV with TTL and HNSW vectors, one process, one connection, one directory, one backup archive. Recall is VSEARCH, VSIM, and VFUSE on that tenant — embeddings stay with the caller.

03

Cost scales with active tenants

SQ8 mmap vectors. Idle tenants sit in page cache. You pay for who is awake, not who signed.

04

Self-hosted single binary

Dashboard, console, explorer, playground — compiled in. Embeddings never leave the network.

05

Isolation Kernel

Linux production seals each tenant as its own process with a Landlock-restricted filesystem, an encrypted WAL and index, and a Unix socket only the orchestrator can open.

redis-py, ioredis, go-redis already speak RESP. Useful for trying DBX. Not a substitute for a tuned shared KV cluster.

Lifecycle API →

Operational upgrades

Keep serving while memory changes.

DBX gives a per-tenant memory system two practical escape hatches: build a replacement vector index while the current one serves, and inspect the retained state behind an earlier retrieval.

A

VMIGRATE — shadow index promotion

Stream caller-generated vectors into a non-empty shadow index, then swap it into service. Current reads continue during the build; cancellation keeps the live index.

B

AS_OF — historical vector search

Replay retained vector WAL history into a temporary index to reproduce an audit or RAG incident. It is slower than current search and bounded by retention.

Recall · in-browser

VSIM, SPACE, and VFUSE on toy vectors.

Six 3-d stand-ins. Cosine in the browser. Not HNSW, not a live node, not a model. The wire on a real engine is the same shape.

    Certified ANN p50 on the published profile is 2.304 ms. This widget does not measure that. Embeddings stay with the caller; DBX does not run CLIP or MiniLM.

    Operator UI, in the binary

    This is the console you actually get.

    Not a mock. Screens from the embedded dashboard: the vector playground, tenants, overview, and the RESP console. Click the numbered pins on the playground.

    DBX vector playground: semantic, similar-to-id, and multimodal fusion
    Playground — VSEARCH, VSIM, VFUSE on one tenant
    DBX dashboard tenant list with isolated engines
    Tenants
    DBX dashboard overview for one tenant
    Overview
    DBX interactive console
    Console

    Semantic is VSEARCH with a query vector. Similar-to-id is VSIM — load that stored row, exclude self. Multimodal is VFUSE across named SPACE graphs. DBX does not run CLIP or MiniLM.

    Fit

    Who it is for. Who it is not.

    Build this if

    • AI agent platforms — each end-customer’s agent needs private recall
    • Vertical AI SaaS — legal, medical, support, finance RAG per client
    • On-prem / regulated — one binary inside their network
    • Teams tired of running a cache and a vector DB

    Walk away if

    • One tenant, one workload
    • You need billion-vector ANN, sharding, or heavy filtering
    • You want a fully managed vector service with no infrastructure
    • You need SQL, joins, or a system of record
    The right tool for the other jobs
    If you need Use Why not DBX
    Peak shared KV throughput Redis / Dragonfly Their design target. Ours is isolation.
    Billion-vector ANN Qdrant / Milvus DBX is sized for per-tenant working sets.
    Fully managed vectors Pinecone DBX is software you run. Deliberately.
    System of record Postgres + pgvector DBX sits in front of the system of record and underneath the agent.

    Idle cost

    Density is RSS, not a price list.

    Isolation Kernel strict idle workers sit in the 14–17 MiB band. This slider multiplies the midpoint. No invented dollar figure.

    186 MiB estimated idle RSS

    CI soaks 12 idle / 4 active. Operators run make soak (100 idle / 25 active). That is not a 100-orchestrator-process soak.

    Fit check

    Four questions. A verdict, not a lead form.

    1. How do you isolate customers?
    2. Who produces embeddings?
    3. What is Isolation Kernel?
    4. Do you need SQL joins as the system of record?

    Operator walkthrough

    The dashboard, frame by frame.

    Real screens from the embedded UI. No stock footage. Advance with the arrows or sit with the loop.

    DBX dashboard tenant list
    Tenants — each row is an isolated engine

    BSL 1.1

    Install it in your rack. Measure it on your hardware.

    Free to self-host, including inside your own SaaS. Cannot offer managed DBX to third parties without a commercial deal.