Cargo
Waiting
Waiting
Waiting
Writing outputs
Built in Rust. Apache 2.0.
# Attach this project to Casita
$ casita init
# Import and name a directory
$ casita import ./project --root demo
casita.directory.v1:...
root demo
# Audit stored content
$ casita fsck --audit-onlyCargo writes all three outputs directly into Casita.
Waiting
Waiting
Waiting
Writing outputs
Awaiting metadata
Proposed Cargo integration · uv 0.12.7 · executable reconstruction shown; chunks are illustrative. Run applications → · Verified artifact ↗
Files, archives, NAR inputs, Git history, and OCI images all enter through the same verified repository API. Build your own importer.
Capture a directory as a canonical graph of files, links, and subdirectories.
Filesystem guideStream a tar archive into a filesystem graph without extracting it first.
Tar guideStream registry layers into a verified image layout and, optionally, a merged filesystem.
OCI guideImport one canonical Nix archive and retain its measured filesystem tree.
NAR APIImport a portable Casita graph archive and verify its contents before publishing roots.
Casitar guideKeep native Git object IDs while importing local branches and tags.
Git guideBring deduplicated storage and content verification to your files, repositories, and application objects.
Save a directory, keep it under a name, and restore its files wherever you need them.
Filesystem workflowMirror a named graph between repositories. Reuse existing content and verify everything that arrives.
Sync workflowStore branches and tags with their original Git IDs. Check out a tree or serve it over read-only HTTP with the git features.
Bring IPLD blocks or your own object format. Define identity and links; reuse Casita’s sync and collection through the experimental API.
Extend CasitaPackage a complete object graph in a portable archive. Import it elsewhere, verify its contents, and publish its roots together.
Archive workflowLet multiple runners share a repository in an S3 bucket, with coordinated writes and collection. Requires the experimental s3 feature.
Both share the same deduplication, content verification, and sync workflows.
$ casita init
$ casita import ./src --root app/source
$ casita fsckStart with the filesystem workflow, then add only the features required for SSH or native Git.
Follow the Quick Startuse casita::{Repository, RootName};
let repository = Repository::local("./data").await?;
repository.import(casita::import::FilesystemImport::new("./src", RootName::try_from("app/source")?)).await?;
for root in repository.roots().await? {
println!("{} -> {}", root.name(), root.target());
}
repository.flush().await?;One concrete handle supports memory, local disk, and optional S3 storage. Custom backend composition lives in casita::experimental; the S3 storage profile remains experimental.
First import. Small update. Sync the difference.
Import into an empty repository.
Re-import an edited copy of the tree.
Local sync to a destination with the base tree.
Import into an empty repository.
Re-import an edited copy of the tree.
Local sync to a destination with the base tree.
Import into an empty repository.
Re-import an edited copy of the tree.
Local sync to a destination with the base tree.
Import into an empty repository.
Re-import an edited copy of the tree.
Local sync to a destination with the base tree.
Import into an empty repository.
Re-import an edited copy of the tree.
Local sync to a destination with the base tree.
Import into an empty repository.
Re-import an edited copy of the tree.
Local sync to a destination with the base tree.
Each chart has its own scale. Sync measures a local update, not a network transfer.
AMD Ryzen 7 7840S · 27.2 GiB RAM · Linux / Btrfs
Baseline: 2026-08-29 · Casita 45699f8 · Source data ↗
Measured 2026-08-29 at Casita revision 45699f8, using the standard profile and the powersave CPU governor. These are published baseline results, not measurements of the current build.
The update inserts 4 KiB into one file and adds an 8 KiB file. Re-import uses a copied tree; it does not measure an in-place edit. Sync starts with the base tree already at the destination.
Warm cache pre-reads regular files; cold cache requests eviction with POSIX_FADV_DONTNEED. Neither controls filesystem metadata or device caches. The filesystem uses zstd compression on an encrypted volume.
Git, backup tools, and tar archives have different publication and verification guarantees. restic uses repository encryption; Casita and Borg use plaintext repositories. tar + zstd rebuilds the archive for an update. Borg and tar + zstd have no sync measurement in this suite.
Timings use the report’s nearest-rank p50: the fifth sorted sample of ten. Setup and validation are outside the timed region. Every accepted sample passes integrity and restored-content checks. Raw samples and hardware details ↗
borg 1.4.5 · casita 0.1.0 · git version 2.55.0 · restic 0.19.1 compiled with go1.26.5 on linux/amd64 · tar (GNU tar) 1.35; *** Zstandard CLI (64-bit) v1.5.7, by Yann Collet ***
Follow the quick start or explore the Rust library.