Skip to content

Monero Inheritance Management (via simplex-alerter)

TLDR: using the simplex-alerter you can automatically send PGP encrypted message containing your Monero wallet's seed phrase to whoever should obtain your Monero after you pass away.

Introduction

Uncle Rich has worked hard his entire life and has managed to save a large amount of Monero. Now approaching the later years of his life, he is worried about what will become of his financial legacy. Having no kids of his own, he decides he wants to pass on his wealth to the closest thing to a son he has, his Nephew Nick. Uncle Rich figures the easiest way to do this is by giving Nephew Nick the seedphrase to his wallet but Uncle Rich wants to transfer his wealth only after he passes away. The critical question thus becomes "How does one securely share a secret from beyond the grave?" In this article we will see how to do exactly that, specifically using the simplex-alerter, which will be programmed to trigger only under specific conditions.

Preamble

Before we start, we must take a moment to acknowledge @Midas for building the simplex-alerter and whose hard work this tutorial is built upon.

Overview

In order to avoid relying on third parties, we need a sovereign solution that is FOSS, self-hostable, end-to-end encrypted and able to anonymously send/receive notifications. The simplex-alerter and can be easily deployed on a VPS for less than €5 per month.

Uncle Rich starts off by PGP encrypting his Monero wallet seedphrase using Nephew Nick's public key and preparing the simplex-alerter. On a deniably rented VPS, Uncle rich sets up the simplex-alerter and invites Nephew Nick to the SimpleX chat. After some time passes, Nephew Nick checks in on Uncle Rich. If Uncle Rich is still alive, he will respond to Nephew Nick, resetting the 30 day countdown timer. If Uncle Rich is no longer with us, he will not be able to respond. As a result, after 30 days pass, Nephew Nick will receive the PGP encrypted message that Uncle Rich set up from the simplex-alerter bot.

Setup - PGP encrypted seedphrase

The entire setup will be conducted from Uncle Rich's perspective.

Uncle Rich will start off by making a file containing his Monero wallet seedphrase only his local machine.

~ ❯ cat seedphrase.txt
reverse plant sickness laborer scenario cancel cupboard file killer feature husband fromation differ circulate thesis closed chase discover line prey poison guess workshop nun album

Next, he will import Nephew Nick's public key and use it to PGP encrypt his seedphrase.

~ ❯ gpg --import nick.asc
gpg: key 52F8D8BBE1F4DECD: public key "Nephew Nick <nephewnick@email.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

~ ❯ gpg --recipient nick --encrypt seedphrase.txt
gpg: A1A1AEC9C9E68DCB: There is no assurance this key belongs to the named user
sub  rsa3072/A1A1AEC9C9E68DCB 2026-01-27 Nephew Nick <nephewnick@email.com>
Primary key fingerprint: 48A5 3E3E 9292 235D AEB6  B4CB 52F8 D8BB E1F4 DECD
Subkey fingerprint: FFC6 ACBD 0D31 891E 4E19  AB1F A1A1 AEC9 C9E6 8DCB
It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) y

~ ❯ ls
seedphrase.txt.gpg

This file, seedphrase.txt.gpg, is the file that Uncle Rich will share with Nephew Nick after he passes away.

Setup - Renting a VPS

As explained in a previous tutorial, Uncle Rich deniably rents a VPS with the Debian 13 operating system. Selecting the cheapest option is sufficient for the services in this tutorial.

Servers.guru is the chosen provider in this example as they allow anonymous registartion using their onion address, accept Monero payments and have automatic monthly payment deductions. Uncle Rich is able to load a bunch of credit on his account to be automatically deducted thus not having to worry about interruptions to his service while he is nearing the end of his life.

Setup - VPS Prerequisites

With his VPS rented, he is now able to connect and start setting up the simplex-alerter.

~ ❯ torsocks ssh root@18.223.229.63

The authenticity of host '18.223.229.63 (18.223.229.63)' can't be established.
ED25519 key fingerprint is: SHA256:MYyDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxuWdA
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '18.223.229.63' (ED25519) to the list of known hosts.

root@18.223.229.63's password:

Linux debian-13 6.12.41+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.41-1 (2025-01-10) x86_64
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

root@deniably-rented-vps:~#

Uncle Rich will first install git and tor.

root@deniably-rented-vps:~# apt install git tor

[...snip...]
Summary:
Upgrading: 0, Installing: 2, Removing: 0, Not Upgrading: 0
[...snip...]

Next, he installs docker following the official documentation. Uncle Rich copy/pastes the following commands directly into the terminal:

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

And finally:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

With the prerequisites installed, it's time to install and configure the simplex-alerter.

Setup - simplex-alerter

Uncle Rich will start by cloning the simplex-alerter repository.

