Decentralised · confidential · verifiable

Inside it runs Paperless-ngx, on confidential nodes of several operators and with backups at several independent storage providers: no single data centre. The VM is confidential (AMD SEV-SNP); at every start the processor confirms firmware, kernel and initrd, and the app checks that before it hands over a key. You choose how it runs: always on, around the clock, or on demand when you need it, for the bookkeeping, say.

Open the app →With a passkey, no account. The app itself is in German for now.

Paperless-ngx is an independent open source project (GPL-3.0). Paperless anywhere is offered by Le Space, is not affiliated with the project and is neither endorsed nor sponsored by it.

  • Resilient

    No single data centre: it computes on nodes of several operators and backs up to several independent storage providers. If a node fails, you start on another.

  • Confidential and checkable

    The VM’s memory and disk are encrypted; the node’s operator cannot read them. What the processor confirms you need not take from us: you can check it. What is still open is listed beside it, under “Verify”.

  • Around the clock or pay as you use

    A monthly package that fits how you work: always on, around the clock, or a package of hours to start, work and stop.

Don’t trust, verify: who holds which key, what the hardware confirms and what is still open →

Who is it for?

For everyone who does not want to entrust their document archive to a single data centre:

  • If you do not want to depend on one host or one storage provider staying up: the computing runs on nodes of several operators, the backups lie with several independent storage providers. If one fails, you start on another node and restore your backup.
  • If the confidentiality of your documents matters to you: the processor encrypts the VM’s memory, and its disk and the backups are encrypted. The node’s operator and its staff see encrypted data only, and so does whoever breaks into a data centre. What is still open here is listed under “Verify”.
  • Companies that need their archive around the clock: Paperless anywhere runs always on.
  • Freelancers and small businesses that need it only now and then: your own VM is ready in about a quarter of an hour, say once a week or at the month’s end for the bookkeeping, and uses no compute time in between.

How it works

  1. 01

    Create your vault

    A passkey on your device opens your vault. You also get 24 words to write down: they get you back in without the device. The vault needs no account and no e-mail address. Only when you buy a package does the payment service Stripe ask for an e-mail address, for the receipt and the subscription.

  2. 02

    Start

    The app finds a free TEE node, checks its hardware attestation and only then hands over the disk key. The backup is restored.

  3. 03

    Work

    Paperless-ngx in your browser as usual: upload, tag, search.

  4. 04

    Back up and shut down

    One click: the VM encrypts a backup, stores it decentrally and shuts down. From then on no compute time runs.

What is a TEE?

TEE stands for Trusted Execution Environment: a shielded area that the processor itself protects.

  • Encrypted by the processor

    With AMD SEV-SNP the CPU encrypts the VM’s memory with a key only it knows. The machine the VM runs on sees encrypted data only.

  • The operator cannot read along

    Whoever runs the node cannot read the VM’s memory or disk. What your VM writes also goes into an area it seals at every start with a key of its own. That key exists only in the VM’s memory.

  • Check first, then unlock

    Before the app hands over a key, it has the hardware confirm what was started: firmware, kernel and initrd. If the attestation does not match, the disk stays locked.

Resilient: no single data centre

Your Paperless anywhere depends on no particular machine: it can start on any of these confidential nodes. If one fails, you start on another and restore your backup. The list is live.

Loading the node list … has room full right now

The backups, in turn, lie with several independent storage providers, in the countries you choose.

What still depends on Le Space: balance and billing, the relay through which the app checks the VM’s attestation, and the delivery of the app.

Backups where you want them

The backup is encrypted inside the VM before it leaves, and stored with independent storage providers. They regularly prove that they still hold the data.

You choose: regions or countries (for example EU only) and 1 to 3 copies with different providers.

Loading providers …

Don’t trust. Verify.

Checkable: who holds which key · Not confirmed yet ↓

Where the image is built, how its disk is encrypted, who knows which secret and what the hardware confirms. With the points that are still open, and where you can check each claim yourself.

