A cross-platform vanity address generator for Reticulum and LXMF networks.
Generate a personalized, memorable address for use with Sideband, Nomadnet, and any application built on the Reticulum Network Stack.
Works on macOS, Linux, and Windows. Comes with both a graphical interface (GUI) and a command-line interface (CLI).
- What Is This?
- Security Considerations
- How It Works
- Installation
- Usage
- Importing Your Vanity Address
- Difficulty Reference
- License
Every Reticulum identity is associated with a 32-character hexadecimal address (for example a4f2c9e801b73d5f6890abcdef123456). When you install Sideband, Nomadnet, or any other Reticulum application, it generates a random address for you. That address is permanent — it is tied to your cryptographic keys, and there is no way to choose it.
revanity lets you generate a customized address. You pick a pattern — for example, you want your address to start with cafe or dead — and the tool rapidly generates thousands of key pairs per second until it finds one whose address matches your desired pattern.
This is the same concept as vanity address generators in Bitcoin and Ethereum, adapted for the Reticulum network.
Before using a vanity address, you should understand the security implications:
revanity does not weaken your encryption in any way. Every key pair is generated using the same cryptographically secure random number generator (CSPRNG) that Reticulum uses normally. The tool simply generates many key pairs and discards the ones that don't match your pattern. The key pair you end up with is every bit as secure as one generated by Sideband or Nomadnet directly.
The primary risk with vanity addresses is impersonation. If your address starts with cafe, an attacker could also generate an address starting with cafe in a matter of seconds. Someone who only checks the first few characters of your address could be fooled.
Mitigation:
- A short prefix (1-4 characters) offers no meaningful protection against impersonation. It only makes your address easier to remember.
- A longer prefix (6+ characters) is exponentially harder to reproduce, but never impossible.
- Always verify the full 32-character address when communicating with someone. Never rely on just the first few characters.
- Share your full address through a trusted channel (in person, signed message, QR code, etc.).
When revanity finds a matching address, it saves your private key to a .identity file. Anyone who obtains this file can fully impersonate you — they can read messages intended for you, send messages as you, and access any resources tied to your identity.
- Store your
.identityfile securely. - Do not share it, email it, or upload it to cloud storage.
- The file is automatically saved with restrictive permissions (owner-only read/write) on macOS and Linux.
A Reticulum identity is a pair of cryptographic keys:
- X25519 key — Used for encryption (so others can send you encrypted messages).
- Ed25519 key — Used for digital signatures (so others can verify messages are really from you).
Together, these two keys form your identity. Each key has a private half (which you keep secret) and a public half (which you share with the world).
Your address is not your public key. It is a shortened hash of your public key, computed like this:
- Your two public keys are concatenated together (64 bytes total).
- A SHA-256 hash is computed over those 64 bytes.
- The hash is truncated to 16 bytes (128 bits), giving a 32-character hex string — your identity hash.
For LXMF applications (like Sideband), there is one more step:
- A fixed "name hash" for the destination type (e.g.
lxmf.delivery) is prepended to your identity hash. - Another SHA-256 hash is computed and truncated to 16 bytes — this is your LXMF address, the one displayed in the app.
revanity performs the following loop at high speed:
- Generate a brand new, random X25519 + Ed25519 key pair.
- Compute the LXMF address from the public keys (two SHA-256 hashes).
- Check if the address matches your desired pattern.
- If it matches, save the key pair. If not, discard it and try again.
This is a forward-only computation — there is no way to work backward from a desired address to a key. The tool must try key after key until one happens to produce a matching address. Depending on how long your pattern is, this can take anywhere from a fraction of a second to days.
revanity uses all of your CPU cores in parallel to maximize speed.
Step 1: Make sure Python is installed.
Open Terminal (search for "Terminal" in Spotlight) and type:
python3 --versionIf you see a version number (3.10 or higher), you're good. If not, install Python:
brew install pythonIf you don't have Homebrew, visit brew.sh first, or download Python directly from python.org/downloads.
Step 2: Install revanity.
pip3 install customtkinter cryptographyThen clone and run:
git clone https://github.com/defidude/revanity.git
cd revanity
python3 -m revanityThis opens the graphical interface.
Step 3 (Optional): Install the RNS library for verification.
pip3 install rnsThis lets revanity double-check that your generated address is correct by verifying it against the official Reticulum library.
Step 1: Install Python and Tkinter.
sudo apt update
sudo apt install python3 python3-pip python3-tk gitStep 2: Install revanity.
pip3 install customtkinter cryptographyThen clone and run:
git clone https://github.com/defidude/revanity.git
cd revanity
python3 -m revanityIf you prefer CLI-only (no GUI):
python3 -m revanity --prefix deadStep 3 (Optional): Install RNS for verification.
pip3 install rnsStep 1: Install Python.
- Go to python.org/downloads and download the latest Python 3 installer.
- Important: During installation, check the box that says "Add Python to PATH".
- Complete the installation.
Step 2: Open Command Prompt.
Press Win + R, type cmd, and press Enter.
Step 3: Install revanity.
pip install customtkinter cryptographyThen clone and run:
git clone https://github.com/defidude/revanity.git
cd revanity
python -m revanityIf you don't have Git, you can download the repository as a ZIP from GitHub and extract it instead.
Step 4 (Optional): Install RNS for verification.
pip install rnsLaunch the GUI by running:
python3 -m revanity-
Choose your destination type. The default
lxmf.deliveryis what Sideband and Nomadnet use for messaging. If you're generating an address for a Nomadnet node, selectnomadnetwork.node. -
Choose a match mode:
- Prefix — Your address will start with your pattern (most common).
- Suffix — Your address will end with your pattern.
- Contains — Your pattern can appear anywhere in the address.
- Regex — Use a regular expression for advanced matching.
-
Enter your pattern. Only hexadecimal characters are valid:
0-9anda-f. For example:dead,cafe,beef,abc. -
Adjust worker count if desired. More workers = faster search, but uses more CPU.
-
Click Start Search. The tool will show real-time progress (keys checked, speed, elapsed time).
-
When a match is found, click Save .identity to save your key pair. Click Copy Address to copy the address to your clipboard. Optionally click Verify with RNS to confirm the address against the official Reticulum library.
# Find an address starting with "dead"
python3 -m revanity --prefix dead
# Find an address ending with "cafe", using 8 workers
python3 -m revanity --suffix cafe --workers 8
# Find an address containing "beef" anywhere
python3 -m revanity --contains beef
# Use regex matching
python3 -m revanity --regex "^(dead|beef)"
# Generate for a Nomadnet node
python3 -m revanity --prefix abc --dest nomadnetwork.node
# Just show the difficulty estimate
python3 -m revanity --prefix deadbeef --dry-run
# Quiet mode (outputs only the address, useful for scripting)
python3 -m revanity --prefix dead --quietEach successful search produces two files:
<address>.identity— The raw 64-byte identity file. This is the file you import into your Reticulum application.<address>.txt— A human-readable file containing your address, identity hash, private key in multiple formats (hex, Base32, Base64), and step-by-step import instructions.
After generating your vanity address, you need to import it into your Reticulum application. Make sure to back up any existing identity before replacing it.
# Back up your current identity first
cp ~/.config/sideband/storage/identity ~/.config/sideband/storage/identity.backup
# Copy your new identity
cp <address>.identity ~/.config/sideband/storage/identity
# Restart Sideband# Back up your current identity first
cp ~/Library/Application\ Support/Sideband/storage/identity ~/Library/Application\ Support/Sideband/storage/identity.backup
# Copy your new identity
cp <address>.identity ~/Library/Application\ Support/Sideband/storage/identity
# Restart SidebandOpen the .txt file that was saved alongside your .identity file. Copy the Base32 string. In Sideband, go to Settings and import your identity using the Base32 key.
# Back up your current identity first
cp ~/.nomadnetwork/storage/identity ~/.nomadnetwork/storage/identity.backup
# Copy your new identity
cp <address>.identity ~/.nomadnetwork/storage/identity
# Restart Nomadnetimport RNS
identity = RNS.Identity.from_file("path/to/<address>.identity")Each hexadecimal character in your pattern multiplies the difficulty by 16. Longer patterns take exponentially longer to find.
| Pattern Length | Expected Attempts | Approximate Time (8 cores) |
|---|---|---|
| 1 character | 16 | Instant |
| 2 characters | 256 | Instant |
| 3 characters | 4,096 | Under 1 second |
| 4 characters | 65,536 | A few seconds |
| 5 characters | 1,048,576 | Under a minute |
| 6 characters | 16,777,216 | Several minutes |
| 7 characters | 268,435,456 | A few hours |
| 8 characters | 4,294,967,296 | A day or more |
Times are rough estimates and vary significantly based on your CPU, number of cores, and luck. A "suffix" match has the same difficulty as a "prefix" match of the same length. A "contains" match is slightly easier because the pattern can appear anywhere in the 32-character address.
MIT License. See LICENSE for details.