Built for Analysts
Rank influence, uncover communities, compare entities, trace paths, and search the graph with methods shaped around analytical questions.
Open-source, openCypher-compatible graph tooling with a Rust core, Arrow results, and Parquet persistence. Built for research, investigation, and data workflows.
No provisioning. No driver ceremony. No hidden execution service. A durable graph environment that lives beside your data and your code.
Rank influence, uncover communities, compare entities, trace paths, and search the graph with methods shaped around analytical questions.
Install the library and start modeling. No daemon, connection string, cluster, or cloud account between you and the graph.
Run queries, graph algorithms, and search inside a native Rust engine, in the same process as your analysis.
Every query and analysis returns Apache Arrow, ready to move into pandas, Polars, and the broader data ecosystem.
Use familiar openCypher patterns shared across major graph databases, so your query knowledge transfers without learning a proprietary language.
Use GraphForge from Python notebooks, data scripts, Node applications, or VS Code without moving your work into a separate platform.
Keep graphs in ordinary project folders you can close, move, and reopen without database exports or server migrations.
Move between ontology, knowledge, Cypher results, Arrow tables, and graph views without rebuilding context in another tool.
Use a graph execution environment inside notebooks, scripts, and applications—with local persistence and Arrow-native results.
One embedded engine handles local persistence, Cypher, graph algorithms, full-text and vector retrieval, and Arrow results—without a server or network hop.
Observed timings, not an SLO. Dataset built and persisted in 7.12s.
GraphForge does not delegate core behavior to Python or Node libraries. The native engine owns the work and every binding shares the result.
A typed Rust pipeline turns openCypher into plans and Arrow results without sending work to a remote service.
TCK-COMPATIBLEPageRank, Louvain, similarity, paths, and analysis run inside the engine and return consistent typed tables.
RUST EXECUTIONCombine structured graph filters with text and vector retrieval while bringing your own embeddings.
TEXT + VECTORDurable project state is published as a coherent snapshot so readers never observe half-written graph data.
SNAPSHOT SAFETYMove results into pandas, Polars, or downstream analytics without converting through bespoke row objects.
ZERO-COPY READYStore graph projects in portable columnar files that fit local research, automation, and reproducible workflows.
LOCAL-FIRSTUse GraphForge naturally from notebooks and scripts while keeping all graph semantics in the native core.
PYTHON 3.10+Bring embedded graph execution to modern Node applications with the same behavior and Arrow result model.
NODE 20+Close a project, move its directory, and reopen it without provisioning infrastructure or exporting a database.
NO DAEMONPython and Node adapt arguments and Arrow data while execution, errors, identity, and persistence remain Rust-owned.
Query planning, execution, algorithms, persistence, and search stay in the native engine so behavior cannot drift by language.
Build and investigate graphs beside the rest of your data workflow with familiar Python ergonomics and native performance.
Use the same Rust-owned engine from Node without introducing a remote graph service or a second behavioral contract.
Open a local GraphForge project, run Cypher or analyst verbs, and inspect ontology, knowledge, and result graphs without leaving VS Code.
Tested with Cursor, Codex, and Claude for agent-assisted graph exploration and analysis.
Explore the entities, relationships, and shape of your data before deciding what to query, transform, or build.
Use ontology and knowledge features to give analysts and their agents better context for exploration, evidence, and reasoning.
Browse the Cypher language and analyst verbs, then jump directly to the relevant command documentation.
Choose your language, install the package, and create an in-process graph with a familiar openCypher query surface.
uv add graphforge
from graphforge import GraphForge
forge = GraphForge()
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)
table = forge.execute("""
MATCH (p:Person)-[:KNOWS]->(friend)
RETURN p.name AS person, friend.name AS friend
""")
print(table.to_pandas())from pathlib import Path
Path("research").mkdir(exist_ok=True)
forge = GraphForge("research/")forge.rank("Person", by="pagerank")
forge.cluster("Person", by="louvain", via="KNOWS")
forge.find("graph neural networks", label="Paper")table.to_pandas() polars.from_arrow(table) table.to_pylist()
From expressive Cypher to analyst-first operations, keep graph work close to the notebook or application that needs it.
MATCH (p:Paper)-[:CITES]->(source) WHERE p.year >= 2024 WITH source, count(p) AS citations RETURN source.title, citations ORDER BY citations DESC LIMIT 10