Diagram: a GitHub runner builds the image and encrypts it with LUKS; it is stored on Aleph. It runs in a confidential VM (AMD SEV-SNP): firmware, kernel, initrd and owner are measured, the image is not; what the VM writes goes into a data area with a random key only the VM has. Backups are encrypted with age inside the VM and stored on Filecoin. Your browser checks the VM’s attestation and only then sends the passphrase and secrets.1 · BuiltGitHub runnerrootfs.yml builds Debian,Docker, Caddy, scriptsand encrypts (LUKS)2 · StoredAleph storagethe image, encrypted,named by itsSTORE hash3 · RunsConfidential VMAMD SEV-SNP, on an Aleph nodeMeasured ✓firmware · kernel · initrd · ownerImage (LUKS): not measuredopens only withthe image passphraseData area (dm-crypt)random key at every start,in the VM’s memory only4 · Backed upFilecoinencrypted with ageinside the VM,to your keyYouYour browser, your vault① checks the VM’s AMD attestation② only then: passphrase, secretsvia a relay that only forwardsKeysImage passphrase: one per imageData area: per start, in the VM onlyVault: with you only Diagram: a GitHub runner builds the image and encrypts it with LUKS; it is stored on Aleph. It runs in a confidential VM (AMD SEV-SNP): firmware, kernel, initrd and owner are measured, the image is not; what the VM writes goes into a data area with a random key only the VM has. Backups are encrypted with age inside the VM and stored on Filecoin. Your browser checks the VM’s attestation and only then sends the passphrase and secrets.1 · BuiltGitHub runnerrootfs.yml builds Debian,Docker, Caddy, scriptsand encrypts (LUKS)2 · StoredAleph storagethe image, encrypted,named by itsSTORE hash3 · RunsConfidential VMAMD SEV-SNP, on an Aleph nodeMeasured ✓firmware · kernel · initrd · ownerImage (LUKS): not measuredopens only withthe image passphraseData area (dm-crypt)random key at every start,in the VM’s memory only4 · Backed upFilecoinencrypted with ageinside the VM,to your keyYouYour browser, your vault① checks the VM’s AMD attestation② only then: passphrase, secretsvia a relay that only forwardsKeysImage passphrase: one per imageData area: per start, in the VM onlyVault: with you only

What the hardware confirms

  • Your app checks a report from the AMD processor in the browser: signed by AMD (with certificates from AMD’s key service), not revoked, with a firmware level high enough.
  • The measurement in the report matches the firmware, kernel and initrd of the runtime fixed in the app, and a boot line naming your app key as the owner. The app computes it itself.
  • The report carries a fresh random value and the VM’s TLS key: the connection ends in exactly this VM. Only then do the passphrase and secrets go out, signed by your app key; the VM accepts them only with that signature.
  • The relay in between carries encrypted bytes only. The checking happens in your browser, not there.

Not confirmed yet

  • The image’s content is not measured. That the VM runs the published image rests, for now, on its disk opening only with the image passphrase, not on a measurement by the hardware.
  • The image passphrase is the same for every VM of an image, and Le Space knows it. That is why everything your VM writes goes into its own data area. An image whose passphrase only your vault knows is in preparation.
  • The build cannot be repeated bit for bit, because Debian packages are fetched while it runs. What goes in can be read.
  • Further points from the ongoing security audit are still open.

Who knows which secret

5 secrets
SecretWho knows itWho does not
Image passphraseopens the image’s LUKS disk. The same for every VM of an image; the image holds nothing personal. Who knows itLe Space: a release image gets a random passphrase while it is built on a GitHub-hosted runner, and the run puts it out only encrypted (age) to Le Space. Also your app (sealed in your profile) and the VM at its start. Who does notthe node’s operator
Data area keyseals everything the VM writes: documents, database, certificate. Who knows itthe VM only, in memory only, new and random at every start. After the stop it no longer exists. Who does notyou, the app, Le Space, the node
Vault master secret32 random bytes; every key below is derived from it. Who knows ityou: sealed by your passkey (PRF) and by the 24 words, open only in your browser’s memory. Who does notLe Space, Aleph (it holds it sealed only), the VM
Paperless passwords, session keysderived from the vault. Who knows ityour browser; the VM gets them after the check, for this start. Who does notLe Space, the node
Backup key (age)opens your backups; derived from the vault, or pasted in by you. Who knows ityour browser. The VM encrypts to its public part only; it gets the key itself only for a restore and deletes it afterwards. Who does notLe Space, the storage providers: they hold ciphertext only.

What the evidence looks like in the app

Sample, not a real VM

While your VM runs, the app shows for every claim its value, how it knows it and where you can check it. Here with made-up values, since there are no real ones without a booked VM; only the runtime is the real one, it is the same for everyone. In the app, the links lead to your own messages on Aleph.

