Releasing soon Vigo is in alpha and closing in on its first stable release. Expect breaking changes between releases until then — we're looking for testing partners with meaningful fleets across diverse architectures. Learn more →

backup

Create and restore full server backups. These commands operate directly on the local filesystem — no server API required. Run them on the server host.

Subcommands

create

Create a tar.gz backup archive containing the database, configs, secrets, TLS certs, and server.yaml.

vigocli backup create <path>

The SQLite database is snapshotted using VACUUM INTO, which is safe with concurrent WAL writers.

Flags:

Flag Default Description
--server-yaml /srv/vigo/server.yaml Path to server.yaml (used to find DB settings)
--server-root /srv/vigo Root directory containing stacks/, secrets/, tls/
--encrypt false Encrypt with AES-256-GCM (prompts for password)

Examples:

vigocli backup create /tmp/vigo-backup.tar.gz
vigocli backup create /backup/vigo-$(date +%Y%m%d).tar.gz --server-yaml /opt/vigo/server.yaml

# Encrypted backup (HIPAA compliant)
vigocli backup create /tmp/vigo-backup.tar.gz --encrypt

A SHA-256 checksum sidecar file (.sha256) is written alongside the archive for integrity verification.

restore

Restore server state from a backup archive. Stop the server before restoring.

vigocli backup restore <path>

Flags:

Flag Default Description
--target /srv/vigo Root directory to restore into
--db-only false Restore only the database, skip config/secrets/tls
--dry-run false Show what would be restored without writing
--decrypt false Decrypt the archive before restoring (prompts for password)

Examples:

# Preview restore
vigocli backup restore /tmp/backup.tar.gz --dry-run
# Full restore
vigocli backup restore /tmp/backup.tar.gz

# Database only
vigocli backup restore /tmp/backup.tar.gz --db-only

# Restore to alternate location
vigocli backup restore /tmp/backup.tar.gz --target /opt/vigo-server

inspect

Show the manifest from a backup archive without extracting.

vigocli backup inspect <path>

Example output:

{
  "version": 1,
  "created_at": "2026-03-13T14:30:00Z",
  "vigo_version": "dev",
  "db_driver": "sqlite",
  "db_dsn": "/srv/vigo/db/vigo.db",
  "files": [
    "db/vigo.db",
    "stacks/configcrates/nginx.vgo",
    "secrets/db_pass",
    "tls/cert",
    "server.yaml"
  ]
}