Content-defined identities
Versioned hashes separate canonical chunk content from source offsets and embedding-model identity.
Steadlith combines content-defined chunk identities, cache-aware planning, and transactional updates so every revision becomes an explicit, inspectable index operation.
python -m pip install steadlithInstall the current release from PyPI.
WHY STEADLITH
Offset-based chunking can shift downstream boundaries after an early insertion, changing hashes for content that is otherwise unchanged. Steadlith places candidate boundaries from a rolling fingerprint over normalized words, then compares versioned manifests to classify what changed.
A focused indexing layer, not another RAG framework. Steadlith sits below orchestration libraries and above embedding and vector providers.
Versioned hashes separate canonical chunk content from source offsets and embedding-model identity.
Preview add, keep, move, and delete operations without writing state or calling a provider.
Apply one validated SQLite snapshot. Removed occurrences become inactive tombstones immediately.
Manifests, Merkle roots, generation checks, and record digests make committed state explicit.
ARCHITECTURE
Chunking and content identity stay deterministic. Files, credentials, providers, and databases enter only through explicit application boundaries.
Normalize words and select rolling Rabin fingerprint boundaries.
Hash canonical content with versioned normalization and chunking parameters.
Compare manifests and price only known embedding cache misses.
Reuse vectors, embed misses, tombstone removals, and commit atomically.
CLI WORKFLOW
The starter config uses deterministic local lexical embeddings, so indexing and keyword retrieval work without credentials or network access.
# create a local configuration
steadlith init
# inspect before any write
steadlith plan
steadlith index
steadlith status
steadlith query "release policy"
steadlith verifyPositional paths describe the complete desired corpus, not additions. Prefer committed source globs and inspect the plan before applying changes.
OPERATIONAL SAFETY
plan is the safe entry point: it makes no writes and sends no content to an embedding provider.
Optional providers require --allow-network.
Deleting plans require --allow-delete; emptying an index also requires --allow-empty.
Paths and resolved symlinks must stay inside the configuration directory.
Unsigned cache imports require --trust-source; compaction supports dry run.
CURRENT SUPPORT
The reference path is implemented end to end. Additional backends are not presented as supported until they pass the shared adapter conformance suite.
HONEST LIMITATIONS
TTTD v1 is regression-tested for churn, but it does not claim a universal fixed-distance locality proof.
The stateful fallback can remain out of phase until a common primary boundary. Steadlith keeps the counterexample as a regression and reports measured churn instead of turning an empirical result into a theorem.
Across the bundled five-corpus benchmark, default CDC re-embeds 32.7% of revised chunks versus 53.3% for fixed chunking, with recall@5 of 1.0 under both offline scorers. Structural snapping remains opt-in and requires project-specific review.
APACHE-2.0 OPEN SOURCE
Start offline, inspect the delta, then measure churn and retrieval quality before connecting a paid provider.