rlm-cli 1.2.4

Recursive Language Model (RLM) REPL for Claude Code - handles long-context tasks via chunking and recursive sub-LLM calls
Documentation
[package]
name = "rlm-cli"
version = "1.2.4"
edition = "2024"
rust-version = "1.88"
description = "Recursive Language Model (RLM) REPL for Claude Code - handles long-context tasks via chunking and recursive sub-LLM calls"
license = "MIT"
authors = ["zircote"]
repository = "https://github.com/zircote/rlm-rs"
homepage = "https://github.com/zircote/rlm-rs"
documentation = "https://docs.rs/rlm-cli"
readme = "README.md"
keywords = ["llm", "claude", "recursive", "language-model", "repl"]
categories = ["command-line-utilities", "text-processing"]

[lib]
name = "rlm_rs"
path = "src/lib.rs"

[[bin]]
name = "rlm-cli"
path = "src/main.rs"

[dependencies]
# Core dependencies
thiserror = "2.0.17"
anyhow = "1.0.100"

# CLI
clap = { version = "4.5", features = ["derive", "cargo", "env"] }

# Database
rusqlite = { version = "0.38", features = ["bundled", "modern_sqlite"] }

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

# Text processing
unicode-segmentation = "1.12"
regex = "1.11"

# I/O
memmap2 = "0.9"

# Parallel processing
rayon = "1.10"

# FastEmbed for semantic embeddings (optional - fallback to hash-based if not available)
# Use rustls instead of native-tls (openssl) for TLS
fastembed = { version = "5", optional = true, default-features = false, features = ["ort-download-binaries", "hf-hub-rustls-tls"] }

# usearch HNSW vector search (optional - BM25-only fallback if not available)
# Using git branch with move semantics fix until PR #704 is merged
# See: https://github.com/unum-cloud/usearch/pull/704
usearch = { version = "2.23", git = "https://github.com/madmax983/USearch.git", branch = "fix/rust-move-semantics", optional = true }

[dev-dependencies]
# Testing
proptest = "1.9.0"
test-case = "3.3.1"
tempfile = "3.13"
assert_cmd = "2.0"
predicates = "3.1"

# Benchmarking
criterion = "0.8"

# [[bench]]
# name = "chunking"
# harness = false

[profile.dev]
# Faster compile times during development
debug = 1
opt-level = 0

[profile.release]
# Optimize for size and speed
opt-level = 3
lto = "thin"
codegen-units = 1
panic = "abort"
strip = true

[profile.release-debug]
inherits = "release"
debug = true
strip = false

[lints.rust]
# Enable additional warnings
unsafe_code = "warn"
missing_docs = "warn"
rust_2024_compatibility = "warn"

[lints.clippy]
# Deny all warnings in CI
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }

# Allow multiple crate versions (transitive deps from fastembed we can't control)
multiple_crate_versions = "allow"

# Specific lints to deny
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"
todo = "deny"
unimplemented = "deny"
dbg_macro = "deny"
print_stdout = "deny"
print_stderr = "deny"

# Allow in certain contexts (can be overridden per-module)
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
redundant_pub_crate = "allow"

[features]
default = ["fastembed-embeddings"]
# FastEmbed semantic embeddings (ONNX-based, all-MiniLM-L6-v2, 384 dimensions)
fastembed-embeddings = ["dep:fastembed"]
# usearch HNSW vector search (native implementation)
usearch-hnsw = ["dep:usearch"]
# Full semantic search (embeddings + vector search)
full-search = ["fastembed-embeddings", "usearch-hnsw"]