Skip to main content

Open-source AI CLI for command lookup, SQL generation, and developer tools with multi-model support (OpenAI, Anthropic, Google, Cohere, Ollama).

Project description

ChatCMD

PyPI version Supported Python versions License

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

Issues

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

chatcmd-2.2.1.tar.gz (71.8 kB view details)

Uploaded Source

Built Distribution

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

chatcmd-2.2.1-py3-none-any.whl (61.7 kB view details)

Uploaded Python 3

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

Hashes for chatcmd-2.2.1.tar.gz
Algorithm Hash digest
SHA256 ef71dd648f11aefd2867ca4f5819b8f24eb08e8ae0a1cdc2e824b2c6ceb13899
MD5 1cf0f019052a5a08b4d7a453904693ae
BLAKE2b-256 9bce31c8a91c171d717083525152e440fc080e303c86ddff5655136b40aa951e

See more details on using hashes here.

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

Hashes for chatcmd-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4c3fc3ea6a467ad71cecc710aaa0c568d3a688a684c050e41e73333bd02f881c
MD5 16130d04ffa0c63aa9e97da862bce5fb
BLAKE2b-256 ecba233e19f17f537577ff749ddaec4efbfe92f81b2bfa79b4be76f1c431bc19

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