GraphForge
Embedded graph execution environment

Local graphs.Zero servers.Better reasoning. Faster reasoning. Cheaper reasoning.

Open-source, openCypher-compatible graph tooling with a Rust core, Arrow results, and Parquet persistence. Built for research, investigation, and data workflows.

100%openCypher TCK3,897/3,897 full corpus
0Servers requiredembedded in your process
128MEdges tested up to8.0M nodes · fixed-hop engine
Py + NodeLanguage bindingsone Rust-owned engine
258 msCold first resultstandard Colab CPU

Built for analysts who think in graphs.

No provisioning. No driver ceremony. No hidden execution service. A durable graph environment that lives beside your data and your code.

Built for Analysts

Rank influence, uncover communities, compare entities, trace paths, and search the graph with methods shaped around analytical questions.

No server. Ever.

Install the library and start modeling. No daemon, connection string, cluster, or cloud account between you and the graph.

Fast execution in Rust

Run queries, graph algorithms, and search inside a native Rust engine, in the same process as your analysis.

Portable Arrow Results

Every query and analysis returns Apache Arrow, ready to move into pandas, Polars, and the broader data ecosystem.

Compatible Queries

Use familiar openCypher patterns shared across major graph databases, so your query knowledge transfers without learning a proprietary language.

Works Where You Do Already

Use GraphForge from Python notebooks, data scripts, Node applications, or VS Code without moving your work into a separate platform.

Projects That Travel

Keep graphs in ordinary project folders you can close, move, and reopen without database exports or server migrations.

One Project, Many Views

Move between ontology, knowledge, Cypher results, Arrow tables, and graph views without rebuilding context in another tool.

Moving beyond server-first graph databases?

Use a graph execution environment inside notebooks, scripts, and applications—with local persistence and Arrow-native results.

Explore the guide

Fast to start. Fast to analyze. Light as a complete system.

One embedded engine handles local persistence, Cypher, graph algorithms, full-text and vector retrieval, and Arrow results—without a server or network hop.

Executed benchmarkgf-perf / run-all
Standard Google Colab CPU

25,000-node local analysis profile

GraphForge 0.5.1
analysis nodes
25K
graph edges
125K
searchable docs + vectors
1K
  1. Project open → first Arrow resultcold start
    258 ms
  2. PageRank25K rows · warm median
    301 ms
  3. Louvain communities25K rows · warm median
    323 ms
  4. Hybrid search20 results · warm median
    132 ms

Observed timings, not an SLO. Dataset built and persisted in 7.12s.

Run the exact notebook yourself.Public, version-pinned, and fully executed on Colab.

One core. Every surface aligned.

Python and Node adapt arguments and Arrow data while execution, errors, identity, and persistence remain Rust-owned.

ENGINE

Rust core with one source of truth

Query planning, execution, algorithms, persistence, and search stay in the native engine so behavior cannot drift by language.

  • Typed Cypher compilation and execution
  • Arrow-native result tables
  • Parquet-backed durable projects
  • Atomic graph publication
  • Public UUID identity
PYTHON

Notebook-native analysis

Build and investigate graphs beside the rest of your data workflow with familiar Python ergonomics and native performance.

  • pandas and Polars interchange
  • Analyst verbs for rank and cluster
  • In-memory or persistent projects
  • Full openCypher query surface
  • No server lifecycle to manage
NODE

Embedded graphs for applications

Use the same Rust-owned engine from Node without introducing a remote graph service or a second behavioral contract.

  • Thin N-API binding
  • Arrow-compatible results
  • Shared project format
  • Consistent error taxonomy
  • Parity with Python behavior

Think with the graph, inside your editor.

Open a local GraphForge project, run Cypher or analyst verbs, and inspect ontology, knowledge, and result graphs without leaving VS Code.

  • Works with your coding agent

    Tested with Cursor, Codex, and Claude for agent-assisted graph exploration and analysis.

  • Data first. Code second.

    Explore the entities, relationships, and shape of your data before deciding what to query, transform, or build.

  • Reasoning support

    Use ontology and knowledge features to give analysts and their agents better context for exploration, evidence, and reasoning.

The graph toolkit, in one process.

Browse the Cypher language and analyst verbs, then jump directly to the relevant command documentation.

MATCHRead and filterOPTIONAL MATCHRead and filterWHERERead and filterRETURNProject and pageORDER BYProject and pageLIMITProject and pageSKIPProject and pageCREATECreate and upsertMERGECreate and upsertSETUpdate propertiesREMOVEUpdate propertiesDELETEDelete graph dataDETACH DELETEDelete graph dataUNWINDRows and chainingWITHRows and chainingUNIONSet operationsUNION ALLSet operationsNODEGraph patternsRELATIONSHIPGraph patternsPATH VARIABLESGraph patternsCASEExpressionsNULLExpressionsBOOLEANExpressionsCOMPARISONExpressionsSTRINGFunctionsMATHFunctionsLISTFunctionsAGGREGATIONFunctionsGRAPHFunctionsDATETemporal valuesTIMETemporal valuesDATETIMETemporal valuesDURATIONTemporal values$PARAMETERSParameters and subqueriesEXISTS {}Parameters and subqueriesrank()Rank nodesPAGERANKRank nodesBETWEENNESSRank nodesCLOSENESSRank nodesEIGENVECTORRank nodesARTICLE RANKScore structureHITSScore structureK-COREScore structureTRIANGLE COUNTScore structureADAMIC-ADARScore structurecluster()Cluster communitiesLOUVAINCluster communitiesLEIDENCluster communitiesLABEL PROPAGATIONCluster communitiesWALKTRAPCluster communitiespaths()Find pathsBFSFind pathsDIJKSTRAFind pathsA*Find pathsBELLMAN-FORDFind pathsYEN'SFind pathsMAX FLOWFlow and traversalMIN CUTFlow and traversalDFSFlow and traversalRANDOM WALKFlow and traversalREACHABILITYFlow and traversalanalyze()Analyze graphsSPANNING TREEAnalyze graphsDAGAnalyze graphsCOLORINGAnalyze graphsMATCHINGAnalyze graphsPLANARITYAnalyze graphssimilar()Compare nodesJACCARDCompare nodesCOSINECompare nodesOVERLAPCompare nodesfind()Search and retrieveTEXTSearch and retrieveVECTORSearch and retrieveHYBRIDSearch and retrieveindex()Search and retrieve
Cypher language Analyst verbs

Up and querying in seconds.

Choose your language, install the package, and create an in-process graph with a familiar openCypher query surface.

1 · Install GraphForge

uv add graphforge

2 · Build and query

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())

Open a persistent project

from pathlib import Path

Path("research").mkdir(exist_ok=True)
forge = GraphForge("research/")

Analyst verbs

forge.rank("Person", by="pagerank")
forge.cluster("Person", by="louvain", via="KNOWS")
forge.find("graph neural networks", label="Paper")

Move results downstream

table.to_pandas()
polars.from_arrow(table)
table.to_pylist()

Real workflows. Local graph.

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
Apache 2.0 · Local-first · Open source

Small footprint. Serious graph work.

GraphForge brings graph execution into the workflows you already use—without turning every question into an infrastructure project.