root@deniably-rented-vps:~# git clone --config http proxy="socks5h://127.0.0.1:9050" http://gdatura24gtdy23lxd7ht3xzx6mi7mdlkabpvuefhrjn4t5jduviw5ad.onion/Midas/simplex-alerter.git alerter
Cloning into 'alerter'...
remote: Enumerating objects: 1042, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 1042 (delta 7), reused 0 (delta 0), pack-reused 1009 (from 1)
Receiving objects: 100% (1042/1042), 186.63 KiB | 163.00 KiB/s, done.
Resolving deltas: 100% (625/625), done.

Next, Uncle Rich builds the simplex-alerter.

root@deniably-rented-vps:~/alerter# cd alerter
root@deniably-rented-vps:~/alerter# docker build . -t builder
[...snip...]
root@deniably-rented-vps:~/alerter# docker run --rm -v $(pwd):/src builder
[...snip...]
root@deniably-rented-vps:~/alerter# docker load < simplex-alerter.tar.gz

Uncle Rich will then move the seedphrase.txt.gpg file from his local machine to the VPS using the scp command and places it in the /root/alerter directory.

~ ❯ torsocks scp seedphrase.txt.gpg root@18.223.229.63:/root/alerter
root@18.223.229.63's password:
seedphrase.txt.gpg
100%  602     1.5KB/s   00:00

Uncle Rich needs to create a SimpleX chat which will serve as his communication channel with Nephew Nick for anything related to inheritance.

After creating the group, Uncle Rich will invite Nephew Nick to the group.

Next, Uncle Rich will obtain the group link which is needed for the simplex-alerter.

Back on the VPS, Uncle Rich will now finalize the setup of the simplex-alerter.

root@deniably-rented-vps:~/alerter# vim config.yml
root@deniably-rented-vps:~/alerter# cat config.yml
alert_groups:
- invite_link: https://smp11.simplex.im/g#NXEXjxnYDyKV7[snip]
  endpoint_name: clandestineInfraAlerts
  group_name: "Inheritance" #set this if the group name configured in simpleX is different from the endpoint name used for alerts
deadmans_switch:
  Uncle Rich:
    group: "Inheritance" # same groupname as above
    alert_threshold_seconds: 1209600 #alert after two week of inactivity
    alert_message: "Uncle Rich has been offline for a 2 weeks, inheritance will trigger if he remains offline for 2 more weeks"
    trigger_threshold_seconds: 2419200 # trigger inheritance after 2 weeks of inactivity
    inheritance_filepath: "/alerterconfig/seedphrase.txt.gpg"
    inheritance_message: "Uncle Rich has been inactive for 4 weeks, here is the inheritance data he prepared. RIP Uncle Rich."

Uncle Rich starts the simplex-alerter using docker compose.

root@deniably-rented-vps:~/alerter# vim docker-compose.yml
root@deniably-rented-vps:~/alerter# cat docker-compose.yml
    services:
      alerter:
        image: simplex-alerter:latest
        container_name: alerter
        restart: unless-stopped
        ports:
         - '127.0.0.1:7897:7897'
        volumes:
          - /root/alerter:/alerterconfig

root@deniably-rented-vps:~/alerter# docker compose -f docker-compose.yml up -d

Everything is in place and Uncle Rich acknowledges the group.

Scenario 1: Uncle Rich is alive

All scenarios will be from Nephew Nick's perspective.

Some time has passed and Uncle Rich has not been active in chat lately so Nephew Nick sends him a message.

Uncle Rich is still alive and responds to the message. The inheritance countdown timer is reset.

Scenario 2: Uncle Rich is not alive

Some more time has passed and Nephew Nick is starting to get worried. He sends Uncle Rich another message.

There is no response. After countdown has expired, the simplex-alerter sends a message containing the seedphrase.txt.gpg file.

Restoring a Wallet from Seedphrase

Nephew Nick needs to decrypt the file.

~ ❯ gpg --decrypt seedphrase.txt.gpg 
gpg: encrypted with 3072-bit RSA key, ID A1A1AEC9C9E68DCB, created 2026-01-27
      "Nephew Nick <nephewnick@email.com>"
reverse plant sickness laborer scenario cancel cupboard file killer feature husband fromation differ circulate thesis closed chase discover line prey poison guess workshop nun album

Nephew Nick opens up his Monero Wallet GUI and navigates to "Restore wallet from keys or mnemonic seed"

He gives the wallet a name and chooses a location to save it. Next, Nephew Nick input's Uncle Rich's seedphrase.

Proceeding to the next screen, Nephew Nick inputs a strong password and saves it in his password manager.

Finally, he selects a node for the connection. Connecting to your own node is recommended but in this example we will use a remote node.

With the connection established, all that is left to do is to wait synchronization to finish.

Nephew Nick has successfully restored Uncle Rich's wallet using the seedphrase!


Suggest changes
XMRonly 2026-01-31
Donate XMR to the author:
8AHNGepbz9844kfCqR4aVTCSyJvEKZhtxdyz6Qn8yhP2gLj5u541BqwXR7VTwYwMqbGc8ZGNj3RWMNQuboxnb1X4HobhSv3