wish
AI-Powered Penetration Testing Command Center
Overview
wish is a workflow-aware AI command center designed to accelerate penetration testers' thinking and reduce context-switching costs.
Installation
pip install wish-sh
Setup
OpenAI API Key Configuration
wish requires an OpenAI API key for AI functionality. Configure it using one of these methods:
Option 1: Configuration File (Recommended)
# Initialize configuration file
wish-ai-validate --init-config
# Set your API key
wish-ai-validate --set-api-key "your-openai-api-key-here"
Option 2: Environment Variable
export OPENAI_API_KEY="your-openai-api-key-here"
Option 3: Manual Configuration
Edit ~/.wish/config.toml:
[llm]
api_key = "your-openai-api-key-here"
model = "gpt-4o"
Getting an OpenAI API Key
- Visit OpenAI API Platform
- Sign in or create an account
- Go to "API Keys" section
- Click "Create new secret key"
- Copy the generated key and set it as shown above
⚠️ Important: Keep your API key secure and never commit it to version control.
Usage
wish
Note: On first launch, wish will download and index the HackTricks knowledge base. This may take a few minutes but only happens once.
Verifying Setup
To verify your API key is configured correctly:
Option 1: Using wish-ai validation tool
# Install wish-ai package and run validation
pip install ./packages/wish-ai
wish-ai-validate
Option 2: Using main application
# The application will validate the API key on startup
wish --version
If you see authentication errors, double-check your OPENAI_API_KEY environment variable.
Development
Quick Start (Development Environment)
# 1. Clone and navigate to the project
git clone <repository-url>
cd wish
# 2. Install dependencies
uv sync --all-packages --dev
# 3. Set up OpenAI API key
export OPENAI_API_KEY="your-openai-api-key-here"
# 4. Run wish-cli directly
uv run wish
Development Commands
# Setup development environment
make dev-setup
# Run tests
make test
# Format code
make format
# Run linting
make lint
# Run specific package tests
cd packages/wish-cli && uv run pytest
# Run E2E tests
uv run pytest e2e-tests/
Package Development
# Work on specific package
cd packages/wish-cli
# Install package in development mode
uv sync --dev
# Run package-specific tests
uv run pytest tests/
# Build package
uv build
Troubleshooting
Common Issues
"No module named 'wish_cli'" in Development
# Solution: Use uv run instead of direct execution
uv run wish
# Or install in development mode
pip install -e .
OpenAI API Authentication Errors
# Check your API key is set
echo $OPENAI_API_KEY
# Verify API key configuration
wish-ai-validate --check-env
# Re-initialize configuration
wish-ai-validate --init-config
wish-ai-validate --set-api-key "your-key-here"
Import or Dependency Issues
# Reinstall all dependencies
uv sync --reinstall --all-packages --dev
# Clear uv cache
uv cache clean
# Check Python version (requires 3.11+)
python --version
Development Environment Setup
# Ensure you're in the correct directory
cd wish
# Install all workspace packages
uv sync --all-packages --dev
# Verify installation
uv run python -c "import wish_cli; print('✅ Installation successful')"
Performance Issues
Slow Startup
- Cause: OpenAI API key validation
- Solution: Use cached configuration or environment variables
High Memory Usage
- Cause: Rich console history retention
- Solution: Limit history size in configuration
UI Responsiveness
- Cause: Blocking operations in main thread
- Solution: All operations are async by design
Getting Help
- GitHub Issues: Report bugs
- Documentation: Check
docs/directory for detailed guides - Community: Join our development discussions
Sliver C2 Integration (Optional)
wish supports integration with Sliver C2 framework for post-exploitation workflows.
Prerequisites
- Sliver server installed and running
- Valid operator configuration file
- Active implants/beacons (for command execution)
See Sliver Setup Guide for detailed instructions.
Packages
- wish-models: Core data models and validation
- wish-core: Business logic and state management
- wish-ai: LLM integration and plan generation
- wish-tools: Tool integrations and parsers
- wish-knowledge: RAG and knowledge base integration
- wish-c2: C2 framework connectors
- wish-cli: Main CLI application
Contributing
We welcome contributions! Please see our Contributing Guide for details.
License
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
Metadata
Release files for wish-sh 0.7.0
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 | Actions |
|---|---|---|---|---|
| wish_sh-0.7.0.tar.gz | 269.3 kB | Without provenance | Details for wish_sh-0.7.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| wish_sh-0.7.0-py3-none-any.whl | Python 3 | none | any | Details for wish_sh-0.7.0-py3-none-any.whl |
Total release size: 287.6 kB
Release files / wish_sh-0.7.0.tar.gz
| Download URL | wish_sh-0.7.0.tar.gz |
|---|---|
| Size | 269.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f5a0551150c5e1568fdbd306e9ba9f0e4462b17f465d8915560136e3d5b5417
|
|
BLAKE2b-256 checksum How to use checksums |
f9cdc70b8d6ea082ba05c9fb98db9ea79fc13a74e8468d03b900632306dd24e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.11
|
Release files / wish_sh-0.7.0-py3-none-any.whl
| Download URL | wish_sh-0.7.0-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e90f7144828e5181ea783ab15c8dfafcd4d0ec184469497e475ad02ae4dcd47a
|
|
BLAKE2b-256 checksum How to use checksums |
c0958597835dccc41b0600296df9752338c1499e539887d29d8e1f4e0e5d822c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.11
|
Security for wish-sh 0.7.0
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.