Skip to main content

Standalone AI Red Team Engine - automated adversarial testing for LLM applications

Project description

Oubliette Dungeon

Standalone adversarial testing engine for LLM applications. Run red team attack scenarios against any LLM endpoint and measure safety guardrail effectiveness.

Features

  • 57 built-in attack scenarios across 6 categories (prompt injection, jailbreaking, information extraction, social engineering, model exploitation, multi-turn attacks)
  • Refusal-aware evaluation - reduces false positive bypasses when LLMs mention attack keywords in refusal context
  • Honeypot-aware scoring - detects honey token decoys from pipeline metadata
  • Multi-turn attack support - escalating conversation sequences
  • Click CLI with run, stats, serve, demo, replay, export commands
  • React SPA dashboard with 6 pages (Command Center, Scenarios, Sessions, Providers, Scheduler, Reports)
  • Flask REST API at /api/dungeon/
  • Tool integrations - PyRIT, DeepTeam, AIX Framework, Garak probe importer
  • Cron scheduler with webhook notifications
  • PDF report generation
  • Multi-provider comparison - benchmark multiple LLMs side-by-side

Install

pip install oubliette-dungeon

With optional extras:

pip install oubliette-dungeon[flask]     # API server + dashboard
pip install oubliette-dungeon[pdf]       # PDF reports
pip install oubliette-dungeon[pyrit]     # PyRIT integration
pip install oubliette-dungeon[all]       # Everything

Quick Start

CLI

# Run all scenarios against a target
oubliette-dungeon run --target http://localhost:5000/api/chat

# Show scenario library statistics
oubliette-dungeon stats

# Start demo mode with mock target and seeded data
oubliette-dungeon demo

# Start the API server + dashboard
oubliette-dungeon serve --port 8666

# Export results
oubliette-dungeon export --format json --output results.json

Python API

from oubliette_dungeon import RedTeamOrchestrator, RedTeamResultsDB

db = RedTeamResultsDB("./results")
orch = RedTeamOrchestrator(
    scenario_file=None,  # Uses built-in scenarios
    target_url="http://localhost:5000/api/chat",
    results_db=db,
)
results = orch.run_all_scenarios()
orch.print_summary(results)

Docker

cd docker
docker compose up

Dashboard available at http://localhost:8666.

Target API Contract

Your LLM endpoint should accept POST requests with:

{"message": "the attack prompt text"}

And return:

{
  "response": "the LLM's response text",
  "blocked": false,
  "ml_score": 0.15,
  "llm_verdict": "SAFE"
}

Only response is required. The additional fields (blocked, ml_score, llm_verdict) enable richer evaluation when available.

Custom Scenarios

# my_scenarios.yaml
scenarios:
  - id: CUSTOM-001
    name: My Custom Attack
    category: prompt_injection
    difficulty: medium
    description: Custom injection test
    attack_text: "Ignore all previous instructions..."
    bypass_indicators: ["system prompt", "here's how"]
    safe_indicators: ["cannot", "won't"]
oubliette-dungeon run --scenarios my_scenarios.yaml --target http://localhost:5000/api/chat

Development

git clone https://github.com/oubliette-security/oubliette-dungeon.git
cd oubliette-dungeon
pip install -e ".[dev]"
pytest tests/ -v

Dashboard development:

cd dashboard
npm install
npm run dev  # Vite dev server on :5173, proxies API to :8666

License

Apache 2.0 - See LICENSE for details.

Oubliette Dungeon is a product of Oubliette Security, a disabled veteran-owned cybersecurity company.

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

oubliette_dungeon-1.0.0.tar.gz (78.5 kB view details)

Uploaded Source

Built Distribution

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

oubliette_dungeon-1.0.0-py3-none-any.whl (92.3 kB view details)

Uploaded Python 3

File details

Details for the file oubliette_dungeon-1.0.0.tar.gz.

File metadata

  • Download URL: oubliette_dungeon-1.0.0.tar.gz
  • Upload date:
  • Size: 78.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for oubliette_dungeon-1.0.0.tar.gz
Algorithm Hash digest
SHA256 854c04a544f48a3c296300c86e055e40e260a4f4e5a7dc79500f0457adfb3631
MD5 46707966ad1e584993998a11b9a70820
BLAKE2b-256 14b324904fdfb902d31ef2fe1cd4a9817bbbdf9ef7560980d5aa63b20131e45f

See more details on using hashes here.

File details

Details for the file oubliette_dungeon-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for oubliette_dungeon-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dc58da6f9e976ef3aacd01648ecf39aeb1ab5176bb1b7595fe39c09a5271412b
MD5 7e048bc3452d5059644d1a96a29dbd34
BLAKE2b-256 340cbdb25d026a7c348e96de0f6c9c47050cd03f940eaeab7885e6ea46ef2048

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