SensibleDB
Embedded Graph-Vector Database for AI Applications
SensibleDB is a unified database that makes it easy to build all the components needed for an AI application in a single platform. You no longer need a separate application DB, vector DB, graph DB, or application layers managing multiple storage locations.
Built in Rust with LMDB as its storage engine — like SQLite for knowledge graphs.
Choose Your Path
| I want to... | Start here |
|---|---|
| Organize my personal documents and search through them using AI | SensibleDB Explorer — Desktop app for non-technical users |
| Build AI applications with a knowledge base | CLI Quick Start — For developers |
| Store memory for AI agents | Embedded Mode — For Rust developers |
SensibleDB Explorer — Your Personal Knowledge App
For non-technical users who want to organize and search their personal documents.
Why SensibleDB Explorer?
- 100% Local-First — Your documents never leave your computer. No cloud, nothing sent externally.
- Works Offline — Disconnect your internet and keep using the app.
- Chat with Your Documents — Ask questions in plain English, get answers from your files.
Get Started
- Download SensibleDB Explorer for macOS
- Launch the app
- Click "Add Folder" → select your documents folder
- Start chatting!
CLI Quick Start — For Developers
1. Install the CLI (build from source)
git clone https://github.com/Sensible-Analytics/SensibleDB.git
cd SensibleDB
cargo install --path sensibledb-cli
Note: The install script is temporarily unavailable. Use source build above.
2. Initialize a Project
3. Write Your Schema & Queries
Open the generated .hx file and define your schema:
N::User {
INDEX name: String,
age: U32
}
E::FRIENDS {
from: User,
to: User
}
QUERY getUser(user_name: String) =>
user <- N<User>({name: user_name})
RETURN user
QUERY getFriends(user_id: U64) =>
user <- N<User>({id: user_id})
friends <- TRAVERSE user -[FRIENDS]-> friend
RETURN friend
4. Deploy
5. Use in Your Application
TypeScript (use HTTP directly):
// SDK coming soon - use HTTP for now
const response = await fetch("http://localhost:6969/getUser", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ user_name: "John" })
});
const user = await response.json();
Python (use requests directly):
import requests
response = requests.post(
"http://localhost:6969/getUser",
json={"user_name": "John"}
)
user = response.json()
print(user)
Note: TypeScript and Python SDKs are in development. Track progress on GitHub.
Embedded Mode — For Rust Developers
For full control, embed SensibleDB directly in your application:
use sensibledb_db::embedded::{Database, Node};
let db = Database::open("./my_db")?;
let mut tx = db.write_transaction()?;
tx.put_node(Node {
id: 1,
label: "User".into(),
})?;
tx.commit()?;
Key Features
- 100% Local-First — Runs entirely on your machine, no external calls
- Built-in Embeddings — Vectorize text directly in queries with
Embed() - RAG Tooling — Vector search, keyword search, and graph traversals out of the box
- Secure by Default — Private by default; access only through compiled SensibleQL queries
- Ultra-Low Latency — Rust + LMDB storage engine for extreme performance
- Type-Safe Queries — SensibleQL is 100% type-safe, catch errors at compile time
- MCP Ready — (Coming Soon) Connect AI agents via MCP server
Documentation
| Section | Description |
|---|---|
| Getting Started | Installation and setup |
| SensibleQL | Query language reference |
| CLI | Command-line tool guide (called "nexus") |
| SDKs | TypeScript, Python, and Rust SDKs |
| Features | Full feature overview |
| Programming Interfaces | Rust embedded API in 5 minutes |