Your Terminal, Supercharged.
A fast, extensible command-line toolkit that brings password tools, text processing, JSON manipulation, developer utilities, image processing, network diagnostics, security auditing, and more — all under one coherent interface.
$ preonic
██████╗ ██████╗ ███████╗ ██████╗ ███╗ ██╗██╗ ██████╗
██╔══██╗██╔══██╗██╔════╝██╔═══██╗████╗ ██║██║██╔════╝
██████╔╝██████╔╝█████╗ ██║ ██║██╔██╗ ██║██║██║
██╔═══╝ ██╔══██╗██╔══╝ ██║ ██║██║╚██╗██║██║██║
██║ ██║ ██║███████╗╚██████╔╝██║ ╚████║██║╚██████╗
╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═════╝
C L I
Modern CLI Toolkit v1.2.0
Use preonic --help to see available commands.
| Toolkit | Capabilities |
|---|---|
| Password | Cryptographically secure generation, strength scoring, Shannon entropy, Diceware |
| JSON | Pretty-print, validate, minify, deep diff, dot-notation query, key sorting |
| Text | Character/word/line counts, 12 case conversions, dedup, clean, sort, unique |
| Developer | UUIDs (v1/v4/v5), hashing (any hashlib algo), base64, timestamps, regex, .gitignore generation |
| Image | Compress, convert, resize, EXIF metadata, batch processing (requires Pillow) |
| Markdown | Convert to HTML/text/DOCX/PDF, Rich-rendered preview, reading time, stats (optional extras) |
| Network | ICMP ping, DNS lookups (A/AAAA/MX/TXT/NS), local & public IP, interface inspection |
| Security | Entropy analysis, SHA-256 hashing, HMAC verification, Fernet encryption, secret scanning, permission auditing |
| System | OS/CPU/RAM/GPU/disk info, real-time resource monitoring, process listing |
| Benchmark | Disk R/W speed, CPU perf, memory allocation, filesystem ops |
| UUID | Time-based (v1), random (v4), namespace (v5), batch generation |
| Hash | Multi-algorithm hashing for text and files, HMAC verification |
| Encode | Base64, URL percent-encoding, hex encoding and decoding |
| Random | Numbers, strings, bytes, colors (hex/RGB/HSL) |
| QR | QR code generation and decoding from images |
| Diff | Line-by-line text diff, structured JSON diff, recursive directory diff |
| Environment | List, search, export, and compare environment variables |
| Time | Current time, Unix timestamps, timezone conversion, countdown timers |
| Plugins | Discover, install, and manage CLI extensions |
Design principles: minimal dependencies, polished Rich terminal UI, consistent conventions across every command, cross-platform support, strict typing, and a plugin architecture for extensibility.
pip install preonicpipx install preonicgit clone https://github.com/Primeeex/preonic-cli.git
cd preonic-cli
pip install -e ".[dev]"- Python 3.12+ (CPython 3.12 or higher)
| Extra | Install | What you get |
|---|---|---|
image |
pip install "preonic[image]" |
image toolkit (compress, convert, resize, batch) |
markdown |
pip install "preonic[markdown]" |
markdown toolkit (convert, preview, stats) |
pdf |
pip install "preonic[pdf]" |
PDF export via markdown convert --format pdf |
system |
pip install "preonic[system]" |
Extended system toolkit (psutil-based monitoring) |
network |
pip install "preonic[network]" |
network toolkit (DNS, ping, interfaces) |
security |
pip install "preonic[security]" |
security toolkit (Fernet encryption, HMAC) |
all |
pip install "preonic[all]" |
Everything above |
# Generate a secure 32-character password
preonic password generate --length 32
# Check password strength
preonic password strength "correct-horse-battery-staple"
# Pretty-print JSON from stdin
echo '{"name":"test","version":1}' | preonic json format
# Query nested JSON
echo '{"a":{"b":{"c":42}}}' | preonic json query a.b.c
# Sort and deduplicate lines
echo -e "banana\napple\nbanana\ncherry" | preonic text sort | preonic text unique
# Convert text to kebab-case
preonic text kebab "Hello World"
# Generate a UUID v4
preonic uuid v4
# Hash a file with SHA-256
preonic hash file --algorithm sha256 ./myfile.txt
# Base64 encode a string
preonic encode base64 "Hello, World!"
# Check system health
preonic doctor
# Get comprehensive system info
preonic system info
# Ping a host
preonic network ping google.com
# Find your public IP
preonic network ip public
# Run a disk benchmark
preonic benchmark disk
# List installed plugins
preonic plugins listpreonic-cli uses YAML-based configuration with layered precedence:
CLI flags > Environment variables > Config file > Built-in defaults
| Platform | Path |
|---|---|
| Linux | ~/.config/preonic/config.yaml |
| macOS | ~/Library/Application Support/preonic/config.yaml |
| Windows | %APPDATA%\preonic\config.yaml |
All environment variables use the PREONIC_ prefix. Nested keys use double
underscores:
export PREONIC_LOGGING__LEVEL=DEBUG
export PREONIC_OUTPUT__JSON=trueversion: 1
logging:
level: WARNING
max_size_mb: 10
output:
color: true
json: false
update:
check: trueEvery command supports --json (-j) for machine-readable output, making
preonic easy to compose in scripts:
preonic --json password generate --length 20
preonic --json system info
preonic --json hash text --algorithm sha256 "my secret"Generate shell completions for Bash, Zsh, or Fish:
# Bash
preonic completion bash >> ~/.bashrc
# Zsh
preonic completion zsh >> ~/.zshrc
# Fish
preonic completion fish > ~/.config/fish/completions/preonic.fishRestart your shell or source the appropriate file to enable tab completion.
preonic-cli
├── docs
│ ├── architecture.md [8.9 KiB]
│ ├── commands.md [21.9 KiB]
│ ├── configuration.md [3.6 KiB]
│ ├── contributing.md [3.7 KiB]
│ ├── developer-guide.md [9.2 KiB]
│ ├── examples.md [8.8 KiB]
│ ├── faq.md [3.9 KiB]
│ ├── index.md [3.8 KiB]
│ ├── installation.md [2.7 KiB]
│ ├── plugins.md [4.1 KiB]
│ ├── security.md [5.4 KiB]
│ └── troubleshooting.md [5.1 KiB]
├── preonic
│ ├── commands
│ │ ├── __init__.py [9.0 KiB]
│ │ ├── about_cmd.py [2.9 KiB]
│ │ ├── archive_cmd.py [10.3 KiB]
│ │ ├── banner_cmd.py [452.0 B]
│ │ ├── benchmark_cmd.py [8.3 KiB]
│ │ ├── cache_cmd.py [6.5 KiB]
│ │ ├── completion_cmd.py [5.2 KiB]
│ │ ├── config_cmd.py [6.7 KiB]
│ │ ├── date_cmd.py [10.3 KiB]
│ │ ├── decode_cmd.py [3.3 KiB]
│ │ ├── dev_cmd.py [8.8 KiB]
│ │ ├── diagnostics_cmd.py [5.3 KiB]
│ │ ├── diff_cmd.py [5.3 KiB]
│ │ ├── doctor_cmd.py [16.6 KiB]
│ │ ├── encode_cmd.py [3.0 KiB]
│ │ ├── env_cmd.py [7.9 KiB]
│ │ ├── file_cmd.py [17.5 KiB]
│ │ ├── hash_cmd.py [8.9 KiB]
│ │ ├── help_cmd.py [3.0 KiB]
│ │ ├── http_cmd.py [9.5 KiB]
│ │ ├── image_cmd.py [18.0 KiB]
│ │ ├── info_cmd.py [1.3 KiB]
│ │ ├── json_cmd.py [11.5 KiB]
│ │ ├── markdown_cmd.py [15.4 KiB]
│ │ ├── math_cmd.py [7.9 KiB]
│ │ ├── network_cmd.py [17.2 KiB]
│ │ ├── password_cmd.py [6.6 KiB]
│ │ ├── path_cmd.py [6.8 KiB]
│ │ ├── plugins_cmd.py [7.9 KiB]
│ │ ├── qr_cmd.py [4.3 KiB]
│ │ ├── random_cmd.py [7.4 KiB]
│ │ ├── security_cmd.py [10.7 KiB]
│ │ ├── system_cmd.py [19.5 KiB]
│ │ ├── text_cmd.py [10.2 KiB]
│ │ ├── time_cmd.py [7.0 KiB]
│ │ ├── tree_cmd.py [12.5 KiB]
│ │ ├── update_cmd.py [1.7 KiB]
│ │ ├── uuid_cmd.py [5.7 KiB]
│ │ └── version_cmd.py [2.0 KiB]
│ ├── core
│ │ ├── __init__.py [848.0 B]
│ │ ├── context.py [2.3 KiB]
│ │ ├── errors.py [2.6 KiB]
│ │ └── validators.py [5.7 KiB]
│ ├── formatters
│ │ ├── __init__.py [1.1 KiB]
│ │ ├── output.py [1.5 KiB]
│ │ ├── panels.py [1.8 KiB]
│ │ ├── progress.py [2.7 KiB]
│ │ ├── render.py [2.5 KiB]
│ │ └── trees.py [2.6 KiB]
│ ├── models
│ │ ├── __init__.py [751.0 B]
│ │ ├── config.py [1.1 KiB]
│ │ ├── diagnostics.py [3.0 KiB]
│ │ ├── results.py [2.4 KiB]
│ │ └── validation.py [759.0 B]
│ ├── services
│ │ ├── __init__.py [3.2 KiB]
│ │ ├── archive_service.py [12.5 KiB]
│ │ ├── audit_service.py [5.1 KiB]
│ │ ├── benchmark_service.py [7.7 KiB]
│ │ ├── cache.py [4.2 KiB]
│ │ ├── configuration.py [6.4 KiB]
│ │ ├── date_service.py [4.3 KiB]
│ │ ├── developer.py [6.0 KiB]
│ │ ├── diagnostics.py [2.0 KiB]
│ │ ├── diff_service.py [5.7 KiB]
│ │ ├── dns_service.py [3.1 KiB]
│ │ ├── document_service.py [1.9 KiB]
│ │ ├── encode_service.py [2.7 KiB]
│ │ ├── encryption_service.py [3.5 KiB]
│ │ ├── env_service.py [4.1 KiB]
│ │ ├── environment.py [3.8 KiB]
│ │ ├── file_service.py [12.3 KiB]
│ │ ├── filesystem.py [6.2 KiB]
│ │ ├── hardware_service.py [2.6 KiB]
│ │ ├── hash_service.py [3.1 KiB]
│ │ ├── http_service.py [6.1 KiB]
│ │ ├── image_conversion_service.py [2.7 KiB]
│ │ ├── image_service.py [11.6 KiB]
│ │ ├── json_service.py [4.1 KiB]
│ │ ├── markdown_service.py [7.6 KiB]
│ │ ├── math_service.py [7.9 KiB]
│ │ ├── metadata.py [2.2 KiB]
│ │ ├── network_service.py [6.2 KiB]
│ │ ├── password.py [47.0 KiB]
│ │ ├── path_service.py [3.5 KiB]
│ │ ├── plugin.py [3.4 KiB]
│ │ ├── port_scanner_service.py [2.1 KiB]
│ │ ├── process_service.py [3.3 KiB]
│ │ ├── qr_service.py [4.0 KiB]
│ │ ├── random_service.py [3.9 KiB]
│ │ ├── security_service.py [5.3 KiB]
│ │ ├── system_service.py [6.6 KiB]
│ │ ├── template_service.py [2.3 KiB]
│ │ ├── text_service.py [3.8 KiB]
│ │ ├── time_service.py [4.3 KiB]
│ │ ├── uuid_service.py [2.5 KiB]
│ │ └── version.py [3.2 KiB]
│ ├── utils
│ │ ├── __init__.py [1019.0 B]
│ │ ├── commands.py [3.8 KiB]
│ │ ├── formatting.py [2.8 KiB]
│ │ ├── paths.py [2.2 KiB]
│ │ └── system.py [1.3 KiB]
│ ├── __init__.py [201.0 B]
│ ├── __main__.py [119.0 B]
│ ├── cli.py [3.1 KiB]
│ ├── config.py [5.6 KiB]
│ ├── constants.py [458.0 B]
│ ├── exceptions.py [1.7 KiB]
│ ├── log.py [1.9 KiB]
│ └── main.py [1.8 KiB]
├── tests
│ ├── __init__.py [0.0 B]
│ ├── conftest.py [3.4 KiB]
│ ├── test_cli.py [3.0 KiB]
│ ├── test_command_utils.py [1.3 KiB]
│ ├── test_commands_archive_cmd.py [2.8 KiB]
│ ├── test_commands_cache.py [1.0 KiB]
│ ├── test_commands_completion.py [7.0 KiB]
│ ├── test_commands_date_cmd.py [2.9 KiB]
│ ├── test_commands_dev.py [5.4 KiB]
│ ├── test_commands_doctor.py [1.0 KiB]
│ ├── test_commands_env.py [1.8 KiB]
│ ├── test_commands_file_cmd.py [6.4 KiB]
│ ├── test_commands_hash.py [1.4 KiB]
│ ├── test_commands_help.py [4.9 KiB]
│ ├── test_commands_image.py [8.2 KiB]
│ ├── test_commands_json.py [5.2 KiB]
│ ├── test_commands_markdown.py [7.0 KiB]
│ ├── test_commands_math_cmd.py [4.8 KiB]
│ ├── test_commands_network.py [2.8 KiB]
│ ├── test_commands_password.py [3.5 KiB]
│ ├── test_commands_path_cmd.py [3.5 KiB]
│ ├── test_commands_plugins.py [6.1 KiB]
│ ├── test_commands_qr.py [4.5 KiB]
│ ├── test_commands_random.py [1.1 KiB]
│ ├── test_commands_security.py [5.9 KiB]
│ ├── test_commands_system.py [3.8 KiB]
│ ├── test_commands_text.py [3.2 KiB]
│ ├── test_commands_uuid.py [1.7 KiB]
│ ├── test_config.py [4.1 KiB]
│ ├── test_context.py [2.3 KiB]
│ ├── test_errors.py [1.8 KiB]
│ ├── test_filesystem.py [5.1 KiB]
│ ├── test_formatters.py [2.0 KiB]
│ ├── test_formatting.py [2.3 KiB]
│ ├── test_main.py [932.0 B]
│ ├── test_models.py [2.2 KiB]
│ ├── test_progress.py [787.0 B]
│ ├── test_registration.py [1.1 KiB]
│ ├── test_results.py [2.2 KiB]
│ ├── test_services_audit.py [3.1 KiB]
│ ├── test_services_developer.py [5.3 KiB]
│ ├── test_services_dns.py [2.9 KiB]
│ ├── test_services_document.py [1.9 KiB]
│ ├── test_services_encryption.py [3.3 KiB]
│ ├── test_services_hardware.py [1007.0 B]
│ ├── test_services_image.py [10.9 KiB]
│ ├── test_services_image_conversion.py [2.7 KiB]
│ ├── test_services_json.py [3.4 KiB]
│ ├── test_services_markdown.py [8.2 KiB]
│ ├── test_services_network.py [6.5 KiB]
│ ├── test_services_new.py [16.5 KiB]
│ ├── test_services_password.py [4.9 KiB]
│ ├── test_services_plugin.py [5.6 KiB]
│ ├── test_services_port_scanner.py [2.5 KiB]
│ ├── test_services_process.py [4.8 KiB]
│ ├── test_services_security.py [4.0 KiB]
│ ├── test_services_system.py [6.3 KiB]
│ ├── test_services_template.py [2.0 KiB]
│ ├── test_services_text.py [4.6 KiB]
│ ├── test_utils.py [2.8 KiB]
│ └── test_validators.py [4.1 KiB]
├── CHANGELOG.md [10.4 KiB]
├── CONTRIBUTING.md [1.6 KiB]
├── LICENSE [1.0 KiB]
├── pyproject.toml [3.4 KiB]
├── README.md [9.9 KiB]
├── ROADMAP.md [1.5 KiB]
└── SECURITY.md [829.0 B]
Key design decisions:
- CommandRegistry — every toolkit registers as a Typer sub-application with two lines of boilerplate, making it trivial to add new command groups.
- Service layer — business logic lives in
services/, decoupled from CLI I/O for testability. - Pydantic models — all structured data uses validated Pydantic models.
- Rich throughout — tables, panels, progress bars, and syntax highlighting are consistent everywhere.
- Lazy imports — optional dependencies (Pillow, markdown, psutil) are imported only when needed, keeping startup fast.
Full documentation lives in the docs/ directory:
| Document | Description |
|---|---|
| Installation | Detailed install instructions and platform notes |
| Configuration | Config file format, environment variables, precedence |
| Commands | Complete command reference |
| Developer Guide | Extending preonic-cli with new commands |
| Architecture | System design and data flow |
| Plugins | Creating and distributing plugins |
| Examples | Real-world usage examples |
| Security | Security features and best practices |
| FAQ | Frequently asked questions |
| Troubleshooting | Common issues and solutions |
Contributions are welcome. Please see CONTRIBUTING.md for:
- Development environment setup
- Coding standards and linting rules
- Testing requirements
- Pull request process
git clone https://github.com/Primeeex/preonic-cli.git
cd preonic-cli
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
ruff check preonic tests
mypy preonic
pytestTo report vulnerabilities, please see SECURITY.md.
MIT — see LICENSE for details.