Documentation

From install to first
encrypted backup.

About five minutes on a host that already has your database on it.

  1. 01

    Install the agent

    A single static binary with zero third-party dependencies. The installer checks the download against our published SHA256SUMS before it puts anything on PATH. You also need your engine's client tools - pg_dump, mysqldump or mongodump - available.

    curl -fsSL https://odyssie.net/install.sh | sh
    
    # or download and verify it yourself
    curl -fsSLO https://odyssie.net/dl/latest/odyssie-agent-linux-amd64
    curl -fsSL  https://odyssie.net/dl/latest/SHA256SUMS | sha256sum -c --ignore-missing
    sudo install -m 0755 odyssie-agent-linux-amd64 /usr/local/bin/odyssie-agent
  2. 02

    Pair it with your account

    Create an agent in the dashboard and copy its key - it is shown once and we only keep its SHA-256. The agent stores it encrypted at rest on the host.

    odyssie-agent login \
      --api-url=https://odyssie.net \
      --token=dba_xxxxxxxxxxxxxxxx
    
    Logged in. Agent ac32e41c-… is now healthy.
  3. 03

    Tell it how to reach the database

    The connection string is stored encrypted on this host and never sent to the control plane. The target name must match the database name in your dashboard.

    odyssie-agent target add \
      --name=orders \
      --db-type=postgres \
      --connection-string="postgres://user:pass@localhost:5432/orders"
    
    odyssie-agent target list
  4. 04

    Set a passphrase and back up

    The passphrase derives your encryption key and is never transmitted. Put it in a password manager before this command runs - nobody, including us, can recover it.

    export ODYSSIE_ENCRYPTION_PASSPHRASE='correct-horse-battery-staple'
    
    odyssie-agent backup --name=orders --retention=30d
    
      read 4.20 GB from pg_dump, uploaded 1.31 GB encrypted
      locked: until 2026-12-24 (WORM)
  5. 05

    Leave it running

    Set the cron schedule and retention per database in the dashboard. The agent polls for queued backups and restore drills, so no inbound firewall rule is needed.

    odyssie-agent run --interval=30s
    
    # as a service, with the passphrase supplied by systemd
    systemctl enable --now odyssie-agent
  6. 06

    Restore, and prove it restores

    The passphrase is required here too - without it the ciphertext is inert. Run verify against a scratch database to check a backup restores before you need it to.

    odyssie-agent restore \
      --backup-id=6e783318-dea2-4815-b54d-3efbdf0f098e \
      --target-db="postgres://user:pass@localhost:5432/orders_restored"
    
    odyssie-agent verify --latest --name=orders \
      --scratch-db="postgres://user:pass@localhost:5432/postgres"

Need the full reference?

Detailed guides for point-in-time recovery, restore drills and multi-host deployments are in your dashboard once you sign in.