An SQLite extension that adds graph database capabilities using the Cypher query language.
Store and query graph data directly in SQLite—combining the simplicity of a single-file, zero-config embedded database with Cypher's expressive power for modeling relationships.
brew install graphqlite # macOS/Linux (Homebrew)
pip install graphqlite # Python
cargo add graphqlite # Rustfrom graphqlite import Graph
g = Graph(":memory:")
g.upsert_node("alice", {"name": "Alice", "age": 30}, label="Person")
g.upsert_node("bob", {"name": "Bob", "age": 25}, label="Person")
g.upsert_edge("alice", "bob", {"since": 2020}, rel_type="KNOWS")
# Query with Cypher
results = g.query("MATCH (a:Person)-[:KNOWS]->(b) RETURN a.name, b.name")
# Built-in graph algorithms
g.pagerank()
g.louvain()
g.dijkstra("alice", "bob")- Cypher queries — MATCH, CREATE, MERGE, SET, DELETE, WITH, UNWIND, RETURN
- Graph algorithms — PageRank, Louvain, Dijkstra, BFS/DFS, connected components, and more
- Zero configuration — Works with any SQLite database, no server required
- Multiple bindings — Python, Rust, and raw SQL interfaces
GraphQLite is validated against the official openCypher Technology Compatibility Kit (TCK) — the canonical conformance suite for the Cypher query language. Current coverage:
| Area | Scenarios | Passing |
|---|---|---|
| Overall | 3,876 | 97.7% |
| Expressions (temporal, lists, maps, comparison, literals, …) | 2,599 | 98.0% |
| Clauses (MATCH, WITH, MERGE, CREATE, SET, DELETE, UNWIND, …) | 1,247 | 97.2% |
| Use cases (triadic selection, subgraph counting) | 30 | 100% |
Run it yourself with angreal test tck. The remaining gaps are tracked in
docs/testing/semantic-coverage-matrix.md
and concentrate in a few deep areas (DST-aware timezone arithmetic, nested
existential subqueries, multi-row MERGE). Booleans, strings, null handling,
CREATE/SET/DELETE/REMOVE, UNION, and SKIP/LIMIT are at 100%.
Full Documentation — Tutorials, how-to guides, and API reference
# SQL tutorials
sqlite3 < examples/sql/01_getting_started.sql
# GraphRAG with HotpotQA dataset
cd examples/llm-graphrag
uv sync && uv run python ingest.py
uv run python rag.py "Were Scott Derrickson and Ed Wood of the same nationality?"