{"id":36584427,"url":"https://github.com/tmlnv/sanity","last_synced_at":"2026-01-12T08:01:40.627Z","repository":{"id":276689743,"uuid":"919672862","full_name":"tmlnv/sanity","owner":"tmlnv","description":"Solana vanity address generator with CLI \u0026 TUI.","archived":false,"fork":false,"pushed_at":"2025-06-20T21:30:48.000Z","size":112,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-20T22:29:08.270Z","etag":null,"topics":["crypto","cryptography","go","sol","solana","vanity","vanity-address"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmlnv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-20T19:46:00.000Z","updated_at":"2025-06-20T21:30:52.000Z","dependencies_parsed_at":"2025-02-26T20:22:26.356Z","dependency_job_id":"fffe7610-6d1d-46f9-a7af-274a0aca108c","html_url":"https://github.com/tmlnv/sanity","commit_stats":null,"previous_names":["tmlnv/sanity"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tmlnv/sanity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmlnv%2Fsanity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmlnv%2Fsanity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmlnv%2Fsanity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmlnv%2Fsanity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmlnv","download_url":"https://codeload.github.com/tmlnv/sanity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmlnv%2Fsanity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28336966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crypto","cryptography","go","sol","solana","vanity","vanity-address"],"created_at":"2026-01-12T08:00:43.161Z","updated_at":"2026-01-12T08:01:40.622Z","avatar_url":"https://github.com/tmlnv.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sanity\n\n[![Build](https://github.com/tmlnv/sanity/actions/workflows/build.yml/badge.svg)](https://github.com/tmlnv/sanity/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/tmlnv/sanity/graph/badge.svg?token=PR3E1MGGRZ)](https://codecov.io/gh/tmlnv/sanity)\n\nSolana vanity address generator with CLI \u0026 TUI.\nGenerate custom Solana wallet addresses with your desired prefix, suffix or regexp.\n\n![demo_tui](https://drive.google.com/uc?export=view\u0026id=1AK6KtxzbByyR-ruxZjHy8eyriCPsvWYH)\n\n## Features\n\n- Intuitive Terminal User Interface (TUI)\n- Command Line Interface (CLI) support\n- Concurrent address generation\n- Customizable search parameters\n- Automatic private key saving\n- Timeout configuration\n\n## Installation\n\nYou can install and run Sanity either by using Docker or by cloning the repository and building it directly.\n\n### Using Docker\n\nPull the image from Docker Hub:\n\n```bash\ndocker pull tmlnv/sanity:latest\n```\n\nRun the application using Docker:\n\n```bash\n# To save generated keys to your current host directory, mounting a volume is necessary.\n# The default PrivateKeysFile is 'sanity.private.log' in the container's working directory.\n\n# Run in TUI mode (interactive)\n# Note: TUI rendering (colors, cursor) might vary depending on your terminal and Docker setup and not provide a full experience using Docker.\ndocker run -it --rm -v \"$(pwd):/app\" tmlnv/sanity:latest\n\n# Run in CLI mode with flags\ndocker run --rm -v \"$(pwd):/app\" tmlnv/sanity:latest -prefix 333 -count 1\n```\n\n### From Source\n\nTo build and run from source, you need Go installed.\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/tmlnv/sanity.git\ncd sanity\n```\n\n2. Build the executable:\n\n```bash\ngo build -o sanity ./cmd/sanity\n```\n\n3. Run the application:\n\n```bash\n# Run in TUI mode\n./sanity\n\n# Run in CLI mode with flags\n./sanity -prefix 333 -count 1\n```\n\n## Usage\n\nSanity can be used in two modes: TUI (Terminal User Interface) or CLI (Command Line Interface).\n\n### TUI Mode\n\nSimply run the program without any flags to enter TUI mode:\n\n```bash\n./sanity\n```\n\nIn TUI mode, you can:\n\n1. Enter your desired address prefix\n2. Specify the number of addresses to generate\n3. Set the number of concurrent workers (defaults to CPU cores if left empty)\n4. Configure a timeout duration (e.g., \"30s\", \"5m\", \"1h\")\n\nUse Tab/Shift+Tab or Up/Down arrows to navigate between fields.\n\n### CLI Mode\n\nRun with flags for CLI mode:\n\n```bash\n./sanity [-prefix \u003cprefix\u003e] [-suffix \u003csuffix\u003e] [-regexp \u003cpattern\u003e] [-count \u003cnumber\u003e] [-workers \u003cworkers\u003e] [-timeout \u003cduration\u003e] [-log-interval \u003cduration\u003e] [-private-keys \u003cfile\u003e]\n```\n\nExamples:\n\n```bash\n# Generate address with prefix\nsanity -prefix 123 -count 1 -workers 4 -timeout 5m\n\n# Generate address with suffix\nsanity -suffix 123 -count 2\n\n# Generate address with both prefix and suffix\nsanity -prefix 123 -suffix 321\n\n# Generate address matching regular expression\nsanity -regexp '^123.*321$' -timeout 10m\n```\n\nOptions:\n\n- `-prefix`: Desired prefix for the address\n- `-suffix`: Desired suffix for the address\n- `-regexp`: Regular expression pattern to match\n- `-count`: Number of addresses to generate (default: 1)\n- `-workers`: Number of concurrent workers (default: CPU cores)\n- `-timeout`: Maximum duration to search (e.g., \"30s\", \"5m\", \"1h\")\n- `-log-interval`: Interval for periodic progress logging in CLI mode\n  (e.g., \"30s\", \"5m\", \"1h\")\n- `-private-keys`: File to save generated private keys\n\n## Security\n\nGenerated private keys are automatically saved to a file in your current directory.\nKeep these keys secure and never share them.\n\n## Disclaimer\n\nThis tool is for educational and experimental purposes only. Please be aware that:\n\n- Generated addresses and private keys should be thoroughly verified before use\n- Always follow best security practices when handling cryptocurrency wallets\n- The author is not responsible for anything\n\n## TODO\n\n- [x] Validate address input to be compatible with Solana to not\n      waste resources trying to find the impossible one.\n- [x] Suffix\n- [x] Regexp\n- [x] Timeout input proper validation.\n- [x] Validate timeout from pure number for CLI\n- [x] Case sensitivity\n- [x] CLI help\n- [x] Tests\n- [ ] TUI Running timer\n- [ ] Check if prefix/suffix do not conflict with regexp\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmlnv%2Fsanity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmlnv%2Fsanity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmlnv%2Fsanity/lists"}