HelixDB is a high-performance graph-vector database built in Rust, optimized for RAG and AI applications. It combines graph traversals, vector similarity search, and full-text search in a single database.
We welcome contributions from the community! This guide will help you get started with contributing to HelixDB.
- Check existing GitHub Issues to avoid duplicates
- Use a clear, descriptive title
- Include steps to reproduce for bugs
- Provide system information (OS, Rust version, HelixDB version)
- Add relevant logs or error messages
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/helix-db.git cd helix-db - Create a feature branch from
main:git checkout -b feature/your-feature-name
- Make your changes following our coding guidelines
- Commit your changes with clear, descriptive commit messages:
git commit -m "feat: add new feature description" - Push to your fork:
git push origin feature/your-feature-name
- Open a Pull Request against the
mainbranch - Respond to feedback from reviewers
- Link related issues in the PR description
- Ensure all tests pass
- Add tests for new features
- Update documentation if needed
- Keep PRs focused on a single feature or fix
- Write clear commit messages following conventional commits format
- Rust: 1.75.0 or later (install via rustup)
- Cargo: Comes with Rust
- Git: For version control
- cargo-watch: For development auto-reloading
- cargo-nextest: Faster test runner
- rust-analyzer: IDE support
-
Clone the repository:
git clone https://github.com/HelixDB/helix-db.git cd helix-db -
Build all components:
cargo build
-
Build in release mode (optimized):
cargo build --release
The Cargo workspace members are helix-cli, metrics, and sdks/rust:
- CLI:
cargo build -p helix-cli - Metrics:
cargo build -p helix-metrics - Rust DSL SDK:
cargo build -p helix-db(the SDK crate insdks/rust; docs at docs.rs/helix-db)
The TypeScript SDK (sdks/typescript) and Go SDK (sdks/go) build with their own toolchains (npm, go).
-
Install the CLI (development version):
cargo install --path helix-cli
-
Initialize a test project:
mkdir test-project && cd test-project helix init
-
Start a local instance (Docker/Podman container):
helix start dev
-
Send a query:
helix query dev --file examples/request.json
This repository contains the user-facing tooling for HelixDB: the CLI, the client SDKs, and metrics. The database engine itself runs inside the enterprise-dev container image that the CLI pulls and manages — it is not built from this repo. The root holds helix-cli/, sdks/, metrics/, and assets/.
User-facing CLI for managing HelixDB instances and deployments.
Directory Structure:
helix-cli/
├── src/
│ ├── commands/ # CLI command implementations (one module per subcommand)
│ │ ├── logs/ # Local + Enterprise Cloud log viewing
│ │ ├── add.rs # Add a local or Enterprise Cloud instance
│ │ ├── auth.rs # Enterprise Cloud auth (login/logout/create-key)
│ │ ├── chef.rs # Bootstrap a first Helix app for a coding agent
│ │ ├── config.rs # workspace/project/cluster config (hidden parent)
│ │ ├── dashboard.rs # Launch the Helix Dashboard
│ │ ├── delete.rs # Delete an instance and its local state
│ │ ├── enterprise_deploy.rs # Enterprise Cloud deploy helpers
│ │ ├── feedback.rs # Send feedback to the Helix team
│ │ ├── init.rs # Initialize a v2 project
│ │ ├── metrics.rs # Metrics configuration
│ │ ├── prune.rs # Prune local containers/workspaces
│ │ ├── push.rs # Deploy an Enterprise Cloud instance
│ │ ├── query.rs # Send a dynamic query to POST /v1/query
│ │ ├── restart.rs # Restart a background local instance
│ │ ├── start.rs # Start a local instance (alias: run)
│ │ ├── status.rs # Instance status
│ │ ├── stop.rs # Stop a background local instance
│ │ ├── sync.rs # Sync Enterprise Cloud metadata into helix.toml
│ │ └── update.rs # Self-update the CLI
│ ├── config.rs # helix.toml + ~/.helix config management
│ ├── enterprise_cloud.rs # Enterprise Cloud REST types and fetchers
│ ├── errors.rs # Error handling
│ ├── lib.rs # Library interface + subcommand enums
│ ├── local_runtime.rs # Docker/Podman container lifecycle
│ ├── main.rs # Entry point + clap command definitions
│ ├── metrics_sender.rs # Metrics collection
│ ├── output.rs # Terminal output / verbosity helpers
│ ├── port.rs # Port availability helpers
│ ├── project.rs # Project context + helix.toml discovery
│ ├── prompts.rs # Interactive cliclack prompts
│ ├── setup.rs # Shared init/chef setup helpers
│ ├── sse_client.rs # Server-sent-event client (auth/deploy/logs)
│ ├── ts_query.rs # TypeScript DSL query evaluation
│ ├── update.rs # Self-update functionality
│ └── utils.rs # Utilities
Available Commands:
helix init- Initialize a v2 Helix projecthelix chef(aliascook) - Bootstrap a first Helix app for a coding agenthelix add- Add a local or Enterprise Cloud instance to a projecthelix start(aliasrun) - Start a local instance in the backgroundhelix stop- Stop a background local instancehelix restart- Restart a background local instancehelix status- Show local and Enterprise Cloud instance statushelix logs- View logs for a local or Enterprise Cloud instancehelix query- Send a dynamic query toPOST /v1/queryhelix push- Deploy an Enterprise Cloud instancehelix auth- Enterprise Cloud authentication (login/logout/create-key)helix workspace- Manage the active Enterprise Cloud workspacehelix project- Manage the linked Enterprise Cloud projecthelix cluster- List and inspect Enterprise Cloud clustershelix sync- Sync Enterprise Cloud metadata intohelix.tomlhelix prune- Prune local containers/workspaceshelix delete- Delete an instance fromhelix.tomland local statehelix metrics- Configure metrics collection (full/basic/off/status)helix dashboard- Launch the Helix Dashboard (start/stop/status)helix update- Update the CLI to the latest versionhelix feedback- Send feedback to the Helix team
Deployment Targets:
- Local Docker/Podman containers (
helix start) — imageghcr.io/helixdb/enterprise-dev - Helix Cloud (managed Enterprise hosting) via
helix push
Build & Deploy Flow:
The v3 CLI is a runtime orchestrator — there is no helix compile/helix check step and no .hx query files.
- Scaffold a project with
helix init(writeshelix.tomland a.helix/workspace). - Start a local instance with
helix start— a Docker/Podman container running theenterprise-devimage (in-memory by default, on-disk with--disk). - Author queries with the Rust, TypeScript, Go, or Python DSL; they serialize to JSON "dynamic queries".
- Send queries to a running instance via
POST /v1/query(helix query); validation happens server-side. - For production, deploy an Enterprise Cloud instance with
helix push, managing auth/metadata viahelix auth,helix sync, and theworkspace/project/clustercommands.
Client libraries that build HelixDB queries and send them to a running instance.
rust/- Rust DSL builder (cratehelix-db), with thehelix-dsl-macrosprocedural-macro cratetypescript/- TypeScript DSL (@helix-db/helix-db)go/- Go client and DSLpython/- Python client and DSL (helix-db, imported ashelixdb)tests/- Cross-SDK parity tests and metadata registration tests
The helix-metrics crate used by the CLI for telemetry collection.
Logos and images used in the README and docs.
Queries are authored with the Rust, TypeScript, Go, or Python DSL (in sdks/) and serialized to JSON "dynamic queries" sent to a running instance. The legacy HelixQL .hx form below is still supported for reference and translation:
QUERY addUser(name: String, age: I64) =>
user <- AddN<User({name: name, age: age})
RETURN user
- Nodes (N::) - Graph vertices with properties
- Edges (E::) - Relationships between nodes
- Vectors (V::) - High-dimensional embeddings
- Graph traversals:
In,Out,InE,OutE - Vector search: HNSW-based similarity search
- Text search: BM25 full-text search
- CRUD:
AddN,AddE,Update,Drop
- Definition: Author queries with a Rust, TypeScript, Go, or Python DSL
- Serialization: The DSL produces a JSON dynamic-query AST (
POST /v1/querybody) - Execution: Send to a running instance with
helix query; the gateway validates and runs it server-side - Storage: LMDB handles persistence with ACID guarantees
- Prefer functional patterns (pattern matching, iterators, closures)
- Document code inline - no separate docs needed
- Minimize dependencies
- Use asserts liberally in production code
Run Clippy to check code quality:
./clippy_check.shThe clippy_check.sh script at the repository root runs cargo clippy --workspace -- -D warnings, treating all warnings as errors across every workspace crate.
Tests live alongside the code in each crate and SDK:
CLI Tests (helix-cli)
- Inline
#[cfg(test)]modules throughouthelix-cli/src/ - clap argument-parsing tests in
src/main.rs(every command/flag combo) - Config (de)serialization and backward-compat defaults in
src/config.rs chefprompt rendering, agent-priority, and stream-json parsing insrc/commands/chef.rs
SDK Tests (sdks/)
sdks/rust/- Rust DSL unit tests (cargo test -p helix-db)sdks/typescript/- TypeScript DSL tests (run withnpm test)sdks/go/- Go DSL tests (go test ./...)sdks/tests/- Cross-SDK parity tests and metadata registration tests
# Run all Rust workspace tests
cargo test --workspace
# Run specific crate tests
cargo test -p helix-cli
cargo test -p helix-db # Rust SDK in sdks/rust
# TypeScript SDK
cd sdks/typescript && npm test
# Go SDK
cd sdks/go && go test ./...Format and lint before opening a PR: cargo fmt and ./clippy_check.sh.
- Write tests for all new features
- Include both positive and negative test cases
- Ensure tests pass locally before opening PR
- Currently 1000x faster than Neo4j for graph operations
- On par with Qdrant for vector search
- LMDB provides memory-mapped performance
- Discord: Join our Discord community for real-time discussions, questions, and support
- GitHub Issues: Report bugs or request features at github.com/HelixDB/helix-db/issues
- Documentation: Check docs.helix-db.com for comprehensive guides
- Twitter/X: Follow @helixdb for updates and announcements
- Search existing GitHub issues and Discord for similar questions
- Check the documentation for relevant guides
- Try to create a minimal reproducible example
- Include error messages, logs, and system information
- Be respectful and constructive
- Help others when you can
- Share your use cases and learnings
- Follow our Code of Conduct
- Correctness: Does the code work as intended?
- Tests: Are there adequate tests? Do they pass?
- Code style: Does it follow Rust and HelixDB conventions?
- Performance: Are there obvious performance issues?
- Documentation: Are complex parts explained?
- Scope: Is the PR focused on a single feature/fix?
- Failing tests or CI checks
- No tests for new functionality
- Breaks existing functionality
- Code style violations
- Too broad in scope (mixing multiple unrelated changes)
- Missing documentation for complex features
- Performance regressions without justification
- Address all reviewer comments
- Ask for clarification if feedback is unclear
- Make requested changes in new commits (don't force push during review)
- Mark conversations as resolved after addressing them
- Be patient and respectful - reviewers are volunteers
- Initial response: Usually within 2-3 days
- Follow-up reviews: 1-2 days after updates
- Complex PRs may take longer
- Feel free to ping on Discord if your PR hasn't been reviewed after a week
- Install CLI:
curl -sSL "https://install.helix-db.com" | bash - Initialize project:
helix init --path <path> - Start a local instance:
helix start dev - Author queries with the Rust or TypeScript DSL (see
sdks/) - Send a query:
helix query dev --file examples/request.json
AGPL (Affero General Public License)
For commercial support: founders@helix-db.com