eljojo/rememory

a digital safe with multiple keys, held by people you trust

Go

1,464

458 commits

updated Sep 19, 2026

See the code

README

🧠 ReMemory

A digital safe with multiple keys, held by people you trust.

ReMemory protects your files and divides the key among people you choose. You decide how many must come together to open it. Each person gets a self-contained recovery tool that works offline, in any browser.*

* Time-locked archives need a brief internet connection at recovery time.

Recovery works without this project

Each person receives a bundle containing recover.html — a browser-based recovery tool. No servers. No dependencies. No need for this project to exist when recovery happens.

Download demo bundles to try the recovery process yourself.

graph TB
    subgraph seal["① SEAL (you do this once)"]
        A[Your Files] --> B[Encrypt with age]
        B --> C[Split key into 5 pieces]
        C --> D1[Alice's bundle]
        C --> D2[Bob's bundle]
        C --> D3[Camila's bundle]
        C --> D4[Dominique's bundle]
        C --> D5[Elias's bundle]
    end

    subgraph recover["② RECOVER (friends do this together)"]
        R1[Alice opens recover.html] --> R2[Her piece is pre-loaded]
        R2 --> R3[Drags Bob's file]
        R3 --> R4[Drags Camila's file]
        R4 --> R5{3 of 5 pieces}
        R5 -->|Threshold met| R6[Files unlocked]
        R6 --> R7[Download files]
    end

    D1 -.-> R1
    D2 -.-> R3
    D3 -.-> R4

Any 3 pieces can reconstruct the key, but a single piece reveals nothing — not "very little," mathematically zero information.

The number of people and the threshold are up to you: 2-of-3 for a small circle, 3-of-5 for a wider group, or 2-of-2 for a couple.


Two Ways to Use ReMemory

Create bundles in your browser — no installation required.

Everything runs locally. Your files never leave your device.

The bundle creator — add friends, add files, generate

💻 CLI and Docker

For automation, scripting, or if you prefer the terminal.

# macOS (Homebrew)
brew install eljojo/rememory/rememory

# Linux (x86_64)
curl -Lo rememory https://github.com/eljojo/rememory/releases/latest/download/rememory-linux-amd64
chmod +x rememory
sudo mv rememory /usr/local/bin/

# Docker (self-hosted)
docker run -d \
  --name rememory \
  -p 8080:8080 \
  -v rememory-data:/data \
  ghcr.io/eljojo/rememory:latest

# Nix
nix run github:eljojo/rememory

See the CLI User Guide or the Self-Hosted Guide for complete documentation.


Try It First

Before protecting real secrets, try the recovery process:

  1. Download demo bundles (5 friends, any 3 can recover)
  2. Open bundle-alice/recover.html in your browser
  3. Alice's piece is pre-loaded — drag two more README files onto the page. Dragging an entire bundle works too.
  4. When enough pieces are combined, the files unlock

This is the closest thing to what a real recovery feels like.


What Friends Receive

Each friend gets a ZIP bundle containing:

FilePurpose
README.txtInstructions, their unique piece, contact list
README.pdfSame content, formatted for printing
MANIFEST.ageYour encrypted files (only included separately when over 10 MB)
recover.htmlRecovery tool (~300 KB), runs in any browser. For smaller archives, everything is embedded — just open this file

A single piece reveals nothing. But tell your friends to keep their bundle somewhere safe — it's their responsibility to you.

Example README PDF — page 1

More pages

Example README PDF — page 2 Example README PDF — page 3


FAQ

Why ReMemory?

We all have digital secrets that matter: password manager recovery codes, cryptocurrency seeds, important documents, instructions for loved ones. What happens to these if you're suddenly unavailable?

Traditional approaches fail:

  • Give one person everything → Single point of failure and trust
  • Split files manually → Confusing, error-prone, no encryption
  • Use a password manager's emergency access → Relies on company existing
  • Write it in a will → Becomes public record, slow legal process

ReMemory takes a different approach:

  • No single point of failure — requires multiple people to cooperate
  • No trust in any one person — even your most trusted friend can't access secrets alone
  • Offline and self-contained — recovery works without internet or servers*
  • Designed for non-technical people — clear instructions, not cryptographic puzzles
Why I Built This

Two things drove me to create ReMemory.

First, I watched a documentary about Clive Wearing, a man who has lived with a 7-second memory since 1985. Seeing how fragile memory can be made me think about what would happen to my digital life if something similar happened to me.

Second, I've had several concussions from cycling accidents. Each time, I've been lucky to recover fully. But each time, I've been reminded that our brains are more fragile than we like to think.

ReMemory is my answer: a way to ensure the people I trust can access what matters, even if I can't help them.

Threat Model

ReMemory assumes:

  • Your friends will only cooperate when needed
  • At least threshold friends will keep their bundle safe
  • Your device is trusted when you create bundles
  • The browser used for recovery is not compromised

ReMemory does NOT rely on:

  • Any server or cloud service
  • Any ReMemory website or infrastructure
  • Any long-term availability of this project
  • The internet during recovery

See the Security Review for details.

Cryptographic Guarantees
ComponentAlgorithm
Encryptionage (scrypt passphrase mode)
Key derivationscrypt (N=2²⁰, r=8, p=1)
Secret sharingShamir's Secret Sharing over GF(2⁸)
IntegritySHA-256 checksums
Passphrase256 bits from crypto/rand
Time lock (optional)drand tlock (BLS12-381 IBE, inner layer)

A single piece reveals nothing about your secret. This is a mathematical guarantee of Shamir's Secret Sharing — any fewer than threshold pieces contain zero information about the original secret.

Time-Delayed Recovery (Experimental)

You can set a waiting period when creating bundles. Even with enough pieces, the files stay locked until the date you chose — for example, 30 days, 6 months, or a specific date.

This uses the League of Entropy (drand), a distributed randomness beacon run by organizations around the world. At recovery time, a brief internet connection is needed — not to send data, but to verify that enough time has passed.

CLI: rememory seal --timelock 30d (or 6m, 1y, 2027-06-15T00:00:00Z) Web: Enable under "Advanced options" in the bundle creator.

Important caveats:

  • Recovery requires internet access (to check the drand beacon)
  • If the League of Entropy stops operating before your time lock expires, recovery won't work
  • Without the time lock, recovery works fully offline — the time lock adds this one dependency
Failure Scenarios
What if...Result
A friend loses their bundle?Fine, as long as threshold friends remain
A friend leaks their piece publicly?Harmless without threshold-1 other pieces
ReMemory disappears in 10 years?recover.html still works — it's self-contained
Browsers change dramatically?Pure JavaScript with no external dependencies
You forget how this works?Each bundle's README.txt explains everything
Some friends can't be reached?That's why you set threshold below total friends
Time lock used, but no internet at recovery?Wait and try again — data is safe, just needs the beacon check
League of Entropy shuts down?Time-locked archives become unrecoverable — only a risk if you use the time lock feature
Development
# Using Nix (recommended)
nix develop

# Install dependencies
npm install

# Build
make build

# Run tests
make test         # Unit tests
make test-e2e     # Browser tests (requires: npm install)

# Preview website locally
make serve        # Serves at http://localhost:8000
Other Similar Tools

ReMemory isn't the first tool to use Shamir's Secret Sharing. Its focus is making recovery possible for non-technical people, without installing anything.

Shamir's Secret Sharing tools

ToolTypeInputSplitting MethodOutputNon-technical RecoveryOfflineContact Details
eljojo/rememoryCLI + WebFiles & foldersShamir's SSSZIP bundles with PDF instructions, recover.html, encrypted archiveYes — open HTML in browserYesYes — included in each bundle
jesseduffield/horcruxCLIFilesShamir's SSSEncrypted file fragmentsNo — requires CLIYesNo
jefdaj/horcruxCLIFiles (GPG)Shamir's SSS (via ssss).key + .sig files, steganography in images/audioNo — requires CLI + GPGYes (TAILS recommended)No
paritytech/banana_splitWeb appText onlyShamir's SSS + NaClPrintable QR codesPartial — scan QR + type passphraseYes (self-contained HTML)No
cyphar/paperbackCLIFilesShamir's SSS in GF(2^32)Printable PDFs with QR codes + text fallbackPartial — scan QR or type textYesNo
simonfrey/s4 (site)Web GUI + Go libText/bytesShamir's SSS + AESText sharesNo — copy/paste sharesYes (save HTML locally)No
xkortex/passcruxCLIText/passphrasesShamir's SSSText shares (hex/base32/base64)No — requires CLIYesNo
ssssCLIText (128 char max)Shamir's SSSText sharesNo — requires CLIYesNo
cedws/amnesiaCLIText/data streamsShamir's SSS + argon2idJSON file (Q&A-based, single user)No — requires CLIYesNo
henrysdev/HaystackCLIFilesShamir's SSSEncrypted file fragmentsNo — requires CLIYesNo
antonio-ivanovski/shared-secret-encrypt (site)Web appText onlyShamir's SSS + AES-GCMBase58-encoded shares + encrypted messagePartial — web UI for decryptYes (client-side, can save HTML)No
MinorGlitch/ethernityCLI (Python)FilesShamir's SSS + AES-256-GCMPrintable PDFs with QR codes + text fallback, bundled browser recovery kitPartial — scan QR or type textYesNo

Other approaches

ToolTypeInputMethodOutputNon-technical RecoveryOfflineContact Details
msolomon/keybearer (site)Web appFilesLayered encryptionEncrypted file downloadPartial — web UI for decryptionYes (client-side JS)No
RobinWeitzel/secret_sharer (site)Web appText onlySplit-key AES-256 (fixed 2-of-2)PDF with 2 QR codes + security codeYes — scan QR codesYes (client-side)No
Bitwarden Emergency AccessWeb serviceVault items + attachmentsRSA key exchange (1-of-1)Live vault access (no file output)Yes — web UINo (server required)Via Bitwarden accounts
Apple Digital LegacyBuilt-in (Apple)Apple Account dataLegacy Contact designationiCloud data access (3-year window)Yes — Apple handles itNo (Apple servers required)Via Apple Account
potatoqualitee/eol-drGuide/checklistN/AN/A (not a tool)Printable checklist covering accounts, finances, subscriptions, devicesN/AYes (print it)Template fields

Key takeaways:

  • Most tools only handle text or passphrases — eljojo/rememory, both horcrux projects, henrysdev/Haystack, cyphar/paperback, MinorGlitch/ethernity, and msolomon/keybearer are the few that handle actual files.
  • Only eljojo/rememory generates a self-contained recovery tool (recover.html) bundled with each piece — no installation, no internet, no CLI needed.
  • Only eljojo/rememory includes contact details in each bundle so friends know how to reach each other during recovery.
  • paritytech/banana_split and cyphar/paperback output QR codes for printing, which is great for paper-based backups of short secrets.
  • Bitwarden Emergency Access is fundamentally different — it delegates vault access to one trusted person (not M-of-N splitting) and requires an online service.
  • Apple Digital Legacy only activates after death (requires proof of death documents) — it does not cover incapacity, memory loss, or other scenarios. Limited to Apple ecosystem (iCloud data, not Keychain passwords). Access expires after 3 years.
  • potatoqualitee/eol-dr is not a tool but a valuable end-of-life planning checklist covering accounts, finances, subscriptions, and devices — complementary to any tool here.
  • ssss is the classic Unix implementation but is limited to 128 ASCII characters and requires a terminal.
  • GitHub offers a successor feature for maintaining ownership continuity of repositories — useful for ensuring your code projects remain accessible.

License

Apache-2.0 — Copyright 2026 José Albornoz

Credits

Built on:

Translations by:

The protocol was originally designed in a Google Doc in 2023.

age-encryption
dead-mans-switch
deadmanswitch
digital-estate
digital-estate-planning
disaster-recovery
encryption-tool
family
file-encryption
key-management
offline-first
privacy
secret-sharing
shamir-secret-sharing
shamirs-secret-sharing
webassembly

eljojo/rememory

a digital safe with multiple keys, held by people you trust

Go

1,464

458 commits

updated Sep 19, 2026

See the code

README

🧠 ReMemory

A digital safe with multiple keys, held by people you trust.

ReMemory protects your files and divides the key among people you choose. You decide how many must come together to open it. Each person gets a self-contained recovery tool that works offline, in any browser.*

* Time-locked archives need a brief internet connection at recovery time.

Recovery works without this project

Each person receives a bundle containing recover.html — a browser-based recovery tool. No servers. No dependencies. No need for this project to exist when recovery happens.

Download demo bundles to try the recovery process yourself.

graph TB
    subgraph seal["① SEAL (you do this once)"]
        A[Your Files] --> B[Encrypt with age]
        B --> C[Split key into 5 pieces]
        C --> D1[Alice's bundle]
        C --> D2[Bob's bundle]
        C --> D3[Camila's bundle]
        C --> D4[Dominique's bundle]
        C --> D5[Elias's bundle]
    end

    subgraph recover["② RECOVER (friends do this together)"]
        R1[Alice opens recover.html] --> R2[Her piece is pre-loaded]
        R2 --> R3[Drags Bob's file]
        R3 --> R4[Drags Camila's file]
        R4 --> R5{3 of 5 pieces}
        R5 -->|Threshold met| R6[Files unlocked]
        R6 --> R7[Download files]
    end

    D1 -.-> R1
    D2 -.-> R3
    D3 -.-> R4

Any 3 pieces can reconstruct the key, but a single piece reveals nothing — not "very little," mathematically zero information.

The number of people and the threshold are up to you: 2-of-3 for a small circle, 3-of-5 for a wider group, or 2-of-2 for a couple.


Two Ways to Use ReMemory

Create bundles in your browser — no installation required.

Everything runs locally. Your files never leave your device.

The bundle creator — add friends, add files, generate

💻 CLI and Docker

For automation, scripting, or if you prefer the terminal.

# macOS (Homebrew)
brew install eljojo/rememory/rememory

# Linux (x86_64)
curl -Lo rememory https://github.com/eljojo/rememory/releases/latest/download/rememory-linux-amd64
chmod +x rememory
sudo mv rememory /usr/local/bin/

# Docker (self-hosted)
docker run -d \
  --name rememory \
  -p 8080:8080 \
  -v rememory-data:/data \
  ghcr.io/eljojo/rememory:latest

# Nix
nix run github:eljojo/rememory

See the CLI User Guide or the Self-Hosted Guide for complete documentation.


Try It First

Before protecting real secrets, try the recovery process:

  1. Download demo bundles (5 friends, any 3 can recover)
  2. Open bundle-alice/recover.html in your browser
  3. Alice's piece is pre-loaded — drag two more README files onto the page. Dragging an entire bundle works too.
  4. When enough pieces are combined, the files unlock

This is the closest thing to what a real recovery feels like.


What Friends Receive

Each friend gets a ZIP bundle containing:

FilePurpose
README.txtInstructions, their unique piece, contact list
README.pdfSame content, formatted for printing
MANIFEST.ageYour encrypted files (only included separately when over 10 MB)
recover.htmlRecovery tool (~300 KB), runs in any browser. For smaller archives, everything is embedded — just open this file

A single piece reveals nothing. But tell your friends to keep their bundle somewhere safe — it's their responsibility to you.

Example README PDF — page 1

More pages

Example README PDF — page 2 Example README PDF — page 3


FAQ

Why ReMemory?

We all have digital secrets that matter: password manager recovery codes, cryptocurrency seeds, important documents, instructions for loved ones. What happens to these if you're suddenly unavailable?

Traditional approaches fail:

  • Give one person everything → Single point of failure and trust
  • Split files manually → Confusing, error-prone, no encryption
  • Use a password manager's emergency access → Relies on company existing
  • Write it in a will → Becomes public record, slow legal process

ReMemory takes a different approach:

  • No single point of failure — requires multiple people to cooperate
  • No trust in any one person — even your most trusted friend can't access secrets alone
  • Offline and self-contained — recovery works without internet or servers*
  • Designed for non-technical people — clear instructions, not cryptographic puzzles
Why I Built This

Two things drove me to create ReMemory.

First, I watched a documentary about Clive Wearing, a man who has lived with a 7-second memory since 1985. Seeing how fragile memory can be made me think about what would happen to my digital life if something similar happened to me.

Second, I've had several concussions from cycling accidents. Each time, I've been lucky to recover fully. But each time, I've been reminded that our brains are more fragile than we like to think.

ReMemory is my answer: a way to ensure the people I trust can access what matters, even if I can't help them.

Threat Model

ReMemory assumes:

  • Your friends will only cooperate when needed
  • At least threshold friends will keep their bundle safe
  • Your device is trusted when you create bundles
  • The browser used for recovery is not compromised

ReMemory does NOT rely on:

  • Any server or cloud service
  • Any ReMemory website or infrastructure
  • Any long-term availability of this project
  • The internet during recovery

See the Security Review for details.

Cryptographic Guarantees
ComponentAlgorithm
Encryptionage (scrypt passphrase mode)
Key derivationscrypt (N=2²⁰, r=8, p=1)
Secret sharingShamir's Secret Sharing over GF(2⁸)
IntegritySHA-256 checksums
Passphrase256 bits from crypto/rand
Time lock (optional)drand tlock (BLS12-381 IBE, inner layer)

A single piece reveals nothing about your secret. This is a mathematical guarantee of Shamir's Secret Sharing — any fewer than threshold pieces contain zero information about the original secret.

Time-Delayed Recovery (Experimental)

You can set a waiting period when creating bundles. Even with enough pieces, the files stay locked until the date you chose — for example, 30 days, 6 months, or a specific date.

This uses the League of Entropy (drand), a distributed randomness beacon run by organizations around the world. At recovery time, a brief internet connection is needed — not to send data, but to verify that enough time has passed.

CLI: rememory seal --timelock 30d (or 6m, 1y, 2027-06-15T00:00:00Z) Web: Enable under "Advanced options" in the bundle creator.

Important caveats:

  • Recovery requires internet access (to check the drand beacon)
  • If the League of Entropy stops operating before your time lock expires, recovery won't work
  • Without the time lock, recovery works fully offline — the time lock adds this one dependency
Failure Scenarios
What if...Result
A friend loses their bundle?Fine, as long as threshold friends remain
A friend leaks their piece publicly?Harmless without threshold-1 other pieces
ReMemory disappears in 10 years?recover.html still works — it's self-contained
Browsers change dramatically?Pure JavaScript with no external dependencies
You forget how this works?Each bundle's README.txt explains everything
Some friends can't be reached?That's why you set threshold below total friends
Time lock used, but no internet at recovery?Wait and try again — data is safe, just needs the beacon check
League of Entropy shuts down?Time-locked archives become unrecoverable — only a risk if you use the time lock feature
Development
# Using Nix (recommended)
nix develop

# Install dependencies
npm install

# Build
make build

# Run tests
make test         # Unit tests
make test-e2e     # Browser tests (requires: npm install)

# Preview website locally
make serve        # Serves at http://localhost:8000
Other Similar Tools

ReMemory isn't the first tool to use Shamir's Secret Sharing. Its focus is making recovery possible for non-technical people, without installing anything.

Shamir's Secret Sharing tools

ToolTypeInputSplitting MethodOutputNon-technical RecoveryOfflineContact Details
eljojo/rememoryCLI + WebFiles & foldersShamir's SSSZIP bundles with PDF instructions, recover.html, encrypted archiveYes — open HTML in browserYesYes — included in each bundle
jesseduffield/horcruxCLIFilesShamir's SSSEncrypted file fragmentsNo — requires CLIYesNo
jefdaj/horcruxCLIFiles (GPG)Shamir's SSS (via ssss).key + .sig files, steganography in images/audioNo — requires CLI + GPGYes (TAILS recommended)No
paritytech/banana_splitWeb appText onlyShamir's SSS + NaClPrintable QR codesPartial — scan QR + type passphraseYes (self-contained HTML)No
cyphar/paperbackCLIFilesShamir's SSS in GF(2^32)Printable PDFs with QR codes + text fallbackPartial — scan QR or type textYesNo
simonfrey/s4 (site)Web GUI + Go libText/bytesShamir's SSS + AESText sharesNo — copy/paste sharesYes (save HTML locally)No
xkortex/passcruxCLIText/passphrasesShamir's SSSText shares (hex/base32/base64)No — requires CLIYesNo
ssssCLIText (128 char max)Shamir's SSSText sharesNo — requires CLIYesNo
cedws/amnesiaCLIText/data streamsShamir's SSS + argon2idJSON file (Q&A-based, single user)No — requires CLIYesNo
henrysdev/HaystackCLIFilesShamir's SSSEncrypted file fragmentsNo — requires CLIYesNo
antonio-ivanovski/shared-secret-encrypt (site)Web appText onlyShamir's SSS + AES-GCMBase58-encoded shares + encrypted messagePartial — web UI for decryptYes (client-side, can save HTML)No
MinorGlitch/ethernityCLI (Python)FilesShamir's SSS + AES-256-GCMPrintable PDFs with QR codes + text fallback, bundled browser recovery kitPartial — scan QR or type textYesNo

Other approaches

ToolTypeInputMethodOutputNon-technical RecoveryOfflineContact Details
msolomon/keybearer (site)Web appFilesLayered encryptionEncrypted file downloadPartial — web UI for decryptionYes (client-side JS)No
RobinWeitzel/secret_sharer (site)Web appText onlySplit-key AES-256 (fixed 2-of-2)PDF with 2 QR codes + security codeYes — scan QR codesYes (client-side)No
Bitwarden Emergency AccessWeb serviceVault items + attachmentsRSA key exchange (1-of-1)Live vault access (no file output)Yes — web UINo (server required)Via Bitwarden accounts
Apple Digital LegacyBuilt-in (Apple)Apple Account dataLegacy Contact designationiCloud data access (3-year window)Yes — Apple handles itNo (Apple servers required)Via Apple Account
potatoqualitee/eol-drGuide/checklistN/AN/A (not a tool)Printable checklist covering accounts, finances, subscriptions, devicesN/AYes (print it)Template fields

Key takeaways:

  • Most tools only handle text or passphrases — eljojo/rememory, both horcrux projects, henrysdev/Haystack, cyphar/paperback, MinorGlitch/ethernity, and msolomon/keybearer are the few that handle actual files.
  • Only eljojo/rememory generates a self-contained recovery tool (recover.html) bundled with each piece — no installation, no internet, no CLI needed.
  • Only eljojo/rememory includes contact details in each bundle so friends know how to reach each other during recovery.
  • paritytech/banana_split and cyphar/paperback output QR codes for printing, which is great for paper-based backups of short secrets.
  • Bitwarden Emergency Access is fundamentally different — it delegates vault access to one trusted person (not M-of-N splitting) and requires an online service.
  • Apple Digital Legacy only activates after death (requires proof of death documents) — it does not cover incapacity, memory loss, or other scenarios. Limited to Apple ecosystem (iCloud data, not Keychain passwords). Access expires after 3 years.
  • potatoqualitee/eol-dr is not a tool but a valuable end-of-life planning checklist covering accounts, finances, subscriptions, and devices — complementary to any tool here.
  • ssss is the classic Unix implementation but is limited to 128 ASCII characters and requires a terminal.
  • GitHub offers a successor feature for maintaining ownership continuity of repositories — useful for ensuring your code projects remain accessible.

License

Apache-2.0 — Copyright 2026 José Albornoz

Credits

Built on:

Translations by:

The protocol was originally designed in a Google Doc in 2023.

age-encryption
dead-mans-switch
deadmanswitch
digital-estate
digital-estate-planning
disaster-recovery
encryption-tool
family
file-encryption
key-management
offline-first
privacy
secret-sharing
shamir-secret-sharing
shamirs-secret-sharing
webassembly

Project health

Latest release

v0.0.21 · Apr 13, 2026

Releases this year

21

Significant stargazers

Zero King

133 followers · starred Feb 2026

Ruud Kamphuis

195 followers · starred Feb 2026

Martin Schürrer

191 followers · starred Feb 2026

Michael McMahon

182 followers · starred Feb 2026