Open-source AI CLI for command lookup, SQL generation, and developer tools with multi-model support (OpenAI, Anthropic, Google, Cohere, Ollama).
Project description
ChatCMD
ChatCMD is an open source AI-driven CLI-based command lookup using multiple AI models to lookup relevant CLI commands based on user input and other generating and lookup features.
Boost Your Productivity, Say Goodbye to Manual Searches
What's New in 2.2
- Security Hardened: SQL injection prevention, secure API key storage, input validation hardening
- Secure Key Storage: API keys stored in system keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service) with encrypted file fallback
- Command Injection Prevention: Enhanced validation to block dangerous patterns (backticks, command substitution, variable expansion)
- Database Integrity Checks: Automatic integrity verification on startup
- Error Message Sanitization: Sensitive information redacted from error messages
- UUID v1 Privacy: Uses randomized node to prevent MAC address exposure
- Google Genai Update: Migrated to new google-genai package
- Multi-provider workflow with unified model management (list models, model info, current model, performance stats)
- Provider-specific API key storage via secure keyring; legacy OpenAI flags kept for backward compatibility
- Optional length argument for
--random-password(default 18) - Enhanced, colored help and unified header output
Features
Core Features
- CLI-based command lookup using multiple AI models (OpenAI, Anthropic, Google, Cohere, Ollama)
- Generate SQL query using AI
- Generate a random user-agent
- Generate a random password
- Get your public IP address
- Get a color Hex code by describing the color
- Lookup HTTP Code
- Lookup any port number
- Auto copy command to clipboard
- Disable copy feature
- Store Data in Sqlite Database
- Add or update API keys for multiple providers
- Validate API keys
- Display API Keys
- Display last command
- Display last {number} of commands
- Delete last Command
- Delete last {number} of commands
- Display the total number of commands
- Clear all history records
- Display the database file size
- Clear and validate user inputs
- Clear and validate lookup results to ensure only valid CLI commands are returned
- Enhanced error handling with human-readable messages
- Display library information
Core Features Implementation Types
| Feature | Implementation | AI/API Usage | Description |
|---|---|---|---|
| CLI Command Lookup | 🟢 AI-Powered | ✅ AI Models | Uses OpenAI, Anthropic, Google, Cohere, Ollama |
| SQL Query Generation | 🟢 AI-Powered | ✅ AI Models | AI generates SQL based on natural language |
| Random User-Agent | 🔴 Static Code | ❌ No AI | Uses predefined user-agent strings |
| Random Password | 🔴 Static Code | ❌ No AI | Uses Python's random library |
| Public IP Address | 🟡 External API | ⚠️ External Service | Uses external IP service (not AI) |
| Color Hex Code | 🔴 Static Code | ❌ No AI | Uses predefined color database |
| HTTP Code Lookup | 🔴 Static Code | ❌ No AI | Uses predefined HTTP status codes |
| Port Lookup | 🔴 Static Code | ❌ No AI | Uses predefined port database |
| Database Operations | 🔴 Static Code | ❌ No AI | Uses SQLite for local storage |
| API Key Management | 🔴 Static Code | ❌ No AI | Local storage and validation |
| Command History | 🔴 Static Code | ❌ No AI | Local database operations |
| Clipboard Operations | 🔴 Static Code | ❌ No AI | Uses pyperclip library |
| Input Validation | 🔴 Static Code | ❌ No AI | Regex and string validation |
Summary:
- 🟢 AI-Powered (2 features): CLI lookup and SQL generation
- 🔴 Static Code (10 features): Most core features work offline
- 🟡 External API (1 feature): IP address lookup only
Developer Tools
- Regex Pattern Generator - Create regex patterns for common use cases
- Base64 Encoder/Decoder - Encode or decode base64 strings
- UUID Generator - Generate UUIDs in different formats (v1 with privacy protection, v3, v4, v5)
- Timestamp Converter - Convert between different timestamp formats
Developer Tools Implementation Types
| Feature | Implementation | AI/API Usage | Benefits |
|---|---|---|---|
| Regex Pattern Generator | 🔴 Static Code | ❌ No AI | Instant response, predefined patterns |
| Base64 Encoder/Decoder | 🔴 Static Code | ❌ No AI | Fast, built-in Python library |
| UUID Generator | 🔴 Static Code | ❌ No AI | Fast, uses Python's uuid library with privacy protection |
| Timestamp Converter | 🔴 Static Code | ❌ No AI | Reliable, uses datetime library |
Key Benefits:
- 100% Static Code: All developer tools work offline without API calls
- No AI Costs: Developer tools don't consume AI API credits
- Fast Response: Instant results without network latency
- Reliable: No dependency on external AI services
- Fully Offline: Works without internet connection
Multi-Model AI Support
- OpenAI Models: GPT-3.5 Turbo, GPT-4, GPT-4 Turbo
- Anthropic Claude Models: Claude 3 Haiku, Sonnet, Opus
- Google Models: Gemini Pro
- Cohere Models: Command, Command Light
- Local Models (Ollama): Llama 2, Code Llama, Mistral, Llama 3.2 3B
Requirements
Python >= 3.8.9
AI provider account and valid API key (OpenAI, Anthropic, Google, Cohere, or Ollama for local models)
Get API keys:
- OpenAI: https://platform.openai.com/signup
- Anthropic: https://console.anthropic.com/
- Google: https://makersuite.google.com/app/apikey
- Cohere: https://dashboard.cohere.ai/
- Ollama: https://ollama.ai/ (for local models)
Installation
pip3 install chatcmd
If pip not installed:
python3 -m pip install chatcmd
Installation output should display:
Collecting chatcmd
Using cached chatcmd-2.2.0-py3-none-any.whl
Installing collected packages: chatcmd
Successfully installed chatcmd-2.2.0
Upgrade
pip3 install --upgrade chatcmd
If pip not installed:
python3 -m pip install --upgrade chatcmd
Uninstall
pip3 uninstall chatcmd
If pip not installed:
python3 -m pip uninstall chatcmd
Quick Start
1. Set Up API Keys
# Set OpenAI API key
chatcmd --set-model-key openai
# Set Anthropic API key
chatcmd --set-model-key anthropic
# Set Google API key
chatcmd --set-model-key google
# Set Cohere API key
chatcmd --set-model-key cohere
2. List Available Models
chatcmd --list-models
3. Basic Usage
# Use default model (GPT-3.5 Turbo)
chatcmd --cmd
# Use specific model
chatcmd --model gpt-4 --cmd
# Generate a random password with custom length (default is 18)
chatcmd --random-password 24
Usage
Usage:
chatcmd [options]
Core Features:
-c, --cmd looking up a CLI command.
-q, --sql generate SQL query.
Tools:
--random-useragent generate a random user-agent
--get-ip get your public IP address.
--random-password [<length>] generate a random password (default: 18).
--color-code get a color Hex code.
--lookup-http-code lookup HTTP Code by code number.
--port-lookup lookup any port number.
--regex-pattern generate regex pattern for description.
--base64-encode encode text to base64.
--base64-decode decode base64 text.
--generate-uuid <version> generate UUID (1, 3, 4, 5).
--timestamp-convert <format> convert timestamp (unix, iso, readable).
Library Options:
-k, --set-key set or update API key (legacy OpenAI only).
-o, --get-key display API key (legacy OpenAI only).
-m, --model <model> select AI model (gpt-3.5-turbo, gpt-4, claude-3-haiku, etc.)
--list-models list all available AI models
--model-info <model> show information about a specific model
--set-model-key <provider> set API key for specific provider
--get-model-key <provider> get API key for specific provider
--current-model show current model and provider
--performance-stats show model performance statistics
--reset-config clear config and stored keys (with confirmation)
-g, --get-cmd display the last command.
-G, --get-last=<value> display the last [number] of commands.
-d, --delete-cmd delete the last command.
-D, --delete-last-cmd=<value> delete the last [number] of commands.
-t, --cmd-total display the total number of commands.
-r, --clear-history clear all history records.
-s, --db-size display the database size.
-n, --no-copy disable copy feature.
-h, --help display this screen.
-v, --version display ChatCMD version.
-x, --library-info display library information.
Usage Examples
Basic CLI Command Lookup
# Use default model
chatcmd --cmd "find all files larger than 100MB"
# Use specific model
chatcmd --model gpt-4 --cmd "create a backup of my database"
Developer Tools
# Generate regex pattern
chatcmd --regex-pattern "email validation"
# Encode/decode base64
chatcmd --base64-encode "Hello World"
chatcmd --base64-decode "SGVsbG8gV29ybGQ="
# Generate UUID (versions 1, 3, 4, 5)
chatcmd --generate-uuid 4
# Convert timestamp
chatcmd --timestamp-convert unix
Multi-Model Usage
# List available models
chatcmd --list-models
# Use Claude 3 Sonnet
chatcmd --model claude-3-sonnet --cmd
# Use local Llama 2 (requires Ollama)
chatcmd --model llama2 --cmd
# Check current model
chatcmd --current-model
# View performance statistics
chatcmd --performance-stats
Provider Key Management
# Set API key for a specific provider (recommended)
chatcmd --set-model-key openai
chatcmd --set-model-key anthropic
chatcmd --set-model-key google
chatcmd --set-model-key cohere
# Get masked API key for a provider
chatcmd --get-model-key openai
Local Models Setup (Ollama)
# Install Ollama
# macOS: brew install ollama
# Linux: curl -fsSL https://ollama.ai/install.sh | sh
# Pull models
ollama pull llama2
ollama pull codellama
ollama pull mistral
ollama pull llama3.2:3b
# Use local models
chatcmd --model llama2 --cmd
chatcmd --model codellama --cmd
chatcmd --model llama3.2:3b --cmd
Model Comparison
| Model | Speed | Quality | Cost | Best For |
|---|---|---|---|---|
| gpt-3.5-turbo | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | General use, fast responses |
| gpt-4 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | Complex commands, best quality |
| claude-3-haiku | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | Fast, good quality |
| claude-3-sonnet | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | Balanced performance |
| claude-3-opus | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | Best quality, complex tasks |
| gemini-pro | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | Google ecosystem |
| command | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | Cost-effective |
| llama2 (local) | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Privacy, no API costs |
| codellama (local) | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Coding tasks, privacy |
| llama3.2:3b (local) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Small, fast local model |
Error Codes
Include an exception message for each error if occurs.
| Code | Description |
|---|---|
| 1001 | General exception |
| 1002 | Failed to connect to database |
| 1003 | Failed to get API key from database |
| 1004 | Failed to output API key |
| 1005 | Failed to save API key to database |
| 1006 | Invalid ChatGPT API key |
| 1007 | Failed requesting API key |
| 1008 | Failed to add command |
| 1009 | API key is invalid or missing |
| 1010 | OpenAI API error occurred |
| 1011 | Lookup exception occurred |
| 1012 | Failed to add command |
| 1013 | Failed to get last command |
| 1014 | Failed to get list of command |
| 1015 | Failed deleting last command |
| 1016 | Failed to get last command |
| 1017 | Failed clearing history |
| 1018 | Failed to copy command |
Linux copy command issue
In order to perform a Graphics-related job in a Unix environment, the DISPLAY variable needs to be set initially. An error can occur when connecting to Linux via SSH, particularly if there is no copy/paste mechanism like Xclip installed. To resolve this, you can try installing Xclip using the following command: "sudo apt-get install xclip". Additionally, you need to export the DISPLAY variable by running: "export DISPLAY=:0.0".
To avoid the error message, you can use the "-no-copy" option when looking up a command, as it disables the copy feature.
Support
Developed and maintained by:
Naif Alshaye
https://naif.io
naif@naif.io
License
The MIT License (MIT). Please see License File MIT License for more information.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chatcmd-2.2.1.tar.gz.
File metadata
- Download URL: chatcmd-2.2.1.tar.gz
- Upload date:
- Size: 71.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef71dd648f11aefd2867ca4f5819b8f24eb08e8ae0a1cdc2e824b2c6ceb13899
|
|
| MD5 |
1cf0f019052a5a08b4d7a453904693ae
|
|
| BLAKE2b-256 |
9bce31c8a91c171d717083525152e440fc080e303c86ddff5655136b40aa951e
|
File details
Details for the file chatcmd-2.2.1-py3-none-any.whl.
File metadata
- Download URL: chatcmd-2.2.1-py3-none-any.whl
- Upload date:
- Size: 61.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c3fc3ea6a467ad71cecc710aaa0c568d3a688a684c050e41e73333bd02f881c
|
|
| MD5 |
16130d04ffa0c63aa9e97da862bce5fb
|
|
| BLAKE2b-256 |
ecba233e19f17f537577ff749ddaec4efbfe92f81b2bfa79b4be76f1c431bc19
|