Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,421 changes: 714 additions & 707 deletions Cargo.lock

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,15 @@ HelixDB primarily operates with a graph + vector data model, but it can also sup

Start by installing the Helix CLI tool to deploy Helix locally.

> **Building from Source without OpenSSL**: If you prefer to build HelixDB without OpenSSL dependencies using pure Rust TLS (rustls), use the `rustls-tls` feature flag:
> ```bash
> # For helix-cli
> cd helix-cli && cargo build --no-default-features --features normal-rustls
> # For helix-db
> cd helix-db && cargo build --no-default-features --features server,rustls-tls
> ```
> Note: Self-update functionality is not available when built with rustls.

1. Install CLI

```bash
Expand Down
15 changes: 10 additions & 5 deletions helix-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ version = "2.0.5"
edition = "2024"

[dependencies]
helix-metrics = { path = "../metrics" }
helix-db = { path = "../helix-db" }
helix-metrics = { path = "../metrics", default-features = false }
helix-db = { path = "../helix-db", default-features = false }
clap = { version = "4.5.47", features = ["derive"] }
serde = { version = "1.0.219", features = ["derive"] }
tokio = { version = "1.47.1", features = ["full"] }
eyre = "0.6.12"
toml = "0.9.5"
dirs = "6.0.0"
reqwest = { version = "0.12.23", features = ["json"] }
reqwest = { version = "0.12.23", default-features = false }
serde_json = "1.0.143"
color-eyre = "0.6.5"
async-trait = "0.1.89"
iota = "0.2.3"
self_update = "0.42.0"
self_update = { version = "0.42.0", optional = true }
uuid = { version = "1.18.1", features = ["v4", "v6", "fast-rng"] }
chrono = "0.4.42"
flume = "0.11.1"
Expand All @@ -30,6 +30,11 @@ name = "helix"
path = "src/main.rs"

[features]
normal = ["helix-db/server"]
# TLS features
rustls-tls = ["reqwest/rustls-tls-webpki-roots", "reqwest/json", "helix-db/rustls-tls", "helix-metrics/rustls-tls", "helix-db/server"]
default-tls = ["reqwest/default-tls", "reqwest/json", "helix-db/default-tls", "helix-metrics/default-tls", "self_update"]

normal = ["helix-db/server-default-tls", "default-tls"]
normal-rustls = ["helix-db/server", "rustls-tls"]
ingestion = ["helix-db/full"]
default = ["normal"]
30 changes: 25 additions & 5 deletions helix-cli/src/commands/update.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
use eyre::Result;

#[cfg(feature = "self_update")]
use self_update::cargo_crate_version;

#[cfg(feature = "self_update")]
use crate::utils::{print_error_with_hint, print_status, print_success};

pub async fn run(force: bool) -> Result<()> {
// We're using the self_update crate which is very handy but doesn't support async.
// Still, this is good enough, but because it panics in an async context we must
// do a spawn_blocking
tokio::task::spawn_blocking(move || run_sync(force)).await?
#[cfg(not(feature = "self_update"))]
use crate::utils::print_error_with_hint;

pub async fn run(_force: bool) -> Result<()> {
#[cfg(feature = "self_update")]
{
// We're using the self_update crate which is very handy but doesn't support async.
// Still, this is good enough, but because it panics in an async context we must
// do a spawn_blocking
tokio::task::spawn_blocking(move || run_sync(_force)).await?
}

#[cfg(not(feature = "self_update"))]
{
print_error_with_hint(
"Self-update is not available in this build",
"This binary was built with rustls-tls feature which doesn't support self-update. \
Please update manually or rebuild with default features.",
);
Err(eyre::eyre!("Self-update not available"))
}
}

#[cfg(feature = "self_update")]
fn run_sync(force: bool) -> Result<()> {
print_status("UPDATE", "Checking for updates...");

Expand Down
5 changes: 4 additions & 1 deletion helix-container/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2024"

[dependencies]
helix-db = { path = "../helix-db" }
helix-db = { path = "../helix-db", default-features = false }
helix-macros = { path = "../helix-macros" }

inventory = "0.3.16"
Expand All @@ -24,3 +24,6 @@ dotenvy = "0.15.7"

[features]
dev = ["helix-db/dev-instance"]
rustls-tls = ["helix-db/rustls-tls", "helix-db/server"]
default-tls = ["helix-db/default-tls", "helix-db/server-default-tls"]
default = ["default-tls"]
17 changes: 10 additions & 7 deletions helix-db/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ repository = "https://github.com/HelixDB/helix-db"
[dependencies]
# HelixDB dependencies
helix-macros = { path = "../helix-macros" }
helix-metrics = { path = "../metrics" }
helix-metrics = { path = "../metrics", default-features = false }

# external dependencies
tokio = { version = "1.44.2", features = ["full"] }
Expand All @@ -35,10 +35,7 @@ pest = { version = "2.7", optional = true }
pest_derive = { version = "2.7", optional = true }

# embedding dependencies
reqwest = { version = "0.12.15", features = [
"json",
"blocking",
], optional = true }
reqwest = { version = "0.12.15", default-features = false, optional = true }
url = { version = "2.5", optional = true }
tokio-util = { version = "0.7.15", features = ["compat"] }
axum = "0.8.4"
Expand All @@ -61,13 +58,19 @@ compiler = ["pest", "pest_derive"]
# vector features
cosine = []

# TLS features
rustls-tls = ["reqwest?/rustls-tls-webpki-roots", "reqwest?/json", "reqwest?/blocking", "helix-metrics/rustls-tls"]
default-tls = ["reqwest?/default-tls", "reqwest?/json", "reqwest?/blocking", "helix-metrics/default-tls"]

build = ["compiler"]
vectors = ["cosine", "url"]
server = ["build", "compiler", "vectors", "reqwest"]
server-rustls-tls = ["server", "rustls-tls"]
server-default-tls = ["server", "default-tls"]
full = ["build", "compiler", "vectors"]
dev = ["debug-output", "server"]
dev = ["debug-output", "server-default-tls"]
dev-instance = []
default = ["server"]
default = ["server-default-tls"]

# benches/tests
[[test]]
Expand Down
6 changes: 3 additions & 3 deletions hql-tests/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ path = "src/main.rs"
tokio = { version = "1.0", features = ["full"] }
clap = { version = "4.0", features = ["derive"] }
anyhow = "1.0"
futures = "0.3"
octocrab = "0.44.1"
futures = "0.3"
octocrab = { version = "0.44.1", default-features = false, features = ["rustls"] }
serde = { version = "1.0", features = ["derive"] }
sha2 = "0.10"
base64 = "0.22"
base64 = "0.22"
9 changes: 7 additions & 2 deletions metrics/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@ license = "AGPL-3.0"
description = "Metrics for HelixDB"

[dependencies]
reqwest = "0.12.11"
reqwest = { version = "0.12.11", default-features = false }
serde = { version = "1.0", features = ["derive"] }
sonic-rs = "0.5.3"
chrono = "0.4"
uuid = { version = "1.18.0", features = ["v7", "fast-rng"] }
tokio = { version = "1.39", features = ["full"] }
async-trait = "0.1.88"
flume = "0.11.1"
flume = "0.11.1"

[features]
rustls-tls = ["reqwest/rustls-tls-webpki-roots", "reqwest/json"]
default-tls = ["reqwest/default-tls", "reqwest/json"]
default = ["default-tls"]