Evidence of this VM Sample, not a real VM 4 checked by the app · 3 reported · 2 not confirmed
  1. Runtimechecked by the app

    Firmware, kernel and initrd. Fixed in the app; if Aleph delivers anything else, the app starts nothing.

    Name
    snp-1.2
    Aleph message
    5cd480a138c5969b18d1f6850a5fe0176e6f22e65a323ad9593e71165fb687bc
    Bundle (SHA-256)
    083630b3b5e22a95ab8f48fdf8a67d80d03420a075ccef97a25d73f8a46378bf
    Boot line
    console=ttyS0 luks=1 owner={owner}
  2. Measurementchecked by the app

    Computed by the app from the runtime and a boot line naming your app key as the owner, and written into the INSTANCE message.

    computed
    example-measurement-0000000000000000
  3. Instancechecked by the app

    The INSTANCE message on Aleph, signed by your app.

    Message
    example-instance-0000000000000000
    paid by
    0xExample-0000000000000000
  4. Nodereported, not confirmed by the hardware

    The Aleph node the VM runs on, and its address.

    Node
    example-node-0000000000000000
    Address
    paperless.example
  5. Attestationchecked by the app

    The AMD processor’s report, checked in your browser: signed by AMD, its measurement one of those computed, bound by a fresh random value to the VM’s TLS key.

    Measurement in the report
    example-measurement-0000000000000000
    Policy
    0x30000
    Firmware levels
    bootloader 0 · tee 0 · snp 0 · microcode 0
    Time
    2026-01-01T12:00:00.000Z
  6. Relaynot confirmed

    The server through which your browser reached the VM for the check.

    One of Le Space’s relays, not attested: an ordinary server on Aleph. The app accepts it only if Aleph holds it as a running instance of a Le Space account. It forwards encrypted bytes only; it cannot read them or change them unnoticed, the checking happens in your browser. It can drop connections, and it sees connection data: your IP address, which VM on which node, when and how much.

    Relay
    relay.example
  7. Imagenot confirmed

    The encrypted disk the VM boots from, named by its STORE hash.

    The image’s content is not measured. That the VM boots the published image rests on its disk opening only with the image passphrase.

    STORE hash
    example-image-0000000000000000
  8. Data areareported, not confirmed by the hardware

    Where the VM writes.

    The VM reports: a data area of its own, encrypted with a key of this start that only it has.

  9. Backupsreported, not confirmed by the hardware

    The last backup that reached storage providers.

    Encrypted with age inside the VM, to your key; the providers hold ciphertext only.

    Time
    2026-01-01T14:00:00.000Z
    Copies
    2
    Piece (piece CID)
    example-piece-0000000000000000

Check it yourself

8 places with links
  • The VM’s runtime

    Firmware, kernel and initrd: the Aleph message whose hash is fixed in the app. If Aleph delivers anything else, the app starts nothing.

  • Your VM and its measurements

    The INSTANCE message of your app address names the measurements the app put in. For a running VM the app shows instance, node, measurements and the result of the check under “Evidence of this VM”, with links to exactly your messages.

  • AMD SEV-SNP

    How the report is built and which certificates it is checked against.

  • The image

    The app shows the STORE hash in the setup. The workflow rootfs.yml builds it from rootfs/build-image.sh; every run’s summary names the hash and the source commit.

  • The data area

    The app shows whether a running VM sealed its data area. If that fails, Paperless-ngx does not start.

  • The backups

    Data sets and pieces are public on Filecoin, their content encrypted. At a restore the VM checks every piece against its content address (piece CID).

  • This web app

    It is served from IPFS. Which version the domain serves, its DNSLink record shows (dig TXT _dnslink.paperless.le-space.de); every release names its CID.

  • In detail

    The description this page is written from.

The source code is public on GitHub: github.com/Le-Space/paperless-anywhere.

Next: an image of your own

Not in operation yet. Today every VM of an image shares its passphrase, and Le Space knows it (see “Checkable”). This is where it is going: the passphrase comes from your vault, and nobody else has it: not Le Space, not the node, not GitHub.

