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 9 categories (prompt injection, jailbreak, information extraction, social engineering, model exploitation, context manipulation, tool exploitation, resource abuse, compliance testing)
  • 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.2.tar.gz (142.6 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.2-py3-none-any.whl (165.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: oubliette_dungeon-1.0.2.tar.gz
  • Upload date:
  • Size: 142.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for oubliette_dungeon-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f0b94d8f1cb075da892bc5ca11b0daab141fa2c2a3adf10a2b8331ed6f3477c3
MD5 79e96fdefa3550c98eadc9791e0bf69c
BLAKE2b-256 cbea3877072c77f0a3ee88bcf2b905b70239bf0e83a8304c5c869b7e2cbaeda5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: oubliette_dungeon-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 165.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for oubliette_dungeon-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6996f28119425e389ac15f0b94ef0d554ff29eb8fff75aee4f39c94bfbd4dc34
MD5 24dfacdd266fe22fd9752fd4ad7a5618
BLAKE2b-256 8f18ae20bcea179ebf482719d22f27205ebf56de6274b2c3eaff2003bca695a3

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