Sign inSign up

rushdb/platform

By rushdb

•Updated about 1 month ago

RushDB is the memory layer for AI agents and apps.

Image
Machine learning & AI
Developer tools
Databases & storage
1

10K+

rushdb/platform repository overview

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 NPM Version PyPI Version

Website⁠ • Documentation⁠ • Cloud⁠ • Examples⁠


⁠Why RushDB

Most AI memory stacks use separate systems for key-value memory, vectors, and graph relationships, then add custom sync code on top.

RushDB replaces that with one API:

  • Managed embeddings
  • Graph traversal + semantic search in one query
  • Zero-schema JSON ingestion
  • ACID-safe writes on Neo4j

⁠Docker image

This page documents the self-hosted platform image:

docker pull rushdb/platform

Default app port: 3000


⁠Quick start (Docker)

docker run -d \
  --name rushdb \
  -p 3000:3000 \
  -e NEO4J_URL='neo4j+s://your-instance.databases.neo4j.io' \
  -e NEO4J_USERNAME='neo4j' \
  -e NEO4J_PASSWORD='password' \
  -e RUSHDB_AES_256_ENCRYPTION_KEY='replace-with-32-char-secret-key' \
  -e RUSHDB_LOGIN='admin' \
  -e RUSHDB_PASSWORD='strong-password' \
  rushdb/platform

Open: http://localhost:3000


⁠Quick start (Docker Compose)

version: '3.8'
services:
  rushdb:
    image: rushdb/platform:latest
    container_name: rushdb
    ports:
      - '3000:3000'
    environment:
      - NEO4J_URL=neo4j+s://your-instance.databases.neo4j.io
      - NEO4J_USERNAME=neo4j
      - NEO4J_PASSWORD=password
      - RUSHDB_AES_256_ENCRYPTION_KEY=replace-with-32-char-secret-key
      - RUSHDB_LOGIN=admin
      - RUSHDB_PASSWORD=strong-password

⁠Requirements

  • Neo4j 2026.01.4+
  • APOC plugin
  • Graph Data Science plugin

⁠Environment variables

⁠Core
NameRequiredDefaultNotes
NEO4J_URLyes-Neo4j connection URL
NEO4J_USERNAMEyes-Neo4j username
NEO4J_PASSWORDyes-Neo4j password
RUSHDB_AES_256_ENCRYPTION_KEYyes (production)32SymbolStringForTokenEncryptionMust be exactly 32 chars
RUSHDB_PORTno3000HTTP listen port
RUSHDB_SELF_HOSTEDnotrueSelf-hosted mode toggle
RUSHDB_SERVE_STATICnotrueServe dashboard static assets
RUSHDB_DASHBOARD_URLno/Dashboard base URL
RUSHDB_LOGINnoadminBootstrap admin username
RUSHDB_PASSWORDnopasswordBootstrap admin password
RUSHDB_ALLOWED_LOGINSno[]JSON array of allowed login emails/usernames
⁠SQL metadata store
NameRequiredDefaultNotes
SQL_DB_TYPEnosqlitesqlite or postgres
SQL_DB_PATHwhen SQL_DB_TYPE=sqlite./rushdb.dbSQLite file path
SQL_DB_URLwhen SQL_DB_TYPE=postgres-Postgres DSN
SQL_DB_SSLnounsetPostgres SSL mode/flag
⁠OAuth / MCP OAuth / JWT
NameRequiredDefaultNotes
RUSHDB_PUBLIC_URLnohttps://api.rushdb.comPublic issuer used by OAuth flows
RUSHDB_OAUTH_ISSUERnohttps://api.rushdb.comWell-known OAuth issuer override
RUSHDB_JWT_PRIVATE_KEYnounsetPEM private key (RS256)
RUSHDB_JWT_PUBLIC_KEYnounsetPEM public key (RS256)
RUSHDB_JWT_PRIVATE_KEY_BASE64nounsetBase64 PEM private key (container-friendly)
RUSHDB_JWT_PUBLIC_KEY_BASE64nounsetBase64 PEM public key (container-friendly)
RUSHDB_JWT_KIDnorushdb-mcp-rs256Key ID for JWKS
⁠Embeddings (semantic indexes)
NameRequiredDefaultNotes
RUSHDB_EMBEDDING_BASE_URLnohttps://api.openai.com/v1OpenAI-compatible embeddings endpoint
RUSHDB_EMBEDDING_API_KEYrequired if embeddings enabledunsetProvider API key
RUSHDB_EMBEDDING_MODELrequired if embeddings enabledunsetModel identifier
RUSHDB_EMBEDDING_DIMENSIONSrequired if embeddings enabledunsetMust match model output
RUSHDB_EMBEDDING_BATCH_SIZEno500Backfill batch size
RUSHDB_EMBEDDING_MAX_RUNTIME_MSno50000Backfill scheduler max runtime per tick
⁠Auth providers and email
Name
GOOGLE_CLIENT_ID
GOOGLE_SECRET
GH_CLIENT_ID
GH_SECRET
MAIL_HOST
MAIL_USER
MAIL_PASSWORD
MAIL_FROM
SERVICE_CAPTCHA_KEY
⁠Rate limiting and pagination
NameDefault
RATE_LIMITER_REQUESTS_LIMIT100 (non-self-hosted)
RATE_LIMITER_TTL1000
RUSHDB_PAGINATION_DEFAULT_LIMIT100
RUSHDB_PAGINATION_MAX_LIMIT1000

NODE_ENV is also honored (production, development).


⁠License

RushDB platform components distributed via Docker are licensed under Elastic License 2.0 (ELv2). For repository-level license breakdowns, see the main README.


⁠Local dev stack (RushDB + Neo4j)

version: '3.8'
services:
  rushdb:
    image: rushdb/platform:latest
    container_name: rushdb
    depends_on:
      neo4j:
        condition: service_healthy
    ports:
      - '3000:3000'
    environment:
      - NEO4J_URL=bolt://neo4j
      - NEO4J_USERNAME=neo4j
      - NEO4J_PASSWORD=password
      - RUSHDB_AES_256_ENCRYPTION_KEY=replace-with-32-char-secret-key

  neo4j:
    image: neo4j:2026.01.4
    container_name: neo4j
    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

⁠CLI (inside container)

Manage users for self-hosted deployments:

rushdb create-user [email protected] securepassword123
rushdb update-password [email protected] newsecurepassword456

⁠SDK quick examples

⁠TypeScript
npm install @rushdb/javascript-sdk
import RushDB from '@rushdb/javascript-sdk'

const db = new RushDB('RUSHDB_API_KEY', { url: 'http://localhost:3000' })

await db.records.create({
  label: 'MEMORY',
  data: {
    agent_id: 'agent-42',
    topic: 'Q4 planning',
    output: 'Decision summary'
  }
})
⁠Python
pip install rushdb
from rushdb import RushDB

db = RushDB('RUSHDB_API_KEY', base_url='http://localhost:3000')

result = db.records.create(
    label='MEMORY',
    data={
        'agent_id': 'agent-42',
        'topic': 'Q4 planning',
        'output': 'Decision summary',
    },
)

⁠Learn more

Need something not supported yet? Open an issue: https://github.com/rush-db/rushdb/issues⁠

Tag summary

Content type

Image

Digest

sha256:af9fd548e…

Size

146 MB

Last updated

about 1 month ago

docker pull rushdb/platform