Key takeaways
- The EdgeX11 enterprise brain is a knowledge graph, so the database under it is not a detail — it's the product.
- Neo4j is excellent, but the JVM, the operational weight, and the licensing were more than a lean team wanted to carry.
- Axon is a graph database in one ~19MB Go binary: Cypher, 17+ algorithms, and vector search in the same engine.
- Benchmarks are honest: Axon wins on writes and indexed reads; Neo4j's mature planner still wins on aggregation and unindexed scans.
- Owning the engine is the point: it lets us enforce access control inside the query itself, which you cannot do on top of someone else's database.
Why a graph database at all
EdgeX11's hermetic organizational memory isn't a pile of documents. It's a living graph: code connected to the decisions behind it, deployments connected to what broke and how it was fixed, people connected to the systems they know. The value is in the relationships, and relationships are exactly what relational tables make expensive to traverse.
So a graph database was never optional for us. When an AI employee reasons about a change, it walks that graph — hop by hop, the way a tenured engineer would — instead of running a dozen joins. The database isn't infrastructure sitting beneath the product. For us, it is the product.
Why not just use Neo4j
To be clear: Neo4j is a superb database, and we ran on it happily for a long time. This isn't a teardown. It's a story about fit.
As the memory layer became the core of everything, a few things started to rub. Neo4j runs on the JVM, which means a heap to tune and a memory footprint that felt heavy for what we were doing. It wants to be operated — another moving part to run, watch, and pay for. And the licensing model kept forcing decisions we didn't want to keep making as a small team shipping a multi-tenant product.
What we actually wanted was almost embarrassingly simple: a graph database we could ship as a single binary, embed when we needed to, run per-tenant without ceremony, and otherwise forget about. Something that did graph queries and vector search in one place, because our workload is retrieval-augmented reasoning over a graph.
We didn't want a database to operate. We wanted a database to forget about.
What Axon is
Axon is a property-graph database written in pure Go. The whole thing is one static binary of about
19 MB — the same size as a Docker image you can docker run and be querying in
under a minute. No JVM, no cluster to stand up.
- Cypher. It speaks the query language you already know —
MATCH,MERGE,CREATE, aggregation,WITHpipelines, parameters, andCALLprocedures. - Vector search, built in. HNSW indexes (cosine and euclidean) over node properties, live-synced on write. One query can traverse relationships and rank by embedding similarity — which is the whole game for GraphRAG, without gluing a separate vector database alongside.
- 17+ graph algorithms. PageRank, community detection (Louvain, label propagation), centrality, connected components, shortest path, and more, as callable procedures.
- Ontology & inference. Classes, cycle-checked subclass hierarchies, and label-subsumption inference at query time.
- Multi-tenant by design. Per-database isolated storage engines — the same tenant isolation the EdgeX11 security model depends on.
- Built to run anywhere. Static binary, small Docker image, an embeddable Go library, an HTTP JSON API, and an interactive REPL. BadgerDB (an LSM engine) with MVCC transactions underneath.
The benchmarks — including where we lose
A benchmark you can only win is marketing, not information. Here's the full picture from our harness, so you can decide whether Axon fits your workload rather than ours.
Setup: Apple M2, 8 GB RAM · 10,000-node dataset · p50 latency over 30–200 requests · Axon vs Neo4j 2026.06.0. Small dataset on a laptop — treat it as directional, not gospel.
| Workload | Axon | Neo4j | Result |
|---|---|---|---|
| Bulk node writes | 116,156 nodes/s | 23,623 nodes/s | Axon 4.9× |
| Node + edge writes | 113,755 elem/s | 54,874 elem/s | Axon 2.1× |
| Point lookup (indexed) | 210 µs | 1.55 ms | Axon 7.4× |
| 1-hop traversal (indexed) | 230 µs | 1.26 ms | Axon 5.5× |
| Query overhead (RETURN 1) | 250 µs | 1.16 ms | Axon 4.6× |
| Group-by aggregation (10k) | 10.1 ms | 8.3 ms | Neo4j 1.2× |
| Point lookup (unindexed) | 6.1 ms | 4.3 ms | Neo4j 1.4× |
| Range count (indexed) | 3.2 ms | 1.5 ms | Neo4j 2.1× |
| Filtered scan + count (10k) | 8.5 ms | 3.8 ms | Neo4j 2.2× |
| 1-hop traversal (unindexed) | 8.4 ms | 2.6 ms | Neo4j 3.3× |
| Variable-length traversal (*1..2) | 9.5 ms | 2.7 ms | Neo4j 3.6× |
Scroll the table sideways on a narrow screen.
The shape is clear and we're not going to spin it. Axon is fast where we tuned first: writes, and reads that go through an index. Neo4j is still ahead on aggregation, unindexed scans, and variable-length traversal — the things a mature, cost-based query planner does well after years of work.
That's not a mystery; it's a roadmap. Those exact workloads are what our current query-engine release targets. Which is a good moment to be honest about what Axon is and isn't yet.
Where Axon is on the road
Axon is young and we'd rather say so than imply otherwise. The single-node core is shipped and hardened; the work now is making the query engine as smart as the storage engine is fast.
- Shipped — the core: graph storage, a Cypher lexer/parser/executor, MVCC transactions, the algorithm library, HNSW vector search, ontology inference, multi-tenancy, the HTTP API and shell, cross-platform binaries and CI.
- In progress — query-engine maturity: range indexes and constraints, a cardinality-driven planner,
EXPLAIN/PROFILE, cost-based join ordering, and parallel scans are in. Composite indexes, parallel aggregation, streaming results and full-text search are next — which is precisely where the benchmark gaps close. - Next — ecosystem and AI: a Bolt protocol server, official Go/Python/JavaScript clients, a GraphQL API, and an MCP server so LLM agents can query the graph directly.
- Later — a deeper semantic layer, enterprise operations (RBAC, SSO, audit, encryption at rest), and distributed clustering.
The roadmap moves faster than a blog post can, so treat the list above as a snapshot rather than a commitment.
Why the engine stays in-house
When we first wrote about Axon we published it under an open-source licence, and we said the database would stay that way. Four days later we changed our minds. That is a short half-life for a commitment, so it deserves an explanation rather than a quiet edit.
What changed is what we're building on top of it. The next thing Axon needs to do is enforce access control at the level of individual nodes and relationships — so a fact created by one team is not merely filtered out of another team's results, but never matched in the first place — and to make deletion provable: remove a source, and every fact, edge, summary and embedding derived from it goes with it, with a certificate to show for it.
Both of those are only possible inside the engine. Anyone building a memory layer on a database they didn't write can filter after the query returns, and can delete the rows they know about. They cannot enforce during the match, and they cannot guarantee that nothing survives in a vector index they don't control. That capability is the product, not a feature of it.
So Axon is proprietary from v0.8 onward. The preview releases we published under the old licence stay under it — we're not pretending otherwise or trying to claw them back. If this reads as a reversal, it is one, and we would rather say so plainly than quietly rewrite the earlier post and hope nobody kept a copy.
Common questions
Is Axon a drop-in Neo4j replacement?
Not yet. It speaks Cypher, so most queries port directly, but the Bolt protocol and some procedures are still on the roadmap (v0.3). Today it's best as a lightweight, single-binary option for knowledge graphs, GraphRAG and embedded use.
Can I use it on its own?
Not as a separate product. Axon ships as part of EdgeX11, or under a separate written agreement. The preview releases published under the earlier open-source licence stay under it; everything from v0.8 onward is proprietary.
Does it really do vector search in the same engine?
Yes. HNSW indexes over node properties, live-synced on write, so one query can traverse the graph and rank by embedding similarity — no separate vector database to keep in sync.
Is it production-ready?
The single-node core is shipped and hardened, and it runs our own workloads every day. It's young on the query-planner side, and there is no clustering or replication yet — which is why we say single-node rather than letting you find out.
Want to see it work?
Axon is the engine underneath what we build. If you're weighing a graph database for agent memory — or you want to argue with our benchmarks — we're happy to get into the detail.
Talk to us