AsanagiDB

The core engine: high-performance graph storage, native Gremlin query support, and enterprise tooling for autonomous AI workloads.

05. Migration

Already on Gremlin?
Ten minutes.

AsanagiDB speaks the core Gremlin 3.x traversal set — traverse, filter, aggregate, retrieve.

150,000+ rec/sec*

sustained over 12M records

253,000+ rec/sec

peak throughput

Same machine, same data: 4× Neo4j Desktop's import† on a MacBook Pro M3 18GB.

* LDBC Social Network Benchmark, 11,984,610 records, 0 errors. MacBook Pro M3 18GB RAM. WAL enabled. 4 live indexes: firstName, lastName, browserUsed, title. GraphSON / APOC not yet benchmarked. Methodology available on request.

† neo4j-admin offline bulk import on the same MacBook Pro M3 18GB: ~1.17M nodes/sec for the node pass. Not comparable: database must be offline, no indexes during load, index rebuild time not included. AsanagiDB ran with WAL on, 4 live indexes, and zero downtime.

Twenty-two files. One command.

Neo4j — what you write before a single row is read

# 22 header files, one per CSV:
# header_person.csv
:ID(Person)|firstName|lastName|...|:LABEL
# header_comment_hasCreator_person.csv
:START_ID(Comment)|:END_ID(Person)
# header_forum_hasTag_tag.csv
:START_ID(Forum)|:END_ID(Tag)
# ... 19 more

AsanagiDB — the entire import

AsanagiDB dataset-import \
  --data-dir ./ldbc_data \
  --db mydb

Label inferred from filename (person_0_0.csv → Person). Relationship type inferred from edge filename pattern. No annotation files.

Import your existing data in whatever format you have it:

  • CSV Plain vertex/edge CSV files — any schema
  • GraphSON TinkerPop standard — export from Neo4j or JanusGraph, import directly
  • APOC Neo4j APOC export format — migrate in one step
  • LDBC Full LDBC Social Network Benchmark dataset directories via dataset-import — bulk load with WAL enabled and live indices

// Your existing Gremlin. No changes.

// Traverse — unchanged
g.V().has('name', 'Alice')
  .out('knows')
  .values('name')

// Pattern match — unchanged
g.V().hasLabel('Person')
  .where(out('knows').count().is(gt(5)))
  .valueMap('name', 'age')

// Single-file import (csv / graphson / apoc)
AsanagiDB graphson-import --file export.json --db mydb
AsanagiDB apoc-import     --file apoc_export.json --db mydb

// Bulk dataset import (LDBC / amazon / dblp)
AsanagiDB dataset-import --dataset ldbc --data-dir ./ldbc_data

NOTE: AsanagiDB implements the core TinkerPop traversal set. See our full gap list → /docs/limitations.

06. Tiers

Choose your scale.

Every tier ships as a perpetual license by default — pay once, own your binary, own your data forever. Prefer to spread the cost instead? Flip the switch below for monthly billing.

Permanent Monthly

Community

Free

