Backups that just work for Linux servers.
One static binary. A single CLI. Schedule jobs, back up files and databases to local or S3 storage, prune by policy, and restore any run — no external control plane.
curl -fsSL https://bakkit.apt.asexsela.xyz/install.sh | shThe whole backup lifecycle, from one tool.
Define a job, schedule it, archive to storage, prune by policy, and restore when you need it — all self-hosted.
A single static musl binary runs as a systemd agent, driven entirely from the bakkit CLI.
A built-in ratatui TUI shows live job status, recent runs, and storage usage — monitor everything without leaving the terminal.
Run jobs manually or on a cron expression. The agent's scheduler evaluates due jobs and enqueues them.
Archive directories as tar.gz, or dump PostgreSQL, MySQL/MariaDB, and SurrealDB. Client tools are provisioned on demand.
Send backups to the local filesystem or any S3-compatible bucket — AWS S3, Cloudflare R2, Backblaze B2, MinIO.
keep-last N, max-age, and a minimum-keep floor run automatically after every successful backup.
Restore any run to a directory or a fresh database, and get Slack notifications on job success or failure.
Drive it from your shell.
Every backup operation is a CLI command against the local agent — scriptable, reviewable, and easy to automate.
$ bakkit storage add --name s3 --kind s3 --bucket backups --region eu-central-1$ bakkit source add --name pg --kind postgres --host db --user app --dbname app$ bakkit jobs create --name pg-daily --source pg --storage s3 --schedule "0 3 * * *" --keep-last 7$ bakkit jobs run pg-daily→ run uploaded · verified · retained$ bakkit source add --name web --kind files --path /var/www --exclude "*.log"$ bakkit jobs create --name web-daily --source web --storage s3 --schedule "0 2 * * *"$ bakkit jobs list$ bakkit restore <run_id> --to /restore$ bakkit health→ agent healthy