Database for AI

RushDB is a self-describing, graph-native database that helps AI agents reason over data with confidence: progressively introspect what's queryable—without guesswork.

Start free

Agents that remember, and can show where a memory came from.

Memories are ordinary records linked to the turn that produced them, so recall returns a source, not just a similar sentence. Scope them by user, agent or session with plain fields.

  • Chat turns
  • Tool results
  • User profiles
Agent memory use cases

Teams building on RushDB: Billboardbug, Antifragile AI and SymboSystems

[01] Why RushDB

Agents see the data’s shape before they query it.

Agents querying live data fail in two ways. They guess field names, types and values that don’t exist, and they can’t see what’s inside a slice of data before they narrow it. RushDB keeps an exact record of every field, type and value as data is written, and lets agents read it for all records or just the ones a filter matches.

01

The schema is written down on every write.

There is no CREATE TABLE. Each write updates a catalog of fields, types, values and links, with exact counts. When a service starts sending amount as text, the catalog shows it.

Schema catalog

02

Filter first. The schema narrows with you.

Schema calls take the same filter as a records query, so fields, values and counts describe only what matched. A search page gets facet counts that agree with the results on screen, from one query document.

Filtered schema queries

03

Nested JSON in, linked records out.

Send documents as your apps and pipelines produce them. Each nested object becomes its own record, linked to its parent, in the same commit.

How ingestion works

04

Records, links, vectors and text in one commit.

Vector and full-text indexes live next to the records and relationships, so there is no second store to keep in sync. Search, traverse and filter in one request.

Architecture

Smaller models stop guessing.

When every query is checked against what is actually stored, a small open model makes up fewer values than one several times its size, and stays right after the data changes.

100×

fewer made-upfilter values

Questions with an invented value21.3% → 0.2%

0

stale answers afterthe data changed

Questions using an outdated value48% → 0 (8B) · 10% → 0 (4B)

4.6×

more right answerson changing data

Correct answers after a rename8.1% → 37.1%

50×

fewer made-up valuesthan a 3.5× larger model

Questions with an invented value0.4% (4B, RushDB) · 19.9% (14B)

Measured with open models (Qwen3 8B and 14B, Qwen3.5 4B) running locally on BIRD Mini-Dev, 498 text-to-SQL questions, and a set with renamed values, scored automatically against reference answers. Gains are largest on smaller models; large hosted models make few of these mistakes to begin with.

05

Look, narrow, look again.

This is how an agent answers a real question on RushDB. It reads the shape of the data, filters on values that exist, then reads the shape of just the records that matched before it asks the precise question. Every field and value it uses came from the database.

Precise filters
Every value in a filter came from the database, so enterprise is never typed as Enterprise.
Exact, not sampled
Counts and values cover every record, so the rare value a question asks about is there to find.
Current after a change
The catalog updates on every write, so an agent filters on today’s values, not a snapshot’s.
Filtered schema in the docs

QWhy did enterprise customers cancel after the March price change?

example data
  1. 1Read the shape

    avoids: guessing tier or Enterprise

    // describe
    {
      "kind": "schema",
      "query": { "labels": ["Customer"] }
    }
    // query
    {
      "kind": "propertyValues",
      "property": "plan",
      "mode": "topK",
      "query": { "labels": ["Customer"] }
    }

    →Customer · 1,204 records · 38 fields

    →plan: free 803 · pro 189 · enterprise 212

    →canceled_at: datetime · OPENED → Ticket

  2. 2Narrow on values that exist

    avoids: a query that fails on a missing field

    SELECT count(*) FROM customer
    WHERE plan = 'enterprise'
      AND canceled_at >= '2026-03-01'

    →31 customers

  3. 3Read the shape of what matched

    avoids: sampling rows into the context window

    // describe, same filter as step 2
    {
      "kind": "schema",
      "query": {
        "labels": ["Customer"],
        "predicate": {
          "plan": "enterprise",
          "canceled_at": { "$gte": "2026-03-01" }
        }
      }
    }

    →cancel_reason on 31 of 31: price 14 · missing_sso 9 · migrated 8

    →OPENED → Ticket: 47 relationships

  4. 4Ask the precise question

    avoids: an answer built on a field it never checked

    SELECT c.cancel_reason,
           count(DISTINCT c.__id) AS customers,
           count(e.__id) AS tickets
    FROM customer c
    LEFT JOIN rushdb_edges.opened e ON e.__source_id = c.__id
    WHERE c.plan = 'enterprise' AND c.canceled_at >= '2026-03-01'
    GROUP BY c.cancel_reason

    →price 14 · 22 tickets

    →missing_sso 9 · 19 tickets

    →migrated 8 · 6 tickets

Open source. The engine is Apache-2.0, one Rust binary.

github.com/rush-db/rushdb
[02] Install

One Rust binary. Running in a minute.

No other services to run: the engine, its indexes and its storage ship as a single binary. Native on Linux and macOS (x86-64 and arm64); on Windows through WSL 2 or Docker.

  • Linux
  • macOS
  • Windows · WSL 2 or Docker
  • one Rust binary
curl -fsSL https://rushdb.com/install.sh | sh && rushdb up

└ Checks the release checksum, installs to ~/.rushdb/bin, starts a node on http://127.0.0.1:3000.

[03] Customers

What teams have built.

Billboardbug

Routing agents that keep their context across sessions

