An embedded, openCypher-compatible graph database for Python, Node, Swift, and Kotlin
GraphForge lets you write openCypher queries against an in-memory or Parquet-backed graph
with no external services. The v0.5.0 release passes all 3,897 openCypher TCK scenarios
and provides seven analyst-intent methods — all returning Apache Arrow Tables.
from graphforge import GraphForge
forge =GraphForge() # in-memory
# forge = GraphForge("path/to/graph/") # or Parquet-backed (directory must exist)
alice = forge.add_node("Person",name="Alice",age=30)
bob = forge.add_node("Person",name="Bob",age=25)
forge.add_edge(alice,"KNOWS", bob,since=2020)
# openCypher — returns an Arrow Table
table = forge.execute("""
MATCH (p:Person)-[:KNOWS]->(friend)
RETURN p.name AS person, friend.name AS friend
""")
# Consume with pandas, Polars, or iterate directly
The Rust core uses a hand-written recursive-descent + Pratt expression parser, DataFusion-backed
query execution, and Parquet storage. First-class bindings for Python (PyO3/maturin),
Node (napi-rs), Swift (UniFFI), and Kotlin (UniFFI) all return Arrow results.