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.