Project Structure
Sietch is inspired by robust, decentralized systems and provides a resilient, portable vault-built for hostile or disconnected environments. If you’re familiar with Go, CLI tools, or modern static site generators, you’ll feel right at home.
Vault Directory Structure
When you initialize a Sietch vault sietch init, the CLI creates a self-contained directory with everything needed for secure, offline-first storage and sync.
A typical Sietch vault directory looks like:
.sietch/ # Control room: keys, encryption material, internal state
keys/ # Encryption keys (AES, GPG, etc.)
chunks/ # Chunked, encrypted file storage
sync/ # Sync Keys
manifest/ # Stores the manifests for all the data stored
vault.yaml # Manifest: vault ID, encryption, chunking, sync config
Optionally, you can customize the vault location or structure using flags during sietch init.
Key Components
Vault.yaml
This is the core configuration file for the vault. It contains all the information required for the vault to function properly. A sample vault configuration is shown below:
name: Sietch Vault
vault_id: 097a6dae-89f1-46fe-a874-0401e6ed07b0
created_at: 2025-09-21T05:40:26.192039222Z
schema_version: 1
encryption:
type: aes
key_path: /home/tmp/.sietch/keys/secret.key
key_hash: 7MbaDObIbHdK6HHTQKG3HmNVpyHCC15N14s8n9ZfhXI=
passphrase_protected: false
aes_config:
key: X1AUUIphs8p1RcP0Dr+dld5P8X3nYQX4fOetOviSwIo=
nonce: PQkcgvRjhfIUMjZk
chunking:
strategy: fixed
chunk_size: 8MB
hash_algorithm: sha256
compression: gzip
deduplication:
enabled: true
strategy: content
min_chunk_size: 1MB
max_chunk_size: 64MB
gc_threshold: 500
index_enabled: true
cross_file_dedup: true
sync:
mode: manual
rsa:
key_size: 4096
public_key_path: .sietch/sync/sync_public.pem
private_key_path: .sietch/sync/sync_private.pem
fingerprint: E5ld57cEEEeGr9cu61K0/VRhyjwVRBW+cQOa237a/0Y=
enabled: true
sync_interval: 24h
metadata:
author: "nilay"
tags:
- photos
- media
- storage
- secure
Manifest
The manifest is a collection of JSON files that map all the stored data.
In future versions, this will be migrated to a database.
file: plans.txt
size: 4
mtime: "2025-04-26T05:31:20+05:30"
chunks:
- hash: a39bc5b380291f2b6d62c62efe88a186a1ba74b2cb0ce34479908b583b7912de
encrypted_hash: c2faceb546e1d9f17246d8c13e36de4b
size: 4
encrypted_size: 72
index: 0
destination: /tmp/checker/
added_at: 2025-09-23T05:27:29.479308639Z
Sietch is designed for resilience, security, and portability-whether you’re running a documentation site or a nomadic, encrypted vault.
Table of Contents