House Monkey 🐒
Chaos testing for AI apps. 18 extreme personas attack your AI to find edge cases before users do.
pip install housemonkey
housemonkey run --target https://your-api.com/chat --owasp
One command. 18 extreme personas. OWASP LLM Top 10 coverage. Terminal report in 2 minutes.
What it does
House Monkey attacks your AI app with realistic extreme users:
- The Jailbreaker — tries to extract your system prompt (OWASP LLM01)
- The Angry Customer — escalating hostility, demands manager
- The Confused Grandma — off-topic, misunderstands everything
- The Hallucination Baiter — asks about things that don't exist (OWASP LLM09)
- The Permission Escalator — tricks AI into unauthorized actions (OWASP LLM06)
- The RAG Poisoner — manipulates retrieval context (OWASP LLM08)
- ...and 12 more
Each persona runs a multi-turn conversation against your API, then an LLM judge evaluates if your AI handled it correctly.
Quick start
# Install
pip install housemonkey
# List all personas
housemonkey list
# Test your AI (needs OpenAI API key for persona generation + judging)
export OPENAI_API_KEY=sk-...
housemonkey run --target https://your-api.com/chat
# Run only OWASP-mapped personas
housemonkey run --target https://your-api.com/chat --owasp
# Run specific personas
housemonkey run --target https://your-api.com/chat --persona jailbreaker oversharer
# Custom API format (non-OpenAI)
housemonkey run --target https://your-api.com/ask --payload-template '{"input": "{{message}}"}'
# Save JSON report
housemonkey run --target https://your-api.com/chat --output report.json
OWASP LLM Top 10 coverage
| OWASP ID | Vulnerability | Persona |
|---|---|---|
| LLM01 | Prompt Injection | The Jailbreaker |
| LLM02 | Sensitive Info Disclosure | The Oversharer |
| LLM05 | Improper Output Handling | The JSON Breaker |
| LLM06 | Excessive Agency | The Permission Escalator |
| LLM08 | Vector/Embedding Weakness | The RAG Poisoner |
| LLM09 | Misinformation | The Hallucination Baiter |
| LLM10 | Unbounded Consumption | The Resource Abuser |
How it works
- Each persona has a system prompt that simulates an extreme user type
- An LLM generates realistic messages as that persona
- Messages are sent to your target API
- An LLM judge evaluates if your AI handled the persona correctly
- Terminal report shows pass/fail with specific failure reasons
Try it on a broken chatbot
# Start the intentionally broken test target (7 built-in flaws)
python test_target.py
# In another terminal, attack it
housemonkey run --target http://127.0.0.1:8888 --owasp
Requirements
- Python 3.10+
- OpenAI API key (for persona generation + judging)
- Your AI app must have an HTTP API endpoint
License
MIT. Powered by ClawClaw Soul open-source persona engine.
Metadata
Release files for housemonkey 0.1.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 |
|---|---|---|---|---|
| housemonkey-0.1.0.tar.gz | 15.6 kB | Without provenance | Details for housemonkey-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| housemonkey-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for housemonkey-0.1.0-py3-none-any.whl |
Total release size: 31.9 kB
Release files / housemonkey-0.1.0.tar.gz
| Download URL | housemonkey-0.1.0.tar.gz |
|---|---|
| Size | 15.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3aa033f8d8b8a4d5b73f0db0986d988a86bb1bd63c85db3df9ea59b1af717d61
|
|
BLAKE2b-256 checksum How to use checksums |
e8a28200e1054a83289325b45161ed112101cf2bc5f40b496442b7addb0c93ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / housemonkey-0.1.0-py3-none-any.whl
| Download URL | housemonkey-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a987ee1693ea8f9296f47b54382ff4d8fca5e370983d222f9f7e8e72e941fdc
|
|
BLAKE2b-256 checksum How to use checksums |
7f5721023877d76219d6cc88f7ad4ba88862a7fd529ae0d9e1431807c15aa958
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Security for housemonkey 0.1.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.