Zero-knowledge backup and restore for ~/.hermes

Keep the person in the machine.

Your agent’s memory lives on one disk. Hermes Remote Backup protects it each night. Hermes Remote Restore carries it to the machine you use next.

Say this to your agent “Set up cloud backups for yourself using hermesbackup.com”

You approve one pairing code and save one recovery key. Your agent handles the rest.

Your agent’s memory moving safely from this machine to the next A continuous blue line connects the current machine, an encrypted cloud backup, and a restored agent on a new machine. Your agent today memories · skills · sessions · config age X25519 Your agent tomorrow same memory · different machine
encrypted before upload server sees ciphertext only decrypted only on your machine

Back up your agent’s memory. Restore it anywhere.

Backup and restore are two separate skills with one shared promise: a machine can fail without taking your agent with it.

Two verbs. One continuous thread.

Backup runs quietly on schedule. Restore stays dormant until the day you need it. Keeping them separate means the always-on backup path never holds your decryption key.

Hermes Remote Backup

Each night · while everything is working

Creates a WAL-safe snapshot through the native hermes backup command, encrypts it locally with age, uploads ciphertext directly to R2, then verifies the stored size and SHA-256.

hermesbackup.sh backup --quick

Hermes Remote Restore

Only when called · on the new machine

Downloads the ciphertext through a five-minute presigned URL, decrypts it locally with your recovery key, verifies it, then rebuilds ~/.hermes with memories, skills, sessions, and config intact.

hermesbackup.sh restore

The server holds the box. You hold the key.

Zero-knowledge is not a privacy setting. It is the shape of the system: encryption happens before upload, backup bytes never stream through the Worker, and the private key never reaches us.

What HermesBackup stores

  • Encrypted backup blobsciphertext
  • Size and SHA-256metadata
  • Labels and timestampsmetadata
  • Hashed device tokensauth

Backup bytes travel directly between your machine and Cloudflare R2 over short-lived presigned URLs.

What only you hold

  • Private keynever uploaded
  • Plaintext filesnever uploaded
  • Passphrasenever transmitted
  • Ability to decryptyours alone

Lose the private key and the backups become permanently unreadable. We cannot recover it.

The morning the old machine does not wake up.

Install Hermes Agent on a fresh machine. Ask it to restore itself. Approve one pairing code and provide the recovery key locally.

Friday · old machine

Disk gone. Agent offline.

The local copy is gone. The encrypted backup is not.

Monday · new machine

“I’m back.”

The restored agent has the same memory, skills, sessions, and configuration it had before the failure.

Choose how much history to keep.

Both plans include Remote Backup, Remote Restore, local age encryption, direct R2 transfer, and the same zero-knowledge architecture.

Free

$0forever

2 GB storage · 60 objects · 4 uploads per day

Start free

Pro

$10per year

10 GB storage · 500 objects · 24 uploads per day · missed-backup alerts

Choose Pro

Honest answers before you trust us with the ciphertext.

What happens if I lose my recovery key?

Your backups remain stored but become permanently unreadable. There is no master key, escrow copy, or support override. Save the recovery kit in your password manager when setup generates it.

Can HermesBackup read my agent’s memory?

No. Encryption happens locally before upload. We store ciphertext and operational metadata such as encrypted size, SHA-256, labels, and timestamps.

What happens when the free quota is full?

The API returns HTTP 507 with current usage. The client follows your chosen policy: fail loudly, or rotate the oldest backups. The server never silently deletes data to make room.

Why are backup and restore separate skills?

Backup runs automatically and needs only the public key. Restore runs only when requested and receives the private key locally at that moment. The scheduled backup path therefore cannot decrypt anything.