saved.sh
DocsPricingDownloadBlog

By source

  • Database backupsPostgres today, on any of the three paths.
  • Files and foldersDirectories on your own hardware. Local path only.
  • Anything you can scriptThe escape hatch, with no reduced guarantees.

By how it runs

  • Backups you driveCLI or API, driven by whatever you already run.
  • Backups on your infrastructureOur worker, your hardware. We never hold the credential.
  • Fully managed backupsWe execute and orchestrate. Nothing to host.
  • Compliance and custodyYour bucket, your account, our orchestration.

Understand it

  • How it worksThree paths, one artifact lifecycle
  • SecurityWhat we can and cannot see
  • CompareAgainst snapshots, cloud-native and scripts
Get started
saved.sh

External backups for the systems a business actually runs on.

A product of reops.

Product

  • Documentation
  • Solutions
  • Compare
  • How it works
  • Security
  • Pricing
  • Download

Developers

  • CLI
  • REST API
  • Recover

Company

  • Blog
  • Privacy
  • Terms

© 2026 saved.sh

Your data survives what holds it.

All postsSecurity

What an attacker gets if they breach us

We run the exercise on ourselves and publish the answer. Ciphertext, file sizes and timestamps, and no path to the plaintext that does not run through your own machine.

4 August 2026·saved.shView as Markdown

Every vendor tells you they take security seriously. It is the least falsifiable sentence in the industry, and it says nothing about what happens when the sentence turns out to be untrue.

So here is a more useful exercise, run on ourselves and published rather than kept in a slide: assume we are fully breached. Someone has our database, our object storage, and our credentials. What did they just get?

The short answer

Ciphertext, file sizes, checksums and timestamps. No plaintext, no keys, and no route to either that does not go through a machine we have never touched.

Where the line is

Encryption happens on the machine that produced the data, before anything crosses the network. Not on arrival, not at rest on our side. That single placement is what makes the rest of this post short.

YOUR MACHINEreadable datayour private keynever leavesTHE NETWORKENCRYPTED HEREWHAT WE HOLDciphertextand metadatasizechecksumcreated atkey fingerprinttake all of it and it still does not open
Everything to the right of the dashed line is what a breach of us yields.

We hold the public half of your key and its fingerprint. That is enough to encrypt something to you. It is not enough to read anything back, and there is no second copy of the private half anywhere in our system, because we never received one.

YOURS, AND IT STAYS YOURSprivate halfnever uploaded, never escrowedlosing it is unrecoverable, by you and by usPUBLIC HALFOURSthe public key and its fingerprintenough to encrypt to you,never enough to read anything backno decryption path exists on our side
No escrow. It has a cost, and the cost is on us to say out loud.

The cost of that, stated plainly

No escrow means no recovery. If you lose your private key, the artifacts encrypted to it are gone, for you and for us, permanently. There is no support ticket that fixes it and no internal tool we are declining to use.

This is a real trade, not a feature

We could hold a copy of your key and offer recovery. It would be a better support experience and a worse product, because the thing that makes a breach of us uninteresting is precisely that there is nothing here worth stealing.

What about credentials?

The other thing worth stealing is the credential to your database. On two of the three paths we never have one.

Push

We hold nothing

you connect, we get a file

Your worker

We hold nothing

payload stays in your config

Managed

We hold a credential

in a secrets manager

The only path where we hold a credential is the one where you ask us to connect.

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
The only path where we hold a credential is the one where you explicitly ask us to connect.

If you push from your own automation, you connect to your own source and we receive a file. If you run a worker, the source payload lives in that worker's config, and our API rejects it if you try to send it to us. Only on the fully managed path do we hold anything, and there it sits in a secrets manager and is released to a single run.

What we cannot do, including on purpose

0artifacts

we can read the contents of

0keys

we could decrypt with if compelled

0ways

to shorten a hold once it is set, for you or for us

That last one deserves its own note, and it needs a limit stated with it. A hold is stamped onto an artifact when it is written, and it can be lengthened but never shortened or removed, through any API, by you or by us. So the attack it exists for, loosen the policy and then delete, does not work.

What it does not do is stop someone holding our storage credentials. The hold is enforced in our code, not at the storage layer, so a full compromise of us is still a path to deletion. That is a real gap, it is deliberate rather than forgotten, and closing it means a storage-layer lock we have not turned on yet.

LOCKED FOR 90 DAYSwrittenexpiresswept on scheduleCANNOT BE SHORTENED, BY YOU OR BY US
The hold can be extended, never shortened. It stops the account holder and our own sweep, and not someone holding our storage credentials.

What we are not claiming

We have no SOC 2 report and no compliance audit of any kind, and none is in progress. If your procurement process requires one, we are not yet a vendor you can approve, and you should find that out here rather than three calls in.

We also publish no uptime SLA. What we will commit to is narrower and more useful: getting your data out is designed to work in every account state, including one that has run out of credit.

We would rather be the vendor whose security page is short and true.

Read next

You already have the automation. You are missing the vault

Every backup product starts by asking you to adopt its scheduler. That is the wrong first ask, and it is why most teams still have a cron job nobody has looked at since March.

Backups that survive the thing that took out production.

How it worksStart free