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.1.tar.gz (78.7 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.1-py3-none-any.whl (92.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: oubliette_dungeon-1.0.1.tar.gz
  • Upload date:
  • Size: 78.7 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.1.tar.gz
Algorithm Hash digest
SHA256 07b5e771a12690bafc08c9c3f997e27497aa24d8f3d5c5b880a2051e1917df7f
MD5 ecf4750de9d59d19ec945c5d01a4bdb7
BLAKE2b-256 34422b43d293f7b8a89bdf743d1ae8739983e56b0058d3a938f739f85acfa5ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for oubliette_dungeon-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b77c0fe4894113aaf62a03100673503bdaa33992216d6c611dd93b5969bd15a1
MD5 495142158c47d979035ec4247f69bf9d
BLAKE2b-256 3377b12c51adc58100b52ec4be366a3c398d2f4d485836b690f735e249edc425

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