25,062+
routing trips in shared agent context
“Our agents and our zone grid run on 25,062+ behavioral routing trips, context that has to persist and connect, not reset every session. RushDB gives Billboardbug that memory layer out of the box. The agent remembers, so it moves.”

Ben Gauthier

Founder & CEO, Billboardbug

Agent memory

Antifragile AI

Compliance answers that trace back to one evidence chain

“EU AI Act compliance needs more than static documents. RushDB gives Antifragile AI a graph-backed RAG layer for articles, controls, evidence, versions, and retrieval logs, so every answer can trace back to one evidence chain.”

Andrei Bâcu

Founder, Antifragile AI

Company brain & RAG

SymboSystems

Autonomous operations agents that reason over business events

“Event-driven autonomous operations need memory that connects every trigger, decision, entity, and outcome. RushDB gives agents a graph-native layer for turning business events into context they can reason over and act on.”

Harsha Valluri

Founder @ SymboSystems | Sr. AI Engineer

Agent memory
[04] Works with your stack

Built for the stack you already run.

RushDB speaks the Postgres wire protocol on :5432 and Neo4j’s Bolt on :7687. Drivers, SQL clients, BI tools and agents built for them connect as they are. Everything else talks HTTP.

one engine, four ways in · Postgres wire :5432 · Bolt :7687 · HTTP :3000 · MCP

Connect · Postgres wire :5432 · drivers, SQL clients, BI

Connect · Bolt :7687 · graph drivers

Connect · HTTP :3000 · gRPC · services

Agents · MCP, frameworks, SDKs

Query · languages on the same data

Write

└ Writes in any language land in the same records and schema catalog.

live traffic · simulatedpgbolthttpgrpc
  1. pgSQLcount(*) 10M rows11 ms
  2. httpJSONvector top-k 768-d 3K1.5 ms
  3. boltCypherfilter, indexed 120K42 ms
  4. grpcJSONingest batch 500 docs79 µs/rec
  5. httpJSONfiltered read, indexed 200K2.9 ms
  6. pgSQLWHERE seq = 5 10M rows20 ms
  7. httpJSONlabels 1M400 µs
  8. grpcJSONfirst page 10M7.0 ms
  9. httpJSONingest batch 500 docs79 µs/rec
  10. grpcJSONby label 10M2.0 ms
  11. pgSQLcount(*) 10M rows11 ms
  12. httpJSONvector top-k 768-d 3K1.5 ms
  13. boltCypherfilter, indexed 120K42 ms
  14. grpcJSONingest batch 500 docs79 µs/rec
  15. httpJSONfiltered read, indexed 200K2.9 ms
  16. pgSQLWHERE seq = 5 10M rows20 ms
  17. httpJSONlabels 1M400 µs
  18. grpcJSONfirst page 10M7.0 ms

records ingested

1 284 093

12,600 per second · 79 µs per record

2.9 ms
filtered read
indexed, 32 clients
0.4 ms
labels
at 1M records
70 ms
restart to ready
after a clean stop

Simulated traffic. Each timing is a measured median on one laptop (i9-12900H), warm cache, over HTTP, October 2026; protocol overhead is not measured separately yet.

All languages and protocols
[05] FAQ

Questions developers ask first.

Weighing alternatives? See how RushDB compares.

What does “Database for AI” mean?
RushDB is a database: it stores records, relationships, and search indexes, with transactions and durable storage. “For AI” means two things it does for agents. Every write updates an exact catalog of labels, fields, types, values, and relationship shapes. And the same catalog can be read for just the records a filter matches. An agent can check both before it writes a query.
What data can I put in?
JSON from your apps, pipelines, or agents: nested documents, arrays of records, events, and payloads whose shape changes over time. Types are inferred per value and nested objects become linked records, so there is no schema to declare or migrate first.
Do I have to commit to a model or agent framework?
No. RushDB stores data, not prompts. Any model or framework can use it through the TypeScript and Python SDKs, the MCP server, or HTTP, and a self-hosted engine also speaks SQL over the PostgreSQL wire protocol. Changing models does not move your data.
Is it a vector database?
It includes vector search (exact and HNSW), BM25 full-text search, and hybrid search that fuses both, but the vectors live on ordinary records with typed fields and relationships. One query can filter, traverse, and rank instead of syncing a copy into a separate vector store.
What is the difference between the engine and RushDB Cloud?
The engine is the open-source database (Apache-2.0, one Rust binary) that you self-host. RushDB Cloud runs the same engine for you and adds managed embeddings, natural-language search, relationship suggestions, hosted MCP with OAuth, and team access. On a self-hosted engine you bring your own embedding vectors.
Do I need to replace PostgreSQL?
No. Keep Postgres for stable relational workloads that rely on its constraints, extensions, and ecosystem. Use RushDB for the data your agents and AI features read and write, especially when its shape keeps changing and relationships matter.
Does schema awareness make agent queries correct?
It removes structural guesswork (which labels, fields, values, and relationships exist), not business-semantic errors. The catalog does not know what “active customer” means at your company. Keep read-only credentials and review the queries an agent writes.
I used RushDB 2.x. What changed?
2.x ran the API on top of Neo4j. Since 3.0, RushDB is its own Rust engine, and RushDB Cloud runs it with one engine tenant per project. 2.x is preserved at the v2 tag, and the docs include an upgrade guide.

Precision your agents can query.

RushDB Cloud

Managed for you, with a free tier.

Start free on Cloud
or

Self-hosted engine

One binary on your own infrastructure.

Self-host the engine