Skip to content

Vykar

Backup & Recovery

A fast, encrypted, deduplicated backup tool written in Rust that uses YAML configuration

Rust Latest v0.16.1 · 15d ago Security brief →

Features

  • Supports multiple storage backends (local, S3, SFTP, REST server)
  • End‑to‑end encryption with AES‑256‑GCM or ChaCha20‑Poly1305 and Argon2id key derivation
  • Content‑defined chunking deduplication using FastCDC for efficient storage

Recent releases

View all 47 releases →
Upgrade now
v0.16.1 Bug fix
Dependencies

Prune fix + SFTP log change

v0.16.0 Bug fix

Fixed backup performance regression on iCloud-heavy macOS trees by skipping `getxattr` on dataless inodes.

Full changelog

Bug fixes

  • Backup performance on iCloud-heavy macOS trees: skip getxattr on dataless inodes. The walker was round-tripping to fileproviderd for every cloud-managed file, serializing the pipeline; dataless xattrs are already supplied by the parent snapshot or skipped entirely. (#133)
  • GUI: surface previously-swallowed config-read and tmp-cleanup errors via the in-app log channel instead of let _ = dropping them silently.
  • Linux quota syscalls: switch FFI pointer casts to ptr::from_mut to satisfy Rust 1.95 clippy::pedantic on Linux-only code paths.

Reliability & code quality

  • Crypto: MasterKey::generate now propagates OsRng failures instead of panicking — relevant for sandboxed/container environments where kernel entropy may be temporarily unavailable.
  • Storage: document that synchronous StorageBackend methods (notably SFTP) may block on a Tokio runtime internally and must not be invoked from inside an async context.
  • Workspace lints: tighten clippy policy across all crates — deny unwrap_used, panic, panic_in_result_fn, cast_precision_loss, unsafe_code (per-module opt-in with SAFETY comments), enable pedantic with a focused allowlist. ~94 files adapted; lossy as-casts replaced with checked integer math.
  • Types: encapsulate ChunkId / PackId / SnapshotId newtypes behind from_bytes() / as_bytes(); drop the unused VykarError::Storage variant.
  • CLI: split main.rs into lib.rs + helpers, introduce a thiserror-based CliError, group run_backup arguments into BackupRunOpts.
  • Core: gate BudgetGuard and dead helpers on cfg(test), drop avoidable clones in pending-index recovery, document blocking sleeps in session/lock helpers.
  • GUI: refactor UI state models; split megamodules into focused submodules.

Infrastructure

  • CI now runs lint, test, and docs on pull requests, not just post-merge.

Downloads

| Platform | Asset |
| --- | --- |
| Linux x86_64 (glibc) | vykar-v0.16.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl, static) | vykar-v0.16.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.16.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl, static) | vykar-v0.16.0-aarch64-unknown-linux-musl.tar.gz |
| macOS Apple Silicon | vykar-v0.16.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.16.0-x86_64-pc-windows-msvc.zip |
| GUI (Linux AppImage) | vykar-gui-v0.16.0-x86_64.AppImage |

SHA256 checksums are attached as SHA256SUMS.

Full changelog: v0.15.0...v0.16.0

v0.15.0 Bug fix
Notable features
  • Check reports snapshot items affected by missing packs
  • Check item-granular repair drops bad items while preserving the snapshot
  • Backup handles macOS dataless iCloud files cleanly
Full changelog

