Warning
Casita is pre-release software. Public Rust and CLI interfaces may change; the S3 storage profile and advanced Rust APIs are experimental.
Casita stores source code and build artifacts in a verified, content-addressed object repository written in Rust. Store filesystem trees, native Git objects, IPLD blocks, and custom object graphs while preserving each format's identity. They share deduplicated storage, named roots, synchronization, and garbage collection.
Runs on Linux, macOS, and Windows.
- Verified storage: check object identities and links before publication, verify chunks on read, and authenticate file ranges with Bao proofs.
- Deduplication: share content across objects with BLAKE3 identities, FastCDC chunking, and zstd compression.
- Named roots: give graphs durable names, replace them atomically, and collect unreachable data while active readers retain what they need.
- Synchronization: copy graphs between local repositories or from SSH sources, with independent verification at the destination. An experimental S3 profile supports shared repositories across runners.
- Import and export: import filesystem trees, native Git objects, and OCI images
(with
oci) as layouts and optional merged filesystems. Restore files and exchange graphs through portable Casitar archives. - Rust library: embed the repository in an application, with experimental APIs for custom object formats and storage backends.
The companion casita-fs crate exposes filesystem
trees through Linux FUSE and macOS FSKit.
Rust 1.94.1 or newer is required. Build the CLI from a source checkout:
$ git clone https://github.com/cachix/casita.git
$ cd casita
$ cargo install --path crates/casitaInitialize a workspace, then import source code under a named root:
$ casita init
$ casita import ./crates/casita/src --root examples/source
$ casita root lsCasita stores objects in its global data directory. The .casita marker
attaches this workspace to that storage and keeps its root names private to
the workspace. Import build artifacts the same way, using their output directory.
The import prints a directory object key. Replace casita.directory.v1:...
with that key to inspect or restore the tree:
$ casita tree list casita.directory.v1:...
$ casita checkout casita.directory.v1:... ./restoredUse casita sync to copy graphs between repositories. Install with
--features ssh on both machines to synchronize from an SSH source, or
--features s3 for the experimental S3 profile. See the
sync guide for remote sources,
path selection, and incremental transfers.
Audit repository integrity and preview garbage collection:
$ casita fsck --dry-run
$ casita gc --dry-runNamed roots retain their reachable objects. Run gc without --dry-run to
collect unreachable data. See the
operations guide for maintenance,
repair, and diagnostics.
Casita's Rust and CLI interfaces are still evolving. The standard local repository uses a pinned pre-release Turso build with experimental multi-process WAL. Review the backup and recovery guidance before production use.
Object identities and canonical encodings are described in the object formats reference. Physical storage layouts have their own compatibility requirements. See the security policy for verification guarantees, limitations, and vulnerability reporting.
- Quick start: installation and first repository.
- CLI reference: commands and options.
- Rust library: embedding Casita in applications.
- Cargo features: optional integrations and build requirements.
- Concepts: object model, storage, synchronization, and collection.
- Benchmarks: reproducible workloads and correctness checks, with published results.
- Release process: validation and distribution requirements.
Apache-2.0. See LICENSE.