perpetual license

  • AsanagiDB server
  • AsanagiDB-mcp (local)
  • 512 MB graph (~250K nodes)
  • Gremlin query engine
  • Admin CLI + imports
  • Remote MCP (tcp://)
  • Authentication
  • Fleet config

Developer

$149

perpetual license

  • Everything in Community
  • 2 GB graph (~1M nodes)
  • Remote MCP (tcp://)
  • SASL authentication
  • Fleet config
  • TLS

Pro

$499

perpetual license

  • Everything in Developer
  • 64 GB graph (this is not a limit)
  • Fleet config / multi-instance
  • TLS
  • Priority support
Best Value

Team (10 Seats)

$3,499

perpetual license

  • Everything in Pro
  • Up to 10 team seats
  • Centralized license management
  • Pooled graph capacity
  • Priority 24/7 team support

07. Visual Console

Your graph.
Alive on screen.

AsanagiDB Admin is a native desktop app — not Electron, not a browser tab. It speaks directly to your AsanagiDB server over the same ASNA protocol the MCP layer uses. No middleware, no translation layer.

Physics-simulated graph canvas, live Gremlin console, vertex and edge inspector, multi-database switching, and a dedicated Memory view for your AI agent's knowledge graph — all in one window.

Graph Canvas Physics-simulated, interactive node layout
Gremlin Console Live query execution with result streaming
Element Inspector Vertex / edge properties on click
Memory View Visualise your AI's knowledge graph
Multi-DB Switch databases without restarting
Remote Connect Connect via UDS or tcp://host:port
AsanagiDB Admin UI — live graph visualization and Gremlin console
AsanagiDB Admin UI — Live graph visualization and Gremlin console.
Console showing user interaction and node introspection from a query that returned the first twenty "post" nodes out of 1 million, that have associative edges.

08. Document Store

Have Documents?
Will Travel.

AsanagiDB goes where no graph database has gone before. Drop in a JSON document and it decomposes automatically — nested objects become child vertices, arrays become ordered edges, scalars become indexed properties. No schema. No migration. No bolted-on document store to keep in sync with the graph.

Retrieve it and the graph reassembles into your original document, complete with all nested structures intact. We call it Compository — the same engine that stores it knows how to put it back together.

Because documents live in the graph, you can query across them with Gremlin. Find all Employee vertices inside a collection of Person documents. Filter by nested field. Traverse relationships between documents. AsanagiDB is both your document store and your graph database — at the same time.

// Store a document
{ "op": "store",
"label": "Person",
"entity": {
"_class": "Employee",
"username": "jsmith",
"dept": "Engineering"
} }
// Query it as a graph vertex
g.V()
.hasLabel('Person')
.has('_class', 'Employee')
.valueMap()
Auto-decompose Nested objects and arrays become graph structure on write
Auto-recompose Retrieve reconstructs the original document faithfully
Auto-index _id, _class, and custom key fields indexed on first write
Dual identity Label (graph category) and _class (domain type) can differ
Gremlin-native Every document is also a traversable graph vertex

Coming attraction: Because Compository understands your document's shape, it can map that shape to a typed model class. An AsanagiDB-backed ORM is a natural next step — write objects, query graphs, get objects back. All without leaving the database.

09. High Availability

Zero single points
of failure.

Production databases don't get maintenance windows. AsanagiDB replicates in real time over a simple TCP connection. When the primary goes silent, the standby promotes automatically — no operator intervention, no quorum vote, no ZooKeeper, no Raft consensus overhead.

Replication is built on the same WAL that makes crash recovery instant. The standby is always caught up. Failover is measured in seconds, not minutes.

One binary. One YAML config. Two instances. That's the entire HA story.

// normal operation

PRIMARY

:8182

● ACTIVE

WAL stream

──────▶

STANDBY

:8183

○ REPLICA

▲ clients connect here

// primary unreachable — auto-failover

PRIMARY

:8182

✗ OFFLINE

~15 seconds

── ✗ ──▶

STANDBY

:8183

● PROMOTED

▲ clients connect here

~15s

Failover time

Primary silence detected; standby promotes.

sub-ms

Replication lag

WAL shipped continuously, not on a timer.

1 field

Setup complexity

Set role: leader or follower in fleet.yaml.

Download_Admin() View_Downloads()

// 10. Binaries

Download AMI

v1.2.0 — server + MCP + admin CLI

DARWIN_ARM64

macOS

Apple Silicon

asanagidb-v1.2.0-darwin-arm64.dmg

WIN_X64

Windows

x86_64

asanagidb-v1.2.0-windows-x64.zip

LINUX_X86_64

Linux

x86_64

asanagidb-v1.2.0-linux-x86_64.tar.gz

Admin UI

Visual graph browser + Gremlin console. Native app, no Electron.

macOS

AsanagiDB-Admin-0.24.1-macos.dmg

Windows

No native build yet — use the web admin UI (Chrome recommended)

launch_web()

Linux

No native build yet — use the web admin UI (Chrome recommended)

launch_web()

NOTE: The web admin UI connects to your local AsanagiDB instance over the browser's loopback exception for mixed content, which Chrome/Chromium (Edge, Brave, Arc included) supports reliably today. Firefox and Safari don't yet — use the native app on those platforms.

NOTE: Also available: macOS Intel (darwin_x86_64), Linux arm64 (Raspberry Pi). — request_build()