Skip to main content

Terminal credential generator with a curses-based TUI.

Project description

Generate It

A terminal credential generator and local manager with a curses-based UI.

It can generate:

  • Random passwords (choose a length and character categories)
  • Random passphrases (random words separated by hyphens)
  • Random usernames (adjective+noun, random characters, or word combinations)

New: Now features a secure local vault to save and manage your credentials directly from the TUI.

Install

From PyPI (recommended)

Requires Python 3.10-3.13 and pip.

pip install generate-it

Then run:

generate-it

From source (for development)

git clone https://github.com/j-kemble/Generate-It.git
cd Generate-It
python3 -m venv .venv

# Linux/macOS
source .venv/bin/activate

# Windows (PowerShell)
# .\venv\Scripts\Activate.ps1

pip install -e .

Then run:

generate-it

Features

Secure Vault

Generate It includes an encrypted local vault to store your generated credentials.

  • Encryption: Uses AES-256 (via cryptography) to secure your data locally.
  • Master Password: You create a master password on first run. This key is never stored; it unlocks your vault each session.
  • Offline: Your data stays on your machine (~/.local/share/generate-it/ on Linux).
  • Clipboard: Quickly copy passwords or usernames with hotkeys.

Controls

  • General Navigation:

    • Tab / Shift-Tab or Arrow keys: move focus
    • Space: toggle checkboxes / options
    • Left/Right: adjust numeric values
    • Enter: confirm action
    • q (or ESC): quit
  • Hotkeys:

    • g: Generate new credential
    • v: Open Vault Explorer
    • i: Import credentials from CSV
    • e: Export credentials to CSV

Vault Explorer (v)

  • ↑/↓: Navigate your saved credentials
  • Enter: View credential details
  • c: Copy Password to clipboard
  • u: Copy Username to clipboard
  • d: Delete credential (requires confirmation)
  • Esc: Close vault

Saving Credentials

When you generate a credential you will:

  1. Select [ Save ] (or navigate to it).
  2. Enter a Service Name (e.g., "GitHub").
  3. Enter a Username or Password (whichever wasn't generated).
    • Pro Tip: Press Tab in these fields to instantly generate a random username or password on the fly!

CSV Import/Export

  • Export: Press e, choose an export format, then enter a file path. If the file already exists, you must confirm overwrite.
    • If any credentials fail to decrypt during export, you'll see a list of skipped entries.
  • Import: Press i, choose an import format (or auto), then enter a CSV file path.
    • The importer detects duplicates (case-insensitive match on service name + username) and asks whether to merge (overwrite) or ignore them.
    • Rows with missing required fields or unsupported record types are skipped with an issue report.
  • Supported formats:
    • generic (browser-style): name,url,username,password,note
    • bitwarden: supports login CSV fields (name, login_username, login_password, type, etc.). Non-login item types are skipped.
    • apple: supports Apple-style title/url/username/password exports (with optional notes/OTP columns).
    • nordpass: supports NordPass CSV template columns.
  • Data model note: The vault currently stores only service, username, and password.
    • During export, unsupported provider fields (folder, notes, TOTP, cards, custom fields, etc.) are emitted as empty/default values.
    • During import, unsupported/non-credential rows are ignored with a reason.

How it works

Random passwords (characters)

  • Length options: 8–64 characters
  • Choose 2 or 3 categories from:
    • letters
    • numbers
    • special characters

Random passphrases (words)

  • Word options: 3–10 words
  • Words are joined with hyphens (e.g. forest-ember-spark)
  • Words are chosen without replacement (no repeated words within a single passphrase)
  • Optional extras:
    • add numbers (randomly inserted into words)
    • add special characters (randomly inserted into words)

Random usernames

Three generation styles:

  1. Adjective + Noun (e.g. swift_tiger, cosmic_eagle_42)

    • Memorable and easy to pronounce
    • Optionally add 2-3 digit suffix
    • Separator options: underscore or hyphen
  2. Random Characters (e.g. a7k9m2p1, ab_3d_ef)

    • Maximum security and randomness
    • Length: 3–25 characters
    • Separator options: none, underscore, or hyphen
  3. Multiple Words (e.g. swift_tiger_eagle, forest_ocean_123)

    • Memorable yet more unique
    • Word count: 1–3 words
    • Optionally add digit suffix
    • Separator options: underscore or hyphen

Custom word list

The included word list contains 1000 lowercase words.

Override the word list in one of these ways (highest priority first):

  1. Set GENERATE_IT_WORDLIST to a file path
  2. Put a wordlist.txt in your current working directory

Otherwise, Generate It uses the bundled default word list.

License

Generate It is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

generate_it-0.2.2.tar.gz (79.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

generate_it-0.2.2-py3-none-any.whl (60.8 kB view details)

Uploaded Python 3

File details

Details for the file generate_it-0.2.2.tar.gz.

File metadata

  • Download URL: generate_it-0.2.2.tar.gz
  • Upload date:
  • Size: 79.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for generate_it-0.2.2.tar.gz
Algorithm Hash digest
SHA256 750a78119a89edc38ca102b9378b4f0ef911f656982de2ecf886ebb21136ea8a
MD5 63efebb2b0d967ba0e76be3c42491055
BLAKE2b-256 bba573a204fde06137fc81285938d8c16b65f729a0a83d788f1a5a5c7610839e

See more details on using hashes here.

File details

Details for the file generate_it-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: generate_it-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 60.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for generate_it-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9c1bef26b5a3ee9966a782fb90db2070487bfa87ed9c26e34c65dda66f3ffc88
MD5 6d69dd5f31bbaffb0b16da47059e17eb
BLAKE2b-256 1479d419e5cd91396970c1b41b697554e66a7b857fd0b13a4ce1ae03d7194328

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page