Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/twenty-lies-jam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@rushdb/javascript-sdk': minor
'@rushdb/mcp-server': minor
'@rushdb/skills': minor
'rushdb-core': minor
'rushdb-docs': minor
'rushdb-dashboard': minor
---

Docs update and SDK DX improvements
45 changes: 45 additions & 0 deletions .github/workflows/helm-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Publish Helm Chart

on:
push:
branches:
- main
paths:
- 'charts/**'
- '.github/workflows/helm-publish.yml'
# Also allow manual runs
workflow_dispatch:

permissions:
contents: read
packages: write

jobs:
publish:
name: Package and push to GHCR
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Helm
uses: azure/setup-helm@v4
with:
version: v3.17.0

- name: Log in to GHCR
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io \
--username ${{ github.actor }} \
--password-stdin

- name: Package chart
run: helm package charts/rushdb --destination /tmp/charts

- name: Push chart to GHCR
run: helm push /tmp/charts/rushdb-*.tgz oci://ghcr.io/rush-db/charts

- name: Log out
if: always()
run: helm registry logout ghcr.io
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ coverage
.rollup.cache
cjs
esm
packages/javascript-sdk/types
packages/javascript-sdk/types
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ pnpm-lock.yaml
**/build
**/node_modules
**/coverage
charts/**/templates/**
171 changes: 98 additions & 73 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@

### 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.
Push any JSON. Your agent gets graph relationships, semantic search, and a live queryable schema — automatically.
No pipeline. No separate stores. No schema planning.

[![GitHub Stars](https://img.shields.io/github/stars/rush-db/rushdb?style=social)](https://github.com/rush-db/rushdb)
[![Follow on X](https://img.shields.io/twitter/follow/rushdb?style=social)](https://x.com/RushDatabase)
[![NPM Version](https://img.shields.io/npm/v/%40rushdb%2Fjavascript-sdk?label=npm)](https://www.npmjs.com/package/@rushdb/javascript-sdk)
[![PyPI Version](https://img.shields.io/pypi/v/rushdb?label=pypi)](https://pypi.org/project/rushdb/)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue)](packages/javascript-sdk/LICENSE)
[![CI](https://img.shields.io/github/actions/workflow/status/rush-db/rushdb/ci.yml?label=tests)](https://github.com/rush-db/rushdb/actions)

[🌐 Website](https://rushdb.com) • [📖 Documentation](https://docs.rushdb.com) • [☁️ Cloud](https://app.rushdb.com) • [🔍 Examples](https://github.com/rush-db/examples)

Expand All @@ -27,18 +28,23 @@ Your agent needs memory. The standard answer is three databases: Redis for key-v

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 |
| 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](https://app.rushdb.com), then:
Two paths depending on your setup:

- **Cloud** — Managed, free tier, running in 30 seconds. [Get API key →](https://app.rushdb.com)
- **Self-host** — Docker + your own Neo4j instance. [Jump to Self-hosting →](#self-hosting)

### Cloud path

```bash
npm install @rushdb/javascript-sdk
Expand All @@ -64,8 +70,8 @@ await db.records.create({
session_id: 'sess-001',
action: 'summarized',
topic: 'Q4 results',
output: summaryText,
},
output: summaryText
}
})

// Recall by meaning — graph filter + semantic search in one call
Expand All @@ -74,7 +80,7 @@ const memories = await db.ai.search({
propertyName: 'output',
query: 'what did we decide about Q4?',
where: { agent_id: 'agent-42' },
limit: 10,
limit: 10
})
```

Expand Down Expand Up @@ -114,13 +120,17 @@ await db.records.importJson({
label: 'COMPANY',
payload: {
name: 'Acme Corp',
DEPARTMENT: [{
name: 'Engineering',
EMPLOYEE: [{
name: 'Alice',
role: 'Staff Engineer',
}]
}]
DEPARTMENT: [
{
name: 'Engineering',
EMPLOYEE: [
{
name: 'Alice',
role: 'Staff Engineer'
}
]
}
]
}
})

Expand All @@ -129,8 +139,8 @@ const engineers = await db.records.find({
labels: ['EMPLOYEE'],
where: {
role: { $contains: 'Engineer' },
DEPARTMENT: { COMPANY: { name: 'Acme Corp' } },
},
DEPARTMENT: { COMPANY: { name: 'Acme Corp' } }
}
})
```

Expand Down Expand Up @@ -162,35 +172,34 @@ Place this in your Claude Desktop, Cursor, or Windsurf MCP config. The agent can

## 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 |
| 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.
| Use case | What RushDB replaces | Key API |
| --------------------------- | ------------------------------- | ------------------------------------------------------------- |
| **Agent memory** | Redis + vector store + graph DB | `db.ai.search({ query, where: { agent_id } })` |
| **RAG with context** | Flat vector store | `db.records.find({ where, labels })` + relationship traversal |
| **Schema-free apps** | Postgres + migrations + ETL | `db.records.importJson(nestedJson)` |
| **Connected data products** | Multiple joined services | `db.records.find({ labels, where: { SOME_LABEL: { ... } } })` |

---

## Self-hosting

Requires Neo4j 2026.01.4+ with APOC and Graph Data Science plugins.
> **Self-host path** — run RushDB on your own infrastructure. Requires Neo4j 2026.01.4+ with APOC plugin.

```yaml
# docker-compose.yml
Expand All @@ -199,7 +208,7 @@ services:
rushdb:
image: rushdb/platform
ports:
- "3000:3000"
- '3000:3000'
environment:
- NEO4J_URL=neo4j+s://your-instance.neo4j.io
- NEO4J_USERNAME=neo4j
Expand All @@ -212,15 +221,15 @@ services:
<details>
<summary>Full environment variables</summary>

| 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 |
| 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 |

</details>

Expand All @@ -236,21 +245,21 @@ services:
neo4j:
condition: service_healthy
ports:
- "3000:3000"
- '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"]
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"
- '7474:7474'
- '7687:7687'
environment:
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
- NEO4J_AUTH=neo4j/password
Expand All @@ -272,6 +281,7 @@ rushdb update-password admin@example.com newsecurepassword456
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
Expand All @@ -287,36 +297,51 @@ One SearchQuery retrieves multiple perspectives simultaneously (records + proper

## Documentation

| Topic | Link |
|-------|------|
| Quick Tutorial | https://docs.rushdb.com/get-started/quick-tutorial |
| 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 |
| 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 |

---

## When not to use RushDB

- You need sub-millisecond latency at very high write throughput — RushDB is built on Neo4j, which prioritises consistency and query expressiveness over raw write speed.
- You only need flat key-value storage with no relationships or semantic search — a simpler store will be lighter.
- You need a rigid relational schema enforced at the database level — RushDB is deliberately schema-free.

---

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md). Issues and PRs welcome.
```bash
git clone https://github.com/rush-db/rushdb.git
cd rushdb
pnpm install
pnpm test
```

See [CONTRIBUTING.md](CONTRIBUTING.md) for full guidelines. 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 |
| 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 |

---

Expand Down
18 changes: 18 additions & 0 deletions charts/rushdb/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: v2
name: rushdb
description: RushDB — developer-friendly graph database platform
type: application
version: 2.2.0
appVersion: '2.2.0'
keywords:
- rushdb
- graph
- database
- neo4j
home: https://rushdb.com
sources:
- https://github.com/rush-db/rushdb
maintainers:
- name: RushDB Team
url: https://rushdb.com
icon: https://raw.githubusercontent.com/rush-db/rushdb/main/rushdb-logo.svg
Loading
Loading