MCPcopy Index your code
hub / github.com/borgbase/vykar

github.com/borgbase/vykar @v0.17.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.17.1 ↗ · + Follow
3,669 symbols 14,487 edges 257 files 908 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

Extension points exported contracts — how you extend this code

StorageBackend (Interface)
(no doc) [18 implementers]
crates/vykar-storage/src/lib.rs
CryptoEngine (Interface)
Trait for encrypting and decrypting repository objects. [1 implementers]
crates/vykar-crypto/src/lib.rs

Core symbols most depended-on inside this repo

path
called by 696
crates/vykar-core/src/config/resolve/discovery.rs
push
called by 368
crates/vykar-core/src/repo/file_cache.rs
iter
called by 353
crates/vykar-core/src/index/mod.rs
len
called by 185
crates/vykar-core/src/index/mod.rs
run
called by 177
crates/vykar-core/src/commands/info.rs
is_empty
called by 159
crates/vykar-core/src/index/mod.rs
get
called by 134
crates/vykar-core/src/index/mod.rs
len
called by 124
crates/vykar-core/src/commands/mount.rs

Shape

Function 2,583
Method 717
Class 296
Enum 71
Interface 2

Languages

Rust93%
Python6%
TypeScript1%

Modules by API surface

crates/vykar-core/src/repo/file_cache.rs127 symbols
crates/vykar-core/src/index/dedup_cache.rs77 symbols
crates/vykar-storage/src/sftp_backend.rs70 symbols
crates/vykar-core/src/config/resolve/resolution.rs69 symbols
crates/vykar-storage/src/s3_backend/mod.rs68 symbols
crates/vykar-cli/tests/cli_integration.rs68 symbols
crates/vykar-core/src/index/mod.rs61 symbols
crates/vykar-storage/src/lib.rs60 symbols
crates/vykar-storage/src/s3_backend/multipart.rs59 symbols
scripts/testbench/vykar_testbench/benchmarks.py56 symbols
crates/vykar-core/src/commands/restore/plan.rs56 symbols
crates/vykar-core/tests/integration.rs53 symbols

For agents

$ claude mcp add vykar \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact