Sanity

Solana vanity address generator with CLI & TUI.
Generate custom Solana wallet addresses with your desired prefix, suffix or regexp.

Features
- Intuitive Terminal User Interface (TUI)
- Command Line Interface (CLI) support
- Concurrent address generation
- Customizable search parameters
- Automatic private key saving
- Timeout configuration
Installation
You can install and run Sanity either by using Docker or by cloning the repository and building it directly.
Using Docker
Pull the image from Docker Hub:
docker pull tmlnv/sanity:latest
Run the application using Docker:
# To save generated keys to your current host directory, mounting a volume is necessary.
# The default PrivateKeysFile is 'sanity.private.log' in the container's working directory.
# Run in TUI mode (interactive)
# Note: TUI rendering (colors, cursor) might vary depending on your terminal and Docker setup and not provide a full experience using Docker.
docker run -it --rm -v "$(pwd):/app" tmlnv/sanity:latest
# Run in CLI mode with flags
docker run --rm -v "$(pwd):/app" tmlnv/sanity:latest -prefix 333 -count 1
From Source
To build and run from source, you need Go installed.
- Clone the repository:
git clone https://github.com/tmlnv/sanity.git
cd sanity
- Build the executable:
go build -o sanity ./cmd/sanity
- Run the application:
# Run in TUI mode
./sanity
# Run in CLI mode with flags
./sanity -prefix 333 -count 1
Usage
Sanity can be used in two modes: TUI (Terminal User Interface) or CLI (Command Line Interface).
TUI Mode
Simply run the program without any flags to enter TUI mode:
./sanity
In TUI mode, you can:
- Enter your desired address prefix
- Specify the number of addresses to generate
- Set the number of concurrent workers (defaults to CPU cores if left empty)
- Configure a timeout duration (e.g., "30s", "5m", "1h")
Use Tab/Shift+Tab or Up/Down arrows to navigate between fields.
CLI Mode
Run with flags for CLI mode:
./sanity [-prefix <prefix>] [-suffix <suffix>] [-regexp <pattern>] [-count <number>] [-workers <workers>] [-timeout <duration>] [-log-interval <duration>] [-private-keys <file>]
Examples:
# Generate address with prefix
sanity -prefix 123 -count 1 -workers 4 -timeout 5m
# Generate address with suffix
sanity -suffix 123 -count 2
# Generate address with both prefix and suffix
sanity -prefix 123 -suffix 321
# Generate address matching regular expression
sanity -regexp '^123.*321$' -timeout 10m
Options:
-prefix: Desired prefix for the address
-suffix: Desired suffix for the address
-regexp: Regular expression pattern to match
-count: Number of addresses to generate (default: 1)
-workers: Number of concurrent workers (default: CPU cores)
-timeout: Maximum duration to search (e.g., "30s", "5m", "1h")
-log-interval: Interval for periodic progress logging in CLI mode
(e.g., "30s", "5m", "1h")
-private-keys: File to save generated private keys
Security
Generated private keys are automatically saved to a file in your current directory.
Keep these keys secure and never share them.
Disclaimer
This tool is for educational and experimental purposes only. Please be aware that:
- Generated addresses and private keys should be thoroughly verified before use
- Always follow best security practices when handling cryptocurrency wallets
- The author is not responsible for anything
TODO
- Validate address input to be compatible with Solana to not
waste resources trying to find the impossible one.
- Suffix
- Regexp
- Timeout input proper validation.
- Validate timeout from pure number for CLI
- Case sensitivity
- CLI help
- Tests
- TUI Running timer
- Check if prefix/suffix do not conflict with regexp