| Crates.io | embeddenator-fs |
| lib.rs | embeddenator-fs |
| version | 0.22.0 |
| created_at | 2026-01-09 22:21:06.849516+00 |
| updated_at | 2026-01-25 18:36:41.950093+00 |
| description | EmbrFS: FUSE filesystem backed by holographic engrams |
| homepage | |
| repository | https://github.com/tzervas/embeddenator-fs |
| max_upload_size | |
| id | 2032998 |
| size | 649,218 |
A holographic filesystem implementation using Vector Symbolic Architecture (VSA) for encoding entire directory trees into high-dimensional sparse vectors with bit-perfect reconstruction guarantees.
Independent component extracted from the Embeddenator monolithic repository. Part of the Embeddenator workspace.
Repository: https://github.com/tzervas/embeddenator-fs
Status: Alpha - Core functionality complete, API may change. Suitable for experimental use and research.
EmbrFS (Embeddenator Filesystem) is a novel approach to filesystem storage that encodes files and directories as holographic "engrams" - bundled high-dimensional sparse vectors. Unlike traditional filesystems that store files as sequential blocks, EmbrFS distributes file information across a holographic representation, enabling:
What EmbrFS IS:
What EmbrFS IS NOT:
Current Limitations:
add_files - Add new files without full rebuildmodify_files - Update existing filesremove_files - Soft-delete filescompact - Hard rebuild to reclaim spacefuse feature):
BitFlips - Sparse bit-level correctionsTritFlips - Ternary value correctionsBlockReplace - Contiguous region replacementVerbatim - Full data storage (fallback)User Tools (ls, cat, etc.)
↓
FUSE Kernel Interface (fuse_shim.rs)
↓
Holographic Filesystem Core (embrfs.rs)
↓
Correction Layer (correction.rs)
↓
VSA Primitives (embeddenator-vsa)
File Structure:
embrfs.rs - Core filesystem logic (1,884 lines)fuse_shim.rs - FUSE integration (1,263 lines)correction.rs - Bit-perfect reconstruction (531 lines)Test Coverage:
Add to your Cargo.toml:
[dependencies]
embeddenator-fs = "0.20.0-alpha.3"
# Enable FUSE mounting support (Linux only)
embeddenator-fs = { version = "0.20.0-alpha.3", features = ["fuse"] }
use embeddenator_fs::{EmbrFS, IngestOptions};
use std::path::Path;
// Create a new holographic filesystem
let mut fs = EmbrFS::new();
// Ingest a directory tree
let options = IngestOptions::default();
fs.ingest_directory(Path::new("/path/to/data"), &options)?;
// Save the engram
fs.save("filesystem.engram")?;
// Later: Load and extract
let fs = EmbrFS::load("filesystem.engram")?;
fs.extract_all(Path::new("/output/dir"))?;
use embeddenator_fs::{EmbrFS, fuse::mount_embrfs};
// Load an engram
let fs = EmbrFS::load("filesystem.engram")?;
// Mount as read-only filesystem
let mountpoint = Path::new("/mnt/embrfs");
mount_embrfs(fs, mountpoint, &[])?;
// Now access files normally:
// $ ls /mnt/embrfs
// $ cat /mnt/embrfs/file.txt
// $ grep "pattern" /mnt/embrfs/**/*.log
FUSE Limitations:
The embeddenator-fs CLI provides convenient access to all filesystem operations:
# From source
cargo install --path embeddenator-fs
# Or build locally
cargo build --release --manifest-path embeddenator-fs/Cargo.toml
embeddenator-fs ingest -i ./mydata -e data.engram -v
embeddenator-fs ingest -i file1.txt -i file2.txt -e files.engram
embeddenator-fs extract -e data.engram -o ./restored -v
embeddenator-fs query -e data.engram -q search.txt -k 10
embeddenator-fs list -e data.engram -v
embeddenator-fs info -e data.engram
embeddenator-fs verify -e data.engram -v
# Add a new file
embeddenator-fs update add -e data.engram -f newfile.txt
# Remove a file (soft delete)
embeddenator-fs update remove -e data.engram -p oldfile.txt
# Modify an existing file
embeddenator-fs update modify -e data.engram -f updated.txt
# Compact engram (hard rebuild)
embeddenator-fs update compact -e data.engram -v
The examples/ directory contains runnable examples:
cargo run --example basic_ingest
Demonstrates simple file ingestion and extraction with verification.
cargo run --example query_files
Shows how to query for similar files in an engram using VSA cosine similarity.
cargo run --example incremental_update
Demonstrates add/modify/remove operations and compaction.
cargo run --example batch_processing --release
Tests performance with larger numbers of files (100+ files, 4KB each).
Performance benchmarks using Criterion:
# Run all benchmarks
cargo bench --manifest-path embeddenator-fs/Cargo.toml
# Run specific benchmark
cargo bench --bench ingest_benchmark
cargo bench --bench query_benchmark
cargo bench --bench incremental_benchmark
For large filesystems, use hierarchical encoding:
let options = IngestOptions {
max_files_per_engram: 1000, // Split into sub-engrams
beam_width: 10, // Beam search for retrieval
..Default::default()
};
fs.ingest_directory(path, &options)?;
Encoding Performance:
Retrieval Performance:
Correction Overhead:
# Clone and build
git clone https://github.com/tzervas/embeddenator-fs
cd embeddenator-fs
cargo build
# Run tests
cargo test
# Run tests with FUSE support
cargo test --features fuse
# Build documentation
cargo doc --open
# Check code quality
cargo clippy -- -D warnings
cargo fmt --check
For cross-component development with other Embeddenator crates:
# Add to workspace Cargo.toml
[patch.crates-io]
embeddenator-vsa = { path = "../embeddenator-vsa" }
embeddenator-retrieval = { path = "../embeddenator-retrieval" }
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project is in active development. Expect API changes in minor versions until 1.0.
MIT - See LICENSE file for details.
Copyright (c) 2024-2026 Tyler Zervas