GraFlo
Open source · Apache-2.0Declarative data-to-graph engine and graph ETL framework for Neo4j, ArangoDB, TigerGraph and Postgres
Any data → any graph. The model is code.
A declarative schema and ingestion engine for property graphs: define your graph once, then infer, validate, migrate and load it into any of eight supported backends.
$ pip install graflo
Why GraFlo
Stop writing one-off ingestion code.
Instead of Data → custom function → specific graph, declare the model once: Any data → GraFlo → any graph.
The model is code
One declarative contract defines vertices, edges, typed properties and identities. It lives in your repository — reviewable, diffable and auditable, not buried in ETL scripts.
Your database choice remains a choice
The same contract targets eight supported backends — Neo4j, ArangoDB, TigerGraph, FalkorDB, Memgraph, NebulaGraph, PostgreSQL and a file backend that needs no database at all, and that several writers can share.
Any source, one pipeline
CSV, JSON, Parquet, SQL databases, RDF and SPARQL endpoints, REST APIs and Kafka streams all flow through the same declarative ingestion model. A Kafka offset is committed only once its batch is written.
Schema evolution built in
Schemas evolve. GraFlo diffs models, plans migrations and replays them, and records each change as a commit you can branch, merge and revert — so the graph you run in production is the graph your contract says it is.
Identity is first-class
Natural keys, hashes, and identity funnels — “use this ID if present, otherwise that one” — resolve the same entity across sources into one vertex.
Built for agents too
The Agentic Context Plane serves bounded, policy-gated schema and graph context to LLM agents over MCP — the same model, one more consumer.
The alternatives
What the usual approaches cost you
Native database MCP servers
Engine-specific dialects; raw schema dumps that consume the agent’s context window.
Budgeted subschemas and dialect-free queries behind a policy gate.
Vector RAG over documentation
Text retrieval, with no explicit topology model to traverse.
Multi-hop answers derived from the modelled topology.
Bespoke build
Custom modelling and pipeline code before the first usable answer — and a codebase to maintain afterwards.
A declarative contract, and tooling that maintains it.
For AI agents
The Agentic Context Plane
GraFlo's write-side backend neutrality has a read-side counterpart: an LLM agent gets grounded schema and graph context through one dialect-free, policy-gated surface.
Bounded schema context
Agents receive budgeted subschemas — the slice of the model relevant to the task, sized to a token budget, with elided elements marked. A 400-type schema dump is not usable context; a bounded projection is.
A capped query contract
Traversal, neighbor probes and queries run under hard caps on depth, result size and time — the same dialect-free surface across all eight backends.
Deny-by-default policy
A connection with no policy configured is read-only under the platform’s caps. The unconfigured state is the safe state — governance is the floor, not an add-on.
Ten MCP tools
Schema introspection, traversal and query tools speak MCP natively, so any MCP-capable agent framework can consume the graph without custom glue.
Under the hood
Explore the GraFlo ontology — live
GraFlo's own meta-ontology, rendered from the same OWL vocabulary the engine ships with. Drag, zoom, click a class.
One pipeline
Part of a complete knowledge-graph stack
GraFlo handles what's already structured. OntoCast (open source, Apache-2.0) reads unstructured documents into auditable RDF. The managed OntoCast API Platform runs the pipeline for you.
Resources
Everything you need to evaluate it
Documentation
Guides, concepts and full API reference
GitHub repository
Source, issues and contributions
Runnable examples
23 examples with sample data
PyPI package
pip install graflo
Citable release
DOI 10.5281/zenodo.15446131
License
Apache-2.0
Terms in this page — GSTL, property graph, MCP — are defined in plain language in the glossary.