In preparation

  1. 01

    Public image

    The system Paperless-ngx runs in is the same for everyone and holds no secret. The image workflow can already publish it unencrypted, with its hash; anyone can recompute it.

  2. 02

    Attested builder

    A small service in a confidential VM, measured as a whole, together with the image it seals. The app will have the hardware confirm that exactly the published code runs there with exactly that image.

  3. 03

    Your image

    Only then the app sends the passphrase from your vault. The service seals the image with it and forgets it again. The app fetches the sealed image over the same attested channel and stores it on Aleph itself.

  4. 04

    Your VM

    At the start the VM opens the disk with your passphrase. A disk that was not sealed with it does not open, and nothing starts.

Who will know the passphrase

  • Your vault: yes
    derives it
  • The builder: briefly
    during the build, in memory only
  • Your VM: briefly
    at the start, in memory only
  • Le Space: no
  • The node’s operator: no
  • GitHub: no

What can then be compared in public: the image’s hash and the builder’s measurement. Your encrypted image looks different for every person. Where it stands: the builder is built. In a trial it ran on Aleph as a measured VM, passed the hardware’s check there and sealed the real image. It is not in operation: no builder runs permanently and the app names none; only then does “Mein Image bauen” appear in the setup.

Prices

Choose a monthly package: always on, around the clock, or the hours you need in a month.

  • 15 hours €6.40 per month Backup included
  • 100 hours €16.40 per month Backup included
  • Always on, around the clock €90.50 per month Backup included

All prices include 19% VAT.

Included in every package: up to 8 GB of documents.

The encrypted backup in three copies is included in every package. You need it for your documents to come back after a stop: stopping erases the VM, and the next start restores everything from the backup.

Without a package you can have your backups kept for a year, for €18 once. Keeping is not opening: restoring needs compute time, that is a package or extra hours.

Example: two hours a week are about 8.7 hours a month and fit in the smallest package.

Frequently asked questions

Is Paperless anywhere part of the Paperless-ngx project?

Paperless-ngx is an independent open source project (GPL-3.0). Paperless anywhere is offered by Le Space, is not affiliated with the project and is neither endorsed nor sponsored by it.

What is Paperless-ngx?

Paperless-ngx is the open source software that runs in your VM: it takes in documents, recognises their text and makes them searchable. With Paperless anywhere it runs in a confidential VM of your own, around the clock or on demand, and is backed up.

Does everyone get the same software?

Yes. The system is the same for everyone. Today one passphrase per image opens the disk; every VM of that image shares it, and Le Space knows it. That is why what your VM writes goes into a data area with a key only the VM has. In preparation: an attested builder seals the image for each person separately, with a passphrase from their vault. The documentation says how image and builder can then be checked.

Do I need an account?

Not for the vault. A passkey on your device opens it; the 24 words are the way back in if the device is missing. Le Space can neither open nor recover the vault. When you buy a package, the payment service Stripe asks for an e-mail address, for the receipt and the subscription.

Can I pay the providers myself?

Yes. Instead of a package you then pay the providers directly from your own wallet. The VM on Aleph and the backups on Filecoin belong to your wallet’s address in that case.

  • What you need: a wallet (MetaMask, for example), Aleph credits for the VM, and USDFC and a little FIL for the backups.
  • What you approve: your wallet lets the app start and delete VMs for you, and lets a session key store backups for a limited time. Your wallet’s seed stays with you.
  • What still comes from Le Space: the app, the image with its present image passphrase, and the relay through which the app checks the VM’s attestation.

You set this up in the app, under “Einrichtung” (the app itself is in German).

How safe is my own device in this?

Your documents are encrypted in the VM and in the backups, and the keys to them come into being only with you, when you open the vault. The limit is the browser on your device, as with every web app and every password manager in a browser: what lies open there can be read by a browser extension with access to the page, or by malware. It cannot get at the passkey itself, and without your approval by fingerprint or PIN the passkey opens nothing. A little care puts you on the safe side:

  • Use a browser profile of its own, without extensions, for Paperless anywhere, and install the app there.
  • Or take a private window, a phone or a tablet.
  • Enter the 24 words only in the app at paperless.le-space.de and keep them on paper. The passkey works for this address only; a fake page can still ask for the words.
  • Lock the vault when you are done, with the “Sperren” (lock) button; the app itself is in German.

The details are in the security model.

What does it cost while Paperless anywhere is not running?

Only a running instance uses hours. Your monthly package runs on, though, and is billed every month until you cancel. The backup is included in the package and runs on with it. After the end of the paid period no new backups are made; the existing ones stay retrievable for at least 30 more days.

Ready?

Creating a vault takes a minute. No account, no password.

Open the app →