RushDB is an instant database for modern apps and DS/ML ops built on top of Neo4j.
It automates data normalization, manages relationships, and infers data types, enabling developers to focus on building features rather than wrestling with data.
🌐 Homepage — 📢 Blog — ☁️ Platform — 📖 Docs — 🧑💻 Examples
The easiest way to start using RushDB is through RushDB Cloud. Free Tier is available.
Get up and running in less than 30 seconds by signing up at app.rushdb.com. RushDB Cloud provides a fully managed environment, so you can focus on building your application without worrying about setup or infrastructure.
If you prefer to manage your own infrastructure, you can set up RushDB with a Neo4j instance. Here’s how:
-
Use Neo4j Aura (Free Tier Available)
Quickly create a Neo4j instance using Neo4j Aura. It’s a managed service that allows you to get started with no configuration hassle. -
Deploy Your Own Instance
Alternatively, you can host your own Neo4j instance. Follow this detailed guide to deploy Neo4j on AWS EC2, including steps for installing the APOC plugin.
Both options allow you to connect RushDB to your Neo4j database for a fully customizable self-hosted environment.
- Minimum Neo4j Version:
5.25.1
- Required Plugin:
apoc-core
(installed and enabled)
Make sure your setup meets these requirements for optimal functionality.
You can quickly launch the RushDB Platform using the following Docker command:
docker run -p 3000:3000 \
--name rushdb \
-e NEO4J_URL='neo4j+s://1234567.databases.neo4j.io' \
-e NEO4J_USERNAME='neo4j' \
-e NEO4J_PASSWORD='password' \
rushdb/platform
Or by using Docker Compose:
version: '3.8'
services:
rushdb:
image: rushdb/platform
container_name: rushdb
ports:
- "3000:3000"
environment:
- NEO4J_URL=neo4j+s://1234567.databases.neo4j.io
- NEO4J_USERNAME=neo4j
- NEO4J_PASSWORD=password
Before running the container, ensure you provide the following required environment variables:
NEO4J_URL
: The connection string for your Neo4j database (e.g.,neo4j+s://<your-instance-id>.databases.neo4j.io
).NEO4J_USERNAME
: The username for accessing the Neo4j database (default isneo4j
).NEO4J_PASSWORD
: The password for your Neo4j database instance.
- Description: The port on which the application server will listen for incoming requests.
- Default:
3000
- Description: The encryption key for securing API tokens using AES-256 encryption.
- Requirement: Must be exactly 32 characters long to meet the 256-bit key length requirement.
- Important: Change this to a secure value in production.
- Default:
32SymbolStringForTokenEncryption
- Description: The login username for the RushDB admin account.
- Important: Change this to a secure value in production.
- Default:
admin
- Description: The password for the RushDB admin account.
- Important: Change this to a secure value in production.
- Default:
password
Development Setup with local Neo4j [DOCKER COMPOSE]
version: '3.8'
services:
rushdb:
image: rushdb/platform
container_name: rushdb
depends_on:
neo4j:
condition: service_healthy
ports:
- "3000:3000"
environment:
- NEO4J_URL=bolt://neo4j
- NEO4J_USERNAME=neo4j
- NEO4J_PASSWORD=password
neo4j:
image: neo4j:5.25.1
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
- NEO4J_PLUGINS=["apoc"]
The RushDB CLI allows you to manage users in self-hosted installations. Below are the available commands:
Command:
rushdb create-user <login> <password>
Example:
rushdb create-user [email protected] securepassword123
This command creates a new user with the specified login and password. It is only allowed in self-hosted setups.
Command:
rushdb update-password <login> <newPassword>
Example:
rushdb update-password [email protected] newsecurepassword456
This command updates the password for an existing user identified by the provided login. Like create-user
, this command is restricted to self-hosted environments.
-
Obtain an API Token:
- If you’re using RushDB Cloud, get your token from app.rushdb.com.
- For a self-hosted RushDB instance, retrieve the token from the Dashboard running locally (
localhost:3000
).
-
Build Anything:
Easily push, search, and manage relationships within your data.
Explore the Documentation
pip install rushdb
from rushdb import RushDB
db = RushDB(
"rushdb-api-key",
# Default URL; only override if necessary.
base_url="https://api.rushdb.com",
)
db.records.create_many(
"COMPANY",
{
"name": "Google LLC",
"address": "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
"foundedAt": "1998-09-04T00:00:00.000Z",
"rating": 4.9,
"DEPARTMENT": [
{
"name": "Research & Development",
"description": "Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.",
"tags": ["AI", "Cloud Computing", "Research"],
"profitable": true,
"PROJECT": [
{
"name": "Bard AI",
"description": "A state-of-the-art generative AI model for natural language understanding and creation.",
"active": true,
"budget": 1200000000,
"EMPLOYEE": [
{
"name": "Jeff Dean",
"position": "Head of AI Research",
"email": "[email protected]",
"salary": 3000000,
}
],
}
],
}
],
},
)
# Find Records by specific criteria
matched_employees = db.records.find(
{
"labels": ["EMPLOYEE"],
"where": {
"position": {"$contains": "AI"},
"PROJECT": {"DEPARTMENT": {"COMPANY": {"rating": {"$gte": 4}}}},
},
}
)
Explore the Documentation
npm install @rushdb/javascript-sdk
import RushDB from '@rushdb/javascript-sdk';
// Setup SDK
const db = new RushDB("API_TOKEN", {
// Default URL; only override if necessary.
url: "https://api.rushdb.com",
});
// Push data: RushDB flattens it into Records and establishes relationships automatically.
await db.records.createMany("COMPANY", {
name: 'Google LLC',
address: '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA',
foundedAt: '1998-09-04T00:00:00.000Z',
rating: 4.9,
DEPARTMENT: [{
name: 'Research & Development',
description: 'Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.',
PROJECT: [{
name: 'Bard AI',
description: 'A state-of-the-art generative AI model for natural language understanding and creation.',
active: true,
budget: 1200000000,
EMPLOYEE: [{
name: 'Jeff Dean',
position: 'Head of AI Research',
email: '[email protected]',
dob: '1968-07-16T00:00:00.000Z',
salary: 3000000,
}]
}]
}]
});
// Find Records by specific criteria
const matchedEmployees = await db.records.find({
labels: ['EMPLOYEE'],
where: {
position: { $contains: 'AI' },
PROJECT: {
DEPARTMENT: {
COMPANY: {
rating: { $gte: 4 },
},
},
},
},
});
const company = await db.records.findUniq('COMPANY', {
where: {
name: 'Google LLC',
},
});
Explore the Documentation
- RushDB Cloud:
https://api.rushdb.com
- Self-Hosted: Your custom URL (e.g.,
http://localhost:3000
)
curl -X POST https://api.rushdb.com/api/v1/records/import/json \
-H "Authorization: Bearer API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"label": "COMPANY",
"payload": {
"name": "Google LLC",
"address": "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
"foundedAt": "1998-09-04T00:00:00.000Z",
"rating": 4.9,
"DEPARTMENT": [{
"name": "Research & Development",
"description": "Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.",
"PROJECT": [{
"name": "Bard AI",
"description": "A state-of-the-art generative AI model for natural language understanding and creation.",
"active": true,
"budget": 1200000000,
"EMPLOYEE": [{
"name": "Jeff Dean",
"position": "Head of AI Research",
"email": "[email protected]",
"dob": "1968-07-16T00:00:00.000Z",
"salary": 3000000
}]
}]
}]
}
}'
curl -X POST https://api.rushdb.com/api/v1/records/search \
-H "Authorization: Bearer API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"labels": ["EMPLOYEE"],
"where": {
"position": { "$contains": "AI" },
"PROJECT": {
"DEPARTMENT": {
"COMPANY": {
"rating": { "$gte": 4 }
}
}
}
}
}'
Check the Documentation and Examples to learn more 🤓