Features

  • Check: report snapshot items affected by missing packs, so you can see exactly what's lost (#122)
  • Check: item-granular repair drops bad items but preserves the snapshot, instead of failing the whole snapshot (#123)
  • Backup: handle macOS dataless (cloud-only) iCloud files cleanly
  • GUI: snapshots table now defaults to newest-first (#126)

Bug Fixes

  • Backup: skip Windows unsupported reparse points and cloud-file errors with a path-bearing warning instead of aborting (#127)
  • GUI: open the config file in the system editor on Linux/Windows (#125)
  • Check: honest existence-progress reporting and a TOCTOU hint when sizes mismatch
  • Limits: renice all threads on Linux, not just the calling task

Infrastructure

  • Windows signing: pin SimplySign Desktop 2.9.14, dismiss the version-check modal, surface keytool errors instead of silencing them, and capture CI screenshots
  • Satisfy clippy 1.95 lints

Downloads

| Platform | Artifact |
|---|---|
| Linux x86_64 (glibc) | vykar-v0.15.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.15.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.15.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.15.0-aarch64-unknown-linux-musl.tar.gz |
| macOS aarch64 | vykar-v0.15.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.15.0-x86_64-pc-windows-msvc.zip |
| Linux GUI (AppImage) | vykar-gui-v0.15.0-x86_64.AppImage |

v0.14.1 New feature
⚠ Upgrade required
  • --http-listen defaults to loopback only; use `--http-allow-public` or `VYKAR_HTTP_ALLOW_PUBLIC=1` to bind publicly
  • Endpoints: `/` (HTML), `/healthz` (text liveness probe), `/api/status.json` (JSON)
Notable features
  • Daemon web UI (`vykar daemon --http-listen`) providing HTML, healthz, and JSON endpoints
  • Auto‑routing slash patterns to path globs for find‑files (e.g., `/etc/**`)
  • Redesigned GUI: find‑files results layout reorganized and snapshot table columns reorderable with a wider time column
Full changelog

Fixes a few issues that came up with recent GUI features and adds the first version of a web UI.

Features

  • Daemon web UI (feat(daemon)): vykar daemon now exposes an optional read-only HTTP status page mirroring the GUI overview — process info, schedule, per-repo stats, recent snapshots, last cycle outcome, and an expandable sources list. Auto-refreshes every 30s and re-renders after every backup cycle / SIGHUP. No actions, no auth, no JS.

    Run it with:

    vykar daemon --http-listen 127.0.0.1:7575
    # or via env var (matches the Docker recipe):
    VYKAR_HTTP_LISTEN=127.0.0.1:7575 vykar daemon
    

    Endpoints: GET / (HTML), GET /healthz (plain text liveness probe), GET /api/status.json (JSON). Non-loopback binds are rejected at startup unless --http-allow-public (or VYKAR_HTTP_ALLOW_PUBLIC=1) is also set — front it with a reverse proxy if exposing publicly.

  • Find files: slash patterns are now auto-routed to path globs, so /etc/** does what you'd expect without an explicit flag.

  • GUI: redesigned find-files results layout, snapshot table column reorder with a wider time column.

Bug Fixes

  • GUI: don't highlight the repo row when a sub-item is selected.
  • GUI: pack find-files result groups at the top of the scroll view instead of stretching to fill.

Downloads

| Platform | File |
| --- | --- |
| Linux x86_64 (musl) | vykar-v0.14.1-x86_64-unknown-linux-musl.tar.gz |
| Linux x86_64 (gnu) | vykar-v0.14.1-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.14.1-aarch64-unknown-linux-musl.tar.gz |
| Linux aarch64 (gnu) | vykar-v0.14.1-aarch64-unknown-linux-gnu.tar.gz |
| macOS aarch64 | vykar-v0.14.1-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.14.1-x86_64-pc-windows-msvc.zip |
| Linux GUI (AppImage) | vykar-gui-v0.14.1-x86_64.AppImage |

SHA256 checksums are attached as *.sha256 siblings.

v0.14.0 Breaking risk
Notable features
  • GUI & CLI `diff` command to compare files between snapshots with size deltas
  • Multi-row selection and batch delete on the Snapshots page in the GUI
  • Grouped find results by snapshot for easier scanning in the GUI
Full changelog

Features

  • GUI + CLI diff command: compare regular files between two snapshots (added, removed, modified, with size deltas).
  • GUI – multi-row selection and batch delete on the Snapshots page.
  • GUI – grouped find results by snapshot for easier scanning.

Reliability & Correctness

  • Symlink validation on restore: validates symlink targets and warns on unsafe ones (absolute or escaping the restore root).
  • restore --verify: optional plaintext chunk hash check during restore for end-to-end integrity verification.
  • Harden stale lock crash recovery so a crashed maintenance run no longer blocks subsequent operations.
  • Harden backup reads against TOCTOU races between stat and open.
  • Bound non-segmented reads to pre_meta.size + 1 to detect files growing during backup.
  • Validate Item::size invariant during restore + check; surface metadata failures as errors instead of silently corrupting output.
  • Harden pack offset arithmetic against corrupted indexes.
  • Enforce the durable commit boundary via the type system (refactor(commit)).
  • Surface post-commit failures as warnings rather than aborting the snapshot.
  • Surface command_dump failures as typed errors instead of expect() panics.

Refactors

  • Split backup/pipeline.rs into orchestrator + stage submodules.
  • Split commands/restore.rs into phase submodules; stream restore in bounded batches.
  • Drop redundant clones on backup/restore hot paths.

Bug Fixes

  • GUI: write config files with owner-only permissions (0600).
  • GUI: rephrase prune dialog to avoid tinyfd quote-rejection on Windows.
  • core: format byte counts in daemon-visible summary logs.
  • storage: drain PUT request body in s3_backend test mocks (test stability).

Infrastructure

  • Stop stress test scripts on first failure.
  • Gate the absolute-symlink warning test to Unix.

Downloads

| Platform | Artifact |
|---|---|
| Linux x86_64 (glibc) | vykar-v0.14.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (musl) | vykar-v0.14.0-x86_64-unknown-linux-musl.tar.gz |
| Linux aarch64 (glibc) | vykar-v0.14.0-aarch64-unknown-linux-gnu.tar.gz |
| Linux aarch64 (musl) | vykar-v0.14.0-aarch64-unknown-linux-musl.tar.gz |
| Linux GUI (AppImage) | vykar-gui-v0.14.0-x86_64.AppImage |
| macOS aarch64 | vykar-v0.14.0-aarch64-apple-darwin.tar.gz |
| Windows x86_64 | vykar-v0.14.0-x86_64-pc-windows-msvc.zip |

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
630
Forks
16
Languages
Rust Python Slint

Install & Platforms

Install via
shell-script binary
Platforms
linux macos windows

Alternative to

BorgBackup Borgmatic Restic Rustic

Beta — feedback welcome: [email protected]