1
0
Fork 0
mirror of https://github.com/borgbase/vykar.git synced 2026-06-02 09:33:18 -07:00
Fast, encrypted, deduplicated backups in Rust — with friendly YAML config, a desktop GUI, and support for S3, custom REST and SFTP storage. https://vykar.borgbase.com
  • Rust 88.6%
  • Python 7.2%
  • Slint 2.1%
  • Shell 1.7%
  • Nix 0.3%
Find a file
Manu 2c85872916 fix(gui): pin slint to 1.15 to avoid muda duplicate-class link error
slint 1.16 changed its muda dep from 0.17 to 0.18, while tray-icon 0.22
stayed on 0.17. Both versions register the Objective-C class
`__CLASS_MudaMenuDelegate`, causing the macOS `vykar-gui` release
binary to fail at link time:

  Linking globals named '__CLASS_MudaMenuDelegate': symbol multiply defined!
  error: failed to load bitcode of module "muda-…"

tray-icon 0.23/0.24 use muda 0.19 (still ahead of slint 1.16's 0.18),
and slint 1.16 is the latest published. Constrain slint and slint-build
to `~1.15` until either slint catches up to muda 0.19 or a slint
version using a matching muda is released. tray-icon stays at 0.22.2.
2026-05-19 09:38:10 +01:00
.agents Bump version to 0.14.0 2026-04-27 18:46:58 +01:00
.cargo fix(windows): statically link MSVC C runtime to avoid missing DLL errors 2026-03-24 06:43:16 +00:00
.github/workflows chore(ci): bump GitHub Actions to Node.js 24-compatible majors 2026-05-18 21:45:41 +01:00
.nix feat(nix): add Nix flake packaging. By @Sntx626 (#96) 2026-04-09 14:16:26 +01:00
crates fix(gui): pin slint to 1.15 to avoid muda duplicate-class link error 2026-05-19 09:38:10 +01:00
docs fix(backup): allow source paths with duplicate basenames (#143) 2026-05-18 21:17:38 +01:00
fuzz refactor(types): encapsulate ID newtypes and drop dead Storage error 2026-05-06 09:27:29 +01:00
scripts fix(sign-windows): surface keytool errors instead of silencing them 2026-05-03 22:59:36 +01:00
.claude meta: reorganize skills folders 2026-02-20 15:06:21 +00:00
.gitignore feat(nix): add Nix flake packaging. By @Sntx626 (#96) 2026-04-09 14:16:26 +01:00
AGENTS.md fix(commands): surface post-commit failures as warnings, not errors 2026-04-24 08:35:55 +01:00
Cargo.lock fix(gui): pin slint to 1.15 to avoid muda duplicate-class link error 2026-05-19 09:38:10 +01:00
Cargo.toml chore(deps): unify ureq on v3 across workspace 2026-05-19 07:29:25 +01:00
CLAUDE.md meta: reorganize skills folders 2026-02-20 15:06:21 +00:00
CONTRIBUTING.md feat(nix): add Nix flake packaging. By @Sntx626 (#96) 2026-04-09 14:16:26 +01:00
Dockerfile feat(daemon): read-only HTTP status page 2026-04-27 21:44:54 +01:00
Dockerfile.apprise feat(docker): add apprise variant image for hook notifications 2026-03-15 07:10:52 +00:00
flake.lock feat(nix): add Nix flake packaging. By @Sntx626 (#96) 2026-04-09 14:16:26 +01:00
flake.nix feat(nix): add Nix flake packaging. By @Sntx626 (#96) 2026-04-09 14:16:26 +01:00
LICENSE Change license to match Slint UI 2026-02-12 19:27:22 +00:00
Makefile feat(gui): add AppImage packaging for Linux 2026-04-15 16:45:45 +08:00
prek.toml feat(gui): show source paths in restore window tree view (#57) 2026-04-17 07:35:22 +08:00
README.md feat(daemon): read-only HTTP status page 2026-04-27 21:44:54 +01:00
shell.nix feat(nix): add Nix flake packaging. By @Sntx626 (#96) 2026-04-09 14:16:26 +01:00
testing.md Update e2e test guidance and REST defaults 2026-03-06 22:49:46 +00:00
vykar.example.yaml fix(backup): allow source paths with duplicate basenames (#143) 2026-05-18 21:17:38 +01:00

Vykar Backup

A fast, encrypted, deduplicated backup tool written in Rust centered around a friendly YAML config file.

Inspired by BorgBackup, Borgmatic, Restic, and Rustic. Vykar uses its own on-disk format and is not compatible with Borg or Restic repositories.

⚠️ Don't use for production backups yet, but do test it along other backup tools.

Features

  • Storage backends — local filesystem, S3 (any compatible provider), SFTP, dedicated REST server
  • Encryption with AES-256-GCM or ChaCha20-Poly1305 (auto-selected) and Argon2id key derivation
  • YAML-based configuration with multiple repositories, hooks, and command dumps for monitoring and database backups
  • Deduplication via FastCDC content-defined chunking with a memory-optimized engine (tiered dedup index + mmap-backed pack assembly)
  • Compression with LZ4 or Zstandard
  • Built-in WebDAV and desktop GUI to browse and restore snapshots
  • REST server with append-only enforcement, quotas, and server-side compaction
  • Concurrent multi-client backups — multiple machines back up to the same repository simultaneously; only the brief commit phase is serialized
  • Built-in scheduling via vykar daemon — runs backup cycles on a configurable interval (no cron needed), with an optional read-only HTTP status page
  • Resource limits for worker threads, backend connections, and upload/download bandwidth
  • Cross-platform — Linux, macOS, and Windows

Benchmarks

Vykar leads in both speed and CPU efficiency, while maintaining competitive memory usage.

Backup Tool Benchmark

All benchmarks were run on the same idle Intel i7-6700 CPU @ 3.40GHz machine with 2x Samsung PM981 NVMe drives. Compression settings were chosen to keep resulting repository sizes comparable. The sample corpus is a mix of small and large files with varying compressibility. See our benchmark script for full details.

Quick start

curl -fsSL https://vykar.borgbase.com/install.sh | sh

Or download the latest release for your platform from the releases page. A Docker image is also available.

# Generate a starter config and edit it
vykar config

# Initialize the repository and run a backup
vykar init
vykar backup

# List snapshots
vykar list

See the full documentation for storage backends, restore, maintenance, and more.

Desktop UI

Vykar GUI

vykar-gui is a Slint-based desktop app that uses vykar-core directly (it does not shell out to the CLI).

  • Run backups on demand
  • List snapshots and browse snapshot contents
  • Extract snapshot contents
  • Run in the system tray with periodic background backups
  • Uses vykar.yaml as the source of truth and auto-reloads config changes

Periodic GUI scheduling is configured in vykar.yaml via:

schedule:
  enabled: true
  every: "24h"
  on_startup: false
  jitter_seconds: 0
  passphrase_prompt_timeout_seconds: 300

Security

To report a security vulnerability, please email hello@borgbase.com.

License

GNU General Public License v3.0