Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Roadmap

Planned

FeatureDescriptionPriority
GUI Config EditingStructured editing of the config in the GUI, currently only via YAMLHigh
Linux GUI packagingNative .deb/.rpm packages and a repository for streamlined installationHigh
Windows GUI packagingMSI installer and/or winget package for first-class Windows supportHigh
Snapshot filteringBy host, tag, path, date rangesMedium
Async I/ONon-blocking storage operationsMedium
JSON output modeStructured JSON output for all CLI commands to enable scripting and integration with monitoring toolsMedium
Per-token permissionsExpand permissions from full/append-only to also limit reading and maintenanceMedium
Hardlink & special file supportExtend ItemType with Hardlink, BlockDevice, CharDevice, Fifo, Socket; inode tracking during walk; link()/mknod during restoreMedium
Nominal snapshot timestampAdd optional time_nominal to SnapshotMeta for the data’s real-world timestamp (e.g. ZFS snapshot time), distinct from backup start/end timesLow

Implemented

FeatureDescription
Pack filesChunks grouped into ~32 MiB packs with dynamic sizing, separate data/tree packs
Retention policieskeep_daily, keep_weekly, keep_monthly, keep_yearly, keep_last, keep_within
snapshot delete commandRemove individual snapshots, decrement refcounts
prune commandApply retention policies, remove expired snapshots
check commandStructural integrity + optional --verify-data for full content verification
Type-safe PackIdNewtype for pack file identifiers with storage_key()
compact commandRewrite packs to reclaim space from orphaned blobs after delete/prune
REST serveraxum-based backup server with auth, append-only enforcement, quotas, freshness tracking, and server-side compaction
REST backendStorageBackend over HTTP with range-read support
Tiered dedup indexBackup dedup via session map + xor filter + mmap dedup cache, with safe fallback to HashMap dedup mode
Restore mmap cacheRestore-cache-first item-stream lookup with safe fallback to the full index when cache entries are stale or incomplete
Append-only repository layout v2Snapshot listing derived from immutable snapshots/<id> blobs; index stores authenticated generation and index.gen is an advisory cache hint
Bounded parallel pipelineByte-budgeted pipeline with bounded worker/upload concurrency derived from limits.threads and limits.connections
Heap-backed pack assemblyPack writers use heap-backed buffers after the mmap path was removed for reliability on some systems
cache_dir overrideConfigurable root for file cache, dedup/restore/full-index caches, and preferred mmap temp-file location
Parallel transformsrayon-backed compression/encryption within the bounded pipeline
break-lock commandForced stale-lock cleanup for backend/object lock recovery
Compact pack health accountingCompact analysis reports/tracks corrupt and orphan packs in addition to reclaimable dead bytes
File-level cacheinode/mtime/ctime skip for unchanged files — avoids read, chunk, compress, encrypt. Keys are 16-byte BLAKE2b path hashes (with transparent legacy migration). Stored locally under the per-repo cache root (default platform cache dir + vykar, or cache_dir override).
Daemon modevykar daemon runs scheduled backup→prune→compact→check cycles with two-stage signal handling
Server-side pack verificationvykar check delegates pack integrity checks to vykar-server when available; --distrust-server opts out
Upload integrityREST PUT includes X-Content-BLAKE2b header; server verifies during streaming write
vykar-protocol crateShared wire-format types and pack/protocol version constants between client and server
Type-safe SnapshotIdNewtype for snapshot identifiers with storage_key() for snapshots/<id> objects