ladybugdb
Installation
SKILL.md
LadybugDB
LadybugDB is an embedded, in-process property graph database — no server process required. It uses the openCypher query language with a required, predefined schema (unlike Neo4j), columnar disk-based storage, vectorized query execution, and serializable ACID transactions.
Quick orientation
- Schema-first: you must create node/rel tables before inserting data
- One primary key per node table — automatically indexed, unique, non-null
- Walk semantics: repeated edges allowed in MATCH (unlike Neo4j's trail semantics)
- One write transaction at a time; multiple concurrent reads are fine
- In-memory mode: use
":memory:"as the database path for ephemeral databases
Installation
# CLI
curl -s https://install.ladybugdb.com | bash # Linux
brew install ladybug # macOS
# Python
pip install real_ladybug
# Node.js
npm install @ladybugdb/core
CLI basics
lbug mydb.lbug # open/create on-disk DB
lbug # in-memory (ephemeral)
lbug mydb.lbug < schema.cypher # batch mode
Key shell commands: :schema (show tables), :help, :quit, :mode [json|csv|markdown|...]
Reference files
Load only the sections you need:
| File | Contents |
|---|---|
references/cypher-reference.md |
DDL, DML, MATCH queries, transactions, macros, LadybugDB vs Neo4j differences |
references/python.md |
Python (real_ladybug) — connection, query, DataFrame, transactions |
references/nodejs.md |
Node.js (@ladybugdb/core) — connection, query, streaming, transactions |
references/java.md |
Java — Maven setup, connection, query, transactions |
references/rust.md |
Rust — Cargo setup, connection, query, Value types |
references/go.md |
Go — module setup, connection, query, transactions |
references/swift.md |
Swift — SPM setup, connection, query, async/await |
references/import.md |
COPY FROM, LOAD FROM, DataFrame import, cloud storage, performance tips |
references/export.md |
COPY TO, DataFrame export (pandas/polars/arrow), DuckDB export |
references/graph-algorithms.md |
PageRank, Louvain, WCC, SCC, K-Core, shortest paths — PROJECT_GRAPH |
references/vector-search.md |
HNSW index, CREATE/QUERY/DROP_VECTOR_INDEX, RAG pattern |
references/full-text-search.md |
BM25, CREATE/QUERY/DROP_FTS_INDEX, stemmers |
references/llm-embeddings.md |
CREATE_EMBEDDING — OpenAI, Ollama, Google, Bedrock, Voyage AI |
references/attach.md |
ATTACH/DETACH — PostgreSQL, DuckDB, SQLite, Delta Lake, Iceberg, Neo4j |
references/cli.md |
lbug shell flags, commands, output modes, batch/scripting mode |
references/explorer.md |
Ladybug Explorer Docker GUI — launch, env vars, volume mount |
Common task routing
| Task | Read |
|---|---|
| Schema design, Cypher queries, differences from Neo4j | cypher-reference.md |
| Python integration | python.md |
| Node.js / TypeScript integration | nodejs.md |
| Java integration | java.md |
| Rust integration | rust.md |
| Go integration | go.md |
| Swift / iOS / macOS integration | swift.md |
| Bulk import — COPY FROM, LOAD FROM, DataFrames, cloud storage | import.md |
| Bulk export — COPY TO, DataFrame export, DuckDB | export.md |
| PageRank, Louvain, WCC, SCC, K-Core, shortest paths | graph-algorithms.md |
| HNSW vector similarity search, RAG | vector-search.md |
| Full-text search (BM25) | full-text-search.md |
| LLM embeddings (OpenAI, Ollama, Bedrock…) | llm-embeddings.md |
| ATTACH to PostgreSQL, DuckDB, Delta Lake, Neo4j | attach.md |
| CLI shell, batch scripts | cli.md |
| Ladybug Explorer browser GUI (Docker) | explorer.md |
Key gotchas
SET n.prop = NULLto remove a property (notREMOVE)label(n)notlabels(n);id(n)notelementId(n)UNWINDinstead ofFOREACH- List functions use
list_prefix:list_concat,list_sort, etc. - Variable-length paths must have an upper bound (default 30):
[:Follows*1..5] LOAD FROM(notLOAD CSV FROM) — supports CSV, Parquet, JSON, DataFrames- No manual index creation — primary key index is automatic; use FTS/vector extensions for search