Borg backups with Bitcoin timestamping. Your data lives on forever.
borg-anchor combines BorgBackup (deduplicating archiver) with Bitcoin timestamping to create backups with cryptographic proof of existence.
Your Data → Borg Backup → Bitcoin Anchor → Immortal Proof
- Deduplication - Only store changes, not duplicates
- Compression - Efficient storage with lz4/zstd
- Encryption - Optional AES-256 encryption
- Bitcoin Timestamping - Immutable proof your backup existed
- Chained Proofs - Each backup linked to previous via UTXO chain
npm install -g borg-anchor- BorgBackup installed
- blocktrails CLI for Bitcoin anchoring
- Node.js 18+
# Initialize a new backup repository
borg-anchor init ~/backups
# Configure your Bitcoin key
cd ~/backups
git config nostr.privkey <your-hex-privkey>
# Create your first backup
borg-anchor backup ~/mydata --name first-backup
# View all projects and backups
borg-anchor info
# List backups in current project
borg-anchor list
# Verify a backup is anchored
borg-anchor verify first-backup
# Restore a backup
borg-anchor restore first-backup /tmp/restore| Command | Description |
|---|---|
info |
Dashboard of all projects (CLI) |
dashboard |
Web dashboard (localhost:3077) |
init [path] |
Initialize borg repo and config |
backup <source> |
Create backup and anchor on Bitcoin |
list |
List backups and trail status |
verify <archive> |
Verify backup is anchored |
restore <archive> [dest] |
Restore backup to destination |
show |
Show config and trail status |
| Option | Default | Description |
|---|---|---|
--repo <name> |
repo |
Borg repository directory name |
--encryption <type> |
none |
none, repokey, repokey-blake2 |
--network <net> |
tbtc4 |
btc (mainnet) or tbtc4 (testnet) |
| Option | Default | Description |
|---|---|---|
--name <name> |
backup-YYYY-MM-DD |
Archive name |
--no-anchor |
- | Skip Bitcoin anchoring |
--dry |
- | Dry run (don't broadcast) |
- Borg creates a deduplicated backup with a unique fingerprint (SHA-256)
- The fingerprint is anchored on Bitcoin via a chained UTXO trail
- Anyone can verify the backup existed at the anchored time
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Your Files │ ──▶ │ Borg Backup │ ──▶ │ Bitcoin TX │
│ │ │ fingerprint │ │ timestamp │
└─────────────┘ └─────────────┘ └─────────────┘
After initialization, your backup directory contains:
~/backups/
├── .borg-anchor.json # Configuration
├── .blocktrail.json # Bitcoin trail state
├── .git/ # Git repo (holds keys)
└── repo/ # Borg repository
Projects are also registered globally for the dashboard:
~/.borg-anchor/
└── projects.json # List of all borg-anchor projects
To verify a backup:
# Get the fingerprint
borg info ~/backups/repo::my-backup | grep fingerprint
# Check it's anchored
borg-anchor verify my-backupThe fingerprint in your backup must match the fingerprint recorded on Bitcoin.
| Network | Flag | Use Case |
|---|---|---|
tbtc4 |
--network tbtc4 |
Testing (free, default) |
btc |
--network btc |
Production (real Bitcoin) |
AGPL-3.0