Skip to content

rush-db/rushdb

Repository files navigation

RushDB Logo

RushDB

The memory layer for AI agents and apps.

Push any JSON. Get graph relationships and vector search — automatically. No schema. No pipeline. No glue code.

GitHub Stars Follow on X NPM Version PyPI Version License

🌐 Website📖 Documentation☁️ Cloud🔍 Examples


The problem

Your agent needs memory. The standard answer is three databases: Redis for key-value, a vector store for semantic search, a graph DB for relationships — plus glue code to keep them in sync.

RushDB replaces all three. Push JSON once. Query it with graph traversal, semantic search, or both — in one call.

Without RushDB With RushDB
Redis + Pinecone + Neo4j + glue code One API
Design schema → write migrations → repeat Push any shape, no schema required
Separate embedding pipeline Managed embeddings, server-side
Hand-craft relationship edges Auto-detected from your data structure

Quick start

Get an API key at app.rushdb.com, then:

npm install @rushdb/javascript-sdk
# or
pip install rushdb

Store and recall agent memory

import RushDB from '@rushdb/javascript-sdk'

const db = new RushDB('RUSHDB_API_KEY')

// One-time: tell RushDB to auto-embed 'output' on every write
await db.ai.indexes.create({ label: 'MEMORY', propertyName: 'output' })

// Store an agent action — no embedder, no vectors array
await db.records.create({
  label: 'MEMORY',
  data: {
    agent_id: 'agent-42',
    session_id: 'sess-001',
    action: 'summarized',
    topic: 'Q4 results',
    output: summaryText,
  },
})

// Recall by meaning — graph filter + semantic search in one call
const memories = await db.ai.search({
  labels: ['MEMORY'],
  propertyName: 'output',
  query: 'what did we decide about Q4?',
  where: { agent_id: 'agent-42' },
  limit: 10,
})
from rushdb import RushDB

db = RushDB('RUSHDB_API_KEY')

# Store — graph links sessions, actions, and context automatically
db.records.create(
    label='MEMORY',
    data={
        'agent_id': 'agent-42',
        'action': 'summarized',
        'topic': 'Q4 results',
        'output': summary_text,
    },
)

# Recall — traverse relationships and filter by meaning
results = db.records.find({
    'labels': ['MEMORY'],
    'where': {
        'agent_id': 'agent-42',
        'topic': {'$contains': 'Q4'},
    },
    'limit': 10,
})
Also works with nested JSON — RushDB structures it automatically
// Push nested JSON — RushDB normalizes it into a graph, no schema needed
await db.records.importJson({
  label: 'COMPANY',
  payload: {
    name: 'Acme Corp',
    DEPARTMENT: [{
      name: 'Engineering',
      EMPLOYEE: [{
        name: 'Alice',
        role: 'Staff Engineer',
      }]
    }]
  }
})

// Traverse the auto-created relationships
const engineers = await db.records.find({
  labels: ['EMPLOYEE'],
  where: {
    role: { $contains: 'Engineer' },
    DEPARTMENT: { COMPANY: { name: 'Acme Corp' } },
  },
})

Connect to Claude, Cursor, or any MCP client

RushDB ships an MCP server. Your agent gets persistent, structured memory — out of the box.

{
  "mcpServers": {
    "rushdb": {
      "command": "npx",
      "args": ["@rushdb/mcp-server"],
      "env": {
        "RUSHDB_API_KEY": "your-api-key-here"
      }
    }
  }
}

Place this in your Claude Desktop, Cursor, or Windsurf MCP config. The agent can now create records, search by meaning, traverse relationships, and introspect the schema — all via natural language.


What's in the box

Capability What it means
Managed embeddings Index any string property once — every write is auto-embedded server-side
Graph + vector in one query Semantic similarity and relationship traversal compose in a single call
Zero schema Push any JSON shape. RushDB infers types, creates properties, links records
ACID transactions Concurrent agents don't corrupt shared memory. Neo4j under the hood
Self-describing graph Agents enumerate labels, properties, and value ranges to orient themselves
MCP-native Full MCP server with discovery-first query prompt built in
Agent Skills Installable @rushdb/skills package — teach any skills-compatible agent to query, model, and remember with RushDB in one command
Unified query API One JSON shape for graph, vector, aggregation, and introspection
Self-host or cloud Docker + your Neo4j, or managed cloud. Full data ownership

