helix-db
HelixDB/helix-db
HelixDB: an OLTP graph-vector database built in Rust for AI applications.
Overview
HelixDB is a graph-plus-vector database designed to simplify the development of AI applications by integrating multiple data storage types into a single platform, enabling easy management and access to various forms of company data. It supports key-value pairs, documents, relational data alongside its primary graph and vector models, providing an all-in-one solution.
Categories
Tags
Similar tools
transformers
huggingface/transformers
🤗 Transformers: the model-definition framework for state-of-the-art machine learning models
langflow
langflow-ai/langflow
Langflow is a powerful platform for building and deploying AI-powered agents and workflows.
firecrawl
firecrawl/firecrawl
The API to search, scrape, and interact with the web at scale.
PaddleOCR
PaddlePaddle/PaddleOCR
PaddleOCR: A powerful OCR toolkit for transforming PDFs/images into structured data
graphify
Graphify-Labs/graphify
AI coding assistant skill that transforms various file types into a queryable knowledge graph
worldmonitor
koala73/worldmonitor
Real-time global intelligence dashboard.
Install
cargo add helix-dbREADME
HelixDB: a graph-vector database for knowledge graphs and AI memory. Built from scratch in Rust.
website | docs | discord | X/twitter
HelixDB is a database that makes it easy to build all the components needed for AI applications in a single platform.
You don't need a separate application DB, relational DB, vector DB, graph DB, or application layers to manage the multiple storage locations. HelixDB gives your agents federated access to company data, for memory, company brains, and applications.
Helix primarily operates with a graph + vector data model, but it also supports KV, documents, and relational data.
Getting Started
1. Install the CLI
The Helix CLI runs and manages local instances and talks to Helix Cloud.
curl -sSL "https://install.helix-db.com" | bash
Already installed? Update to the latest version with helix update.
2. The quickest path — helix chef
helix chef is an interactive, one-shot bootstrapper. It installs the HelixDB query skills and docs MCP, scaffolds a project, starts a local instance, seeds some example data, and writes a HELIX_CHEF_PROMPT.md. If a coding agent is available (Claude Code, Codex, or OpenCode), it can hand off and build a working app — frontend and all — from a one-line description of what you want.
helix chef
That's it — no flags. Answer "what do you want to build?" and follow the prompts.
3. Manual local setup
If you'd rather wire things up yourself:
- Initialize a project. This scaffolds
helix.toml, a.helix/workspace dir, and a ready-to-runexamples/request.json.
mkdir my-helix-app && cd my-helix-app
helix init
- Start a local instance. Runs a background container on port
6969and waits until it accepts queries.
helix start dev
⚠️ The default storage mode is in-memory — stopping the instance wipes its data. Use
helix start dev --diskto persist data across restarts, or--foregroundto stream logs.
- Send a query.
helix query dev --file examples/request.json
- Stop the instance when you're done.
helix stop dev
Writing queries with the SDKs
Queries are authored with the Rust, TypeScript, Go, or Python DSL and sent straight to a running instance as dynamic requests against POST /v1/query — no build or deploy step. The SDKs produce the same JSON AST. The examples below talk to a local instance on http://localhost:6969 (the default helix start dev port). See the Querying Guide for the full builder catalog and the dynamic-query wire format.
Rust
Install the crate (published as helix-db, imported as helix_db):
cargo init && cargo add helix-db tokio sonic-rs
Define your queries as #[register] functions, then run them directly through the client:
use helix_db::Client;
use helix_db::dsl::prelude::*;
#[register]
pub fn add_user(name: String) {
write_batch()
.var_as(
"user",
g().add_n("User", vec![("name", name)])
.value_map(None::<Vec<String>>),
)
.returning(["user"])
}
#[register]
pub fn get_user(name: String) {
read_batch()
.var_as(
"user",