Python SDK for the Graphmind Graph Database — embedded and remote modes
Project description
Graphmind Graph Database
Graphmind is a high-performance, distributed graph database written in Rust with ~90% OpenCypher support, Redis protocol compatibility, and a built-in web visualizer. It combines property graph storage, vector search, graph algorithms, and natural language querying in a single binary.
Install
Docker (recommended)
docker run -d --name graphmind \
-p 6379:6379 -p 8080:8080 \
-v graphmind-data:/data \
fabischk/graphmind:latest
Binary
# Quick install script (Linux/macOS)
curl -sSL https://raw.githubusercontent.com/fab679/graphmind/main/dist/install.sh | bash
# Or download directly from GitHub Releases:
# https://github.com/fab679/graphmind/releases/latest
# Linux: graphmind-v0.7.0-x86_64-unknown-linux-gnu.tar.gz
# macOS: graphmind-v0.7.0-aarch64-apple-darwin.tar.gz
# Intel: graphmind-v0.7.0-x86_64-apple-darwin.tar.gz
Cargo
cargo install graphmind
From Source
git clone https://github.com/fab679/graphmind.git
cd graphmind
cd ui && npm install && npm run build && cd ..
cargo build --release
./target/release/graphmind
Quick Start
# Start the server (RESP on :6379, HTTP on :8080)
graphmind
# Open the web visualizer
open http://localhost:8080
Create data and query
redis-cli -p 6379
# Create nodes and relationships
GRAPH.QUERY default "CREATE (a:Person {name: 'Alice', age: 30})"
GRAPH.QUERY default "CREATE (b:Person {name: 'Bob', age: 25})"
GRAPH.QUERY default "MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}) CREATE (a)-[:KNOWS]->(b)"
# Query
GRAPH.QUERY default "MATCH (p:Person)-[:KNOWS]->(friend) RETURN p.name, friend.name"
Load demo data
curl -X POST http://localhost:8080/api/script \
-H 'Content-Type: application/json' \
--data-binary @scripts/social_network_demo.cypher
SDK Examples
Python
pip install graphmind
from graphmind import GraphmindClient
db = GraphmindClient.embedded() # or .remote("localhost", 8080)
db.query("""
CREATE (a:Person {name: 'Alice', age: 30});
CREATE (b:Person {name: 'Bob', age: 25});
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:KNOWS]->(b)
""")
result = db.query_readonly("MATCH (n:Person) RETURN n.name, n.age")
print(result)
TypeScript
npm install graphmind-sdk
import { GraphmindClient } from 'graphmind-sdk';
const client = new GraphmindClient({ url: 'http://localhost:8080' });
await client.query(`
CREATE (a:Person {name: "Alice", age: 30});
CREATE (b:Person {name: "Bob", age: 25});
MATCH (a:Person {name: "Alice"}), (b:Person {name: "Bob"})
CREATE (a)-[:KNOWS]->(b)
`);
const result = await client.query('MATCH (n:Person) RETURN n.name, n.age');
Rust
[dependencies]
graphmind-sdk = "0.7.0"
use graphmind_sdk::EmbeddedClient;
let mut client = EmbeddedClient::new();
client.query("default", "
CREATE (a:Person {name: 'Alice', age: 30});
CREATE (b:Person {name: 'Bob', age: 25});
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:KNOWS]->(b)
")?;
let result = client.query_readonly("default", "MATCH (n:Person) RETURN n.name, n.age")?;
redis-cli / Any Redis Client
redis-cli -p 6379
> GRAPH.QUERY default "MATCH (n) RETURN labels(n), count(n)"
import redis
r = redis.Redis(port=6379)
r.execute_command('GRAPH.QUERY', 'default', 'MATCH (n:Person) RETURN n.name')
REST API
curl -X POST http://localhost:8080/api/query \
-H 'Content-Type: application/json' \
-d '{"query": "MATCH (n) RETURN n LIMIT 10"}'
Configuration
| Variable | Default | Description |
|---|---|---|
GRAPHMIND_HOST |
127.0.0.1 |
RESP server bind address |
GRAPHMIND_PORT |
6379 |
RESP server port |
GRAPHMIND_HTTP_PORT |
8080 |
HTTP/visualizer port |
GRAPHMIND_DATA_DIR |
./graphmind_data |
Data directory |
GRAPHMIND_AUTH_TOKEN |
(none) | Enable auth with this token |
GRAPHMIND_LOG_LEVEL |
info |
Log level |
See dist/config.toml for a full config file example.
Key Features
- OpenCypher -- ~90% coverage (MATCH, CREATE, MERGE, WITH, UNWIND, UNION, 30+ functions)
- RESP Protocol -- Works with any Redis client
- Vector Search -- Built-in HNSW indexing
- NLQ -- Natural language to Cypher via OpenAI, Gemini, Ollama, or Claude
- Graph Algorithms -- PageRank, BFS, Dijkstra, WCC, SCC, and more
- Multi-Tenancy -- Isolated graph namespaces with per-tenant quotas
- High Availability -- Raft consensus for cluster replication
- Web Visualizer -- Interactive graph explorer with D3.js force graph
- MCP Server -- Auto-generate AI agent tools from graph schema
Documentation
License
Apache License 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file graphmind-0.7.0.tar.gz.
File metadata
- Download URL: graphmind-0.7.0.tar.gz
- Upload date:
- Size: 3.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33928034352fedfe3796fa8780c69f586f2f5d7d80739ca22cf0b7caa984e941
|
|
| MD5 |
0255e3932bbd69bb5ff31f2677f406a4
|
|
| BLAKE2b-256 |
7758cf7d60754c8f6ebe1d6698a1c6df1e40b880d93ddf3fc434c1e0018784f9
|
File details
Details for the file graphmind-0.7.0-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: graphmind-0.7.0-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 7.1 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
703bde7212249df79fc5eb7b522d4c5fc67e07f2109360753b8f77c1977a4718
|
|
| MD5 |
40e12485b2ab6b81919ba166943b410c
|
|
| BLAKE2b-256 |
70dc23f2111116564dcbf3dc196d63e8ea7ce84da6ee5050b51e1c971368fd40
|