BinStash is a modern tool for efficiently storing build artifacts and release packages. It uses content-defined chunking, deduplication, and a custom binary format to dramatically reduce redundant storage, especially in CI/CD pipelines.
# 1. Setup your server with PostgreSQL and blob storage
# 2. Add a chunk store and repo
BinStash.Cli chunk-store add --name my-store --type Local --local-path /mnt/data
BinStash.Cli repo add --name my-repo --chunk-store <chunk-store-id>
# 3. Add your first release
BinStash.Cli release add -v 1.0.0 -r my-repo -f ./build_output- 🧩 FastCDC Chunking — Configurable, content-defined chunking for optimized diffs.
- 💾 Deduplication — Chunk-based deduplication across all releases in the same store.
- 📦 Custom Binary Format — Delta-encoded, varint-packed, transpose-compressed metadata.
- 🪶 Zstd Compression — Transparent compression for both chunk data and metadata.
- 🔁 Partial/Delta Downloads — Download full releases, components, or deltas.
- 🧠 Pack-Based Chunk Storage — Efficient on-disk structure with indexed
.packfiles.
- Language: .NET 9
- Dependencies:
- CliFx
- Spectre.Console
- Custom fork of ZstdNet
Build with:
dotnet build --configuration ReleaseBinStash.Cli [options]
BinStash.Cli [command] [...]chunk-store: Add/list/show/delete chunk storesrepo: Create/list repositories for organizing releasesrelease: Add, list, install, and manage deduplicated releasesanalyze: Tune chunking and deduplication strategies
See docs/cli-reference.md for details.
- Chunks are stored in
.packfiles grouped by BLAKE3 prefix - Each
.packentry includes:- Magic header (
BSPK) - Compressed + uncompressed length
- xxHash3 checksum
- Magic header (
- An
.idxfile tracks chunk offset and length for fast reads - Files rotate at 4 GiB for performance and portability
- Chunks are stored in
.packfiles grouped by BLAKE3 prefix - Each
.packentry includes:- Magic header (
BSPK) - Compressed + uncompressed length
- Data: Transpose-compressed chunk-hashes
- xxHash3 checksum
- Magic header (
- An
.idxfile tracks chunk offset and length for fast reads - Files rotate at 4 GiB for performance and portability
.rdef files include:
- Transpose-compressed file hash table
- Tokenized component + file name strings
- Zstd compression on all sections
More: docs/file-format.md
BinStash is Copyright © 2025 Lukas Eßmann.
This program is licensed under the terms of the GNU Affero General Public License v3.0.
BinStash is for developers, CI/CD users, and artifact-heavy systems that value immutability, reproducibility, and efficient storage.