The Problem

Building AI applications typically requires stitching together separate databases—relational, vector, and graph—each with its own query language, operational model, and data duplication. HelixDB addresses this by unifying these data models into a single storage engine, reducing the operational complexity of managing multiple systems for knowledge graphs, AI memory, and application data.

What This Does

HelixDB is a graph-vector database built from scratch in Rust, designed to serve as a unified platform for AI applications. It supports graph, vector, KV, document, and relational data models within one engine. The repository includes a CLI (crates/cli/src/main.rs), SDKs for Rust, TypeScript, Python, and Go (sdks/), and a query AST shared across all clients (crates/ast/src/lib.rs).

The project provides a helix chef command that bootstraps a full application—scaffolding, local instance, seed data, and optional handoff to coding agents like Claude Code or Codex. The core storage layer runs on object storage (S3-compatible), with an in-memory mode for development.

How It Is Wired

This is a collection of six self-contained projects, not a single codebase. The main components are:

  • crates/ (1532 files): Core database engine, planner, and CLI
  • sdks/ (76 files): TypeScript, Python, Go client libraries
  • bindings/ (18 files): UniFFI bindings for cross-language support
  • tools/, scripts/, docker-image/: Supporting utilities and containerization

The CLI entry point is crates/cli/src/main.rs, which routes to helix init, helix start, and helix query commands. Queries are authored as DSLs in each SDK, serialized to a shared JSON AST, and sent to a running instance via POST /v2/query. The Python SDK (sdks/python/src/helixdb/client.py) shows a circular import cycle with helixdb/__init__ and async_client, making changes to those modules riskier.

The TypeScript SDK (sdks/typescript/src/index) is the most-connected module (10 importers), meaning changes there have the widest blast radius across SDK consumers.

How To Use It

# Install CLI
curl -sSL "https://install.helix-db.com" | bash

# Quick start
helix chef

# Manual setup
helix init
helix start dev
helix query dev --file examples/request.json
helix stop dev

Default storage is in-memory (data wiped on stop). Use --disk or --storage-uri s3://... for persistence. SDKs connect to http://localhost:6969 by default.

Real-World Use

A company building an AI assistant with company knowledge could use HelixDB to store employee records (relational), document embeddings (vector), and organizational relationships (graph) in one system. The assistant queries across all models in a single request, eliminating data synchronization between separate stores.

Code Health & Issues

Static analysis identified 392 findings (72 high, 320 medium) across four categories:

  • High - Import cycle in Python SDK: sdks/python/src/helixdb/client.py participates in circular imports with __init__ and async_client. Fix: extract shared types or defer imports.
  • High - Deep nesting (57 instances): crates/planner/src/planning/selected/native/scoped/control_flow/tests.rs reaches indentation depth 10. Fix: use early returns and guard clauses.
  • High - Duplicated code: 127 repeated 6-line blocks across 78 files in crates/db/fuzz/fuzz_targets/. Fix: extract shared helpers.
  • Medium - File handles without context managers: sdks/python/src/helixdb/client.py uses bare open() calls.

SDLC observations:

  • High - Third-party GitHub Actions pinned to tags, not commit SHAs (supply-chain risk)
  • Medium - No dependency update bot configured
  • Medium - No vulnerability scan gate in CI
  • Medium - persist-credentials: false not set on checkout

The Bottom Line

HelixDB is a serious, well-structured database project with real engineering depth—the Rust core, unified query AST, and multi-SDK support are substantial. It's early-stage (no stars, in-memory default) but the architecture is sound. Teams building AI applications that need unified graph+vector storage should evaluate it; those needing production stability should wait for maturity.