IssunDB is a fast embedded graph database, written in Rust. It can be embedded in Rust applications without the need for a server, and can be used for a wide range of applications such as building GraphRAG pipelines and querying knowledge graphs.
You can download the latest binaries (for IssunDB CLI, MCP and HTTP servers) from here.
- Rust graph engine built with ACID, property graph model, and Cypher query language support
- Fast graph traversal and analytics using sparse matrix operations
- Fast vectorized query execution with multi-core parallelism and serializable transactions
- Built-in vector, text, and hybrid search and retrieval
- Provides a wide range of APIs, including native Rust, Python bindings, CLI, HTTP (REST), and MCP
- Fully cross-platform; supports Linux, macOS, and Windows
Important
This project is still in early development, so bugs and breaking changes are expected. Please use the issue page to report bugs or request features.
To use IssunDB in your Rust project, add the dependency to your Cargo.toml:
[dependencies]
issundb = "0.1.0-alpha.13"
serde_json = "1.0"Note
IssunDB needs Rust 1.85.0 or newer.
Here is a basic example showing how to open a database, insert nodes, establish relationships, and query the graph using Cypher:
use std::path::Path;
use issundb::{Graph, GraphQueryExt};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Open a graph database (with a 1 GB memory map size limit)
let graph = Graph::open(Path::new("./issundb-data"), 1)?;
// Add two nodes with properties
let alice_props = serde_json::json!({ "name": "Alice", "age": 30 });
let alice_id = graph.add_node("Person", &alice_props)?;
let bob_props = serde_json::json!({ "name": "Bob", "age": 28 });
let bob_id = graph.add_node("Person", &bob_props)?;
// Add an edge between the nodes
let edge_props = serde_json::json!({ "since": 2021 });
graph.add_edge(alice_id, bob_id, "KNOWS", &edge_props)?;
// Optional: rebuild CSR snapshot manually after bulk writes
graph.rebuild_csr()?;
// Run a Cypher query and print the results
let result = graph.query(
"MATCH (a:Person)-[r:KNOWS]->(b:Person) RETURN a.name, b.name, r.since"
)?;
for record in result.records {
println!(
"Match: {} knows {} since {}",
record.values[0],
record.values[1],
record.values[2]
);
}
Ok(())
}# Output:
Match: "Alice" knows "Bob" since 2021
# Run IssunDB with the CLI
docker run --rm -it -v issundb-data:/data ghcr.io/issundb/issundb:latest# Run IssunDB with the HTTP API on port 7474
docker run --rm -p 7474:7474 -v issundb-data:/data ghcr.io/issundb/issundb:latest issundb-rest# Run IssunDB with the MCP API on port 8000
docker run --rm -p 8000:8000 -v issundb-data:/data ghcr.io/issundb/issundb:latest issundb-mcpThe project documentation is available here. The Rust API documentation is available on docs.rs/issundb.
Check out the issundb-examples crate for more examples using IssunDB using the Rust API.
See the issundb-py/examples directory for example usage of the Python API.
See CONTRIBUTING.md for details on how to make a contribution.
IssunDB is available under either of these licenses:
- MIT License (LICENSE-MIT)
- Apache License, Version 2.0 (LICENSE-APACHE)
- The logo is from SVG Repo with some modifications.