Use cases

Agent memory — Persist tool outputs, conversation history, and reasoning chains. Graph auto-links sessions, entities, and actions without manual relationship modeling.

RAG with context — Go beyond flat chunk retrieval. Filter by relationships, rank by semantic similarity, aggregate — one query.

Schema-free apps — Push raw data now, refine later. No migration churn. Labels and properties auto-discovered for dynamic UIs and AI agents.

Connected data products — Product catalogs, knowledge bases, fraud graphs, biotech entities: traverse, filter, and aggregate without separate systems.


Self-hosting

Requires Neo4j 2026.01.4+ with APOC and Graph Data Science plugins.

# docker-compose.yml
version: '3.8'
services:
  rushdb:
    image: rushdb/platform
    ports:
      - "3000:3000"
    environment:
      - NEO4J_URL=neo4j+s://your-instance.neo4j.io
      - NEO4J_USERNAME=neo4j
      - NEO4J_PASSWORD=password
      - RUSHDB_AES_256_ENCRYPTION_KEY=32-char-key-here
      - RUSHDB_LOGIN=admin
      - RUSHDB_PASSWORD=secure-password
Full environment variables
Name Description Required Default
NEO4J_URL Neo4j connection URL yes
NEO4J_USERNAME Neo4j username yes neo4j
NEO4J_PASSWORD Neo4j password yes
RUSHDB_AES_256_ENCRYPTION_KEY 32-char key for API token encryption yes (prod)
RUSHDB_PORT HTTP port no 3000
RUSHDB_LOGIN Admin login no admin
RUSHDB_PASSWORD Admin password no password
Local development (bundled Neo4j)
version: '3.8'
services:
  rushdb:
    image: rushdb/platform
    depends_on:
      neo4j:
        condition: service_healthy
    ports:
      - "3000:3000"
    environment:
      - NEO4J_URL=bolt://neo4j
      - NEO4J_USERNAME=neo4j
      - NEO4J_PASSWORD=password
  neo4j:
    image: neo4j:2026.01.4
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1"]
      interval: 5s
      retries: 30
      start_period: 10s
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
      - NEO4J_AUTH=neo4j/password
    volumes:
      - ./neo4j-plugins:/var/lib/neo4j/plugins
# Manage users via CLI
rushdb create-user admin@example.com securepassword123
rushdb update-password admin@example.com newsecurepassword456
Architecture: how RushDB structures data (LMPG)

RushDB uses a Labeled Meta Property Graph (LMPG) model. Properties are elevated to first-class graph nodes ("HyperProperties") — not just key-value pairs attached to records.

This means:

  • Auto-detected relationships — records sharing properties get linked without hand-crafting edges
  • Schema introspection — agents can enumerate labels, property types, value ranges, and relationship topology in one query
  • Soft constraints — type cohesion scoring, cardinality tracking, and vector dimension enforcement without rigid upfront schemas
  • Unified query surface — the same filter expression works across records, labels, properties, and relationships

One SearchQuery retrieves multiple perspectives simultaneously (records + property stats + aggregations), avoiding the N+1 inspection pattern common in separate-system architectures.

Read the full LMPG architecture post →


Documentation

Topic Link
Quick Tutorial https://docs.rushdb.com/get-started/quick-tutorial
Vector / Semantic Search https://docs.rushdb.com/concepts/search/where#vector-operators
Filtering & Traversal https://docs.rushdb.com/concepts/search/where
Grouping & Aggregations https://docs.rushdb.com/concepts/search/group-by
TypeScript SDK https://docs.rushdb.com/typescript-sdk/introduction
Python SDK https://docs.rushdb.com/python-sdk/introduction
REST API https://docs.rushdb.com/rest-api/introduction
MCP Server packages/mcp-server/README.md
Agent Skills packages/skills/README.md

Contributing

See CONTRIBUTING.md. Issues and PRs welcome.


License

Path License
platform/core Elastic License 2.0
platform/dashboard Elastic License 2.0
docs Apache 2.0
website Apache 2.0
packages/javascript-sdk Apache 2.0
packages/mcp-server Apache 2.0

Need something not supported yet? Open an issue — design discussions are welcome.