Quick Question (qq)
A powerful, cross-platform CLI tool that generates and executes terminal commands using 100+ LLM providers through LiteLLM integration. It intelligently prioritizes local models for privacy and falls back to cloud providers when configured.
🚀 Key Features
Universal LLM Support (100+ Providers via LiteLLM)
-
Local Providers (Privacy-first, no API keys):
- Ollama (port 11434) - Run open-source models locally
- LM Studio (port 1234) - GUI-based local model management
-
Major Cloud Providers:
- OpenAI (GPT-4o, GPT-5, ChatGPT models)
- Anthropic (Claude 3.5 Sonnet/Haiku/Opus)
- Google (Gemini, PaLM)
- Amazon Bedrock
- Azure OpenAI
- Groq (Fast inference)
- Grok (xAI)
-
Specialized Providers (via LiteLLM):
- Cohere, Replicate, Hugging Face
- Together AI, Anyscale, Perplexity
- DeepInfra, AI21, Voyage AI
- And 80+ more providers!
Intelligent Features
- ⚡ Smart Provider Selection: Automatically detects and uses available providers
- 🎯 Model Optimization: Selects best models based on availability and performance
- 📝 Command History: Track and replay previous commands
- 🎨 Rich Interactive UI: Beautiful terminal interface with Textual TUI
- 📋 Clipboard Integration: Copy or type commands directly
- 🔧 Developer Mode: Extensible framework for custom actions
- 🚄 Simple Mode: Streamlined one-shot command generation
- 💾 Smart Caching: 1-hour TTL for providers and models
📦 Installation
From PyPI (Stable)
pip install qq
From Test PyPI (Latest Features)
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ qq2
From Source (Development)
git clone https://github.com/yourusername/quickquestion.git
cd quickquestion
pip install -e .
🎯 Quick Start
Basic Usage
# Get a command suggestion
qq "find all large files over 100MB"
# Simple mode - instant command (no UI)
qq --simple "kill process on port 8080"
# Type command directly to terminal
qq --simple-type "list docker containers"
Configuration
# Interactive settings (Rich UI)
qq --settings
# Advanced configuration (Textual TUI)
qq --config
# View command history
qq --history
# Developer mode
qq --dev
⚙️ Configuration Options
Interactive Settings (qq --settings)
Navigate with arrow keys through:
- Default Provider - Choose from available providers
- Default Model - Select model for chosen provider
- Command Action - Run or Copy commands
- Simple Mode - Enable/disable streamlined mode
- Simple Mode Action - Copy or Type behavior
Advanced Config (qq --config)
Beautiful Textual TUI with tabs:
- Quick Setup - Same as
--settingsbut in modern UI - Providers - Browse and configure 100+ providers
- Settings - General application settings
- About - Version and documentation
Settings are persisted in ~/.qq_settings.json
🔌 Provider Setup
Local Providers (No API Key Required)
Ollama
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull a model
ollama pull llama2
# qq will auto-detect Ollama on port 11434
qq "your question"
LM Studio
- Download from lmstudio.ai
- Load any GGUF model
- Start local server (port 1234)
- qq auto-detects LM Studio
Cloud Providers
OpenAI
export OPENAI_API_KEY="sk-..."
qq "your question"
Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
qq "your question"
Other Providers
qq supports 100+ providers through LiteLLM. Set the appropriate environment variable:
export GROQ_API_KEY="..."
export XAI_API_KEY="..." # For Grok
export GEMINI_API_KEY="..."
export COHERE_API_KEY="..."
# etc.
🎨 Usage Examples
Command Generation
# File operations
qq "find files modified today"
qq "compress all images in current directory"
# System management
qq "show memory usage by process"
qq "find what's using port 3000"
# Git operations
qq "undo last commit keeping changes"
qq "show commits by author in last week"
# Docker/Kubernetes
qq "remove all stopped containers"
qq "get pod logs from last hour"
Simple Mode (No UI)
# Copy to clipboard
qq --simple-copy "create python virtual environment"
# ✓ Copied: python -m venv venv
# Type to terminal
qq --simple-type "activate virtual environment"
# source venv/bin/activate [appears in terminal]
Developer Mode
qq --dev
# Access specialized developer actions and workflows
🛠️ Advanced Features
Custom Developer Actions
Create ~/QuickQuestion/CustomDevActions/my_action.py:
from quickquestion.dev_actions.base import DevAction
class MyAction(DevAction):
@property
def name(self) -> str:
return "My Custom Action"
@property
def description(self) -> str:
return "Does something special"
def execute(self) -> bool:
self.console.print("[green]Executing...[/green]")
# Your logic here
return True
Performance Optimizations
- Async Provider Detection: Parallel checking for fastest startup
- Smart Caching: 1-hour TTL for providers, 30-second for other data
- Lazy Loading: Deferred initialization in simple mode
- Model Prioritization: Automatic selection of optimal models
Debugging
# Enable debug output
qq --debug "your question"
# Clear provider cache
qq --clear-cache
📁 File Locations
~/.qq_settings.json- User preferences~/.qq_history.json- Command history (last 100)~/.qq_cache.json- Provider and model cache~/QuickQuestion/CustomDevActions/- Custom actions
🔧 Troubleshooting
Provider Not Detected
# Clear cache and re-detect
qq --clear-cache
qq --settings # Reconfigure
API Key Issues
# Verify environment variable
echo $OPENAI_API_KEY
# Set in shell profile
echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
SSL Certificate Errors
# macOS-specific fix
export CERT_PATH=$(python -m certifi)
export SSL_CERT_FILE="$CERT_PATH"
🚢 CI/CD & Deployment
GitHub Actions / Gitea Actions
The project includes automated workflows for:
- Testing on push/PR
- Publishing to PyPI on version tags
- Separate Test PyPI (qq2) and Production PyPI (qq) releases
Manual Deployment
# Build
python -m build
# Test locally
pip install dist/qq-*.whl
# Upload to PyPI
twine upload dist/*
📊 Architecture
quickquestion/
├── qq.py # Main entry point and CLI
├── llm_lite_provider.py # LiteLLM integration (100+ providers)
├── settings_manager.py # Configuration management
├── ui_library.py # Rich terminal UI components
├── cache.py # TTL-based caching system
├── provider_registry.py # Provider catalog and metadata
├── config_app.py # Textual TUI for configuration
└── dev_actions/ # Developer mode actions
🌟 What's New in v0.2.0
- LiteLLM Integration: Support for 100+ LLM providers
- Provider Registry: Organized catalog of all providers
- Textual TUI: Modern configuration interface (
--config) - GPT-5 Support: Compatible with latest OpenAI models
- Enhanced Caching: Improved performance and reliability
- CI/CD Pipeline: Automated testing and deployment
- Bug Fixes: Provider persistence, model selection, and more
🗺️ Roadmap
- Web UI for configuration
- Plugin system for extensions
- Multi-command workflows
- Command explanation mode
- Integration with shell history
- Homebrew formula
- Docker image
- VSCode extension
📄 License
Proprietary - All rights reserved. See LICENSE file.
💬 Support & Contact
- Bug Reports: GitHub Issues
- Feature Requests: qq@southbrucke.com
- General Support: support@southbrucke.com
- Author: Cristian Vyhmeister (cv@southbrucke.com)
🙏 Acknowledgments
- Built with LiteLLM for universal LLM support
- UI powered by Rich and Textual
- Thanks to all contributors and users!
Quick Question - Your AI-powered command line companion 🚀
Metadata
Release files for qq 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| qq-0.2.1.tar.gz | 62.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qq-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 135.4 kB
Release files / qq-0.2.1.tar.gz
| Download URL | qq-0.2.1.tar.gz |
|---|---|
| Size | 62.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cf6703d0ba267d6f6ca4fc75cd0b58f86069a58f07e6fa92264a076c810bb4fa
|
|
BLAKE2b-256 checksum How to use checksums |
5b58759a3c4d8e37a5e6bf6980df1306746d701b66dd90eed9d9bb8ac4373d78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.2
|
Release files / qq-0.2.1-py3-none-any.whl
| Download URL | qq-0.2.1-py3-none-any.whl |
|---|---|
| Size | 73.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
82f1732d495d5fcc1ac6f2e253a055fa50485060a974edb8ea7ca52ec7e073d9
|
|
BLAKE2b-256 checksum How to use checksums |
963172f81d5c97aaee282ddcbbb3baf04759b74b787133da642aaf0f070acc1b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.2
|
Security for qq 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.