Skip to main content

Oubliette

The Oubliette Security suite — one install, one CLI.

oubliette is the umbrella distribution for the Oubliette Security product suite. It gives you a single oubliette command, an install-time choice of which modules you want, and a threat-model engine that tells you which of them your system actually needs.

pip install oubliette-suite     # the CLI + the threat-model engine
oubliette init                  # choose your modules -> writes oubliette.toml

The distribution is oubliette-suite (the bare oubliette name is taken on PyPI by an unrelated project); the installed import package and CLI are still oubliette.

Start here: scope the work

The threat-model engine depends on no product and runs before you have installed — or bought — anything. Point it at a description of your system and it tells you which attacks apply and what to run.

oubliette threatmodel init                      # writes a commented intake file
oubliette threatmodel run --profile system.toml # threat model + run plan

Every recommendation cites the answers that caused it, so you can audit why a control was proposed rather than taking it on faith.

Then run what it found

The plan isn't a document you retype — it configures the products:

oubliette threatmodel apply                     # plan -> oubliette.toml
oubliette exec --target https://my-system --dry-run

apply writes the dungeon scenario categories your system warrants and the shield settings that go with them. exec runs them, printing the reason each command exists before it runs:

  # threat model selected the tool_exploitation category
  $ oubliette dungeon run --category tool_exploitation --target https://my-system
    env: SHIELD_FAIL_OPEN=false SHIELD_MCP_BLOCK_HIGH=true ...

exec reads oubliette.toml, not the plan — so if you edit the file, you get what you edited. Drop a category and it stops running. --dry-run executes nothing.

Choose your modules

oubliette init                      # interactive menu
oubliette init --sku deceive        # or pick a bundle outright
oubliette init --modules dungeon,shield

This writes oubliette.toml and prints the exact pip install line for what you chose. Bundles map to pip extras, so these are equivalent:

pip install "oubliette-suite[deceive]"
SKU Contains For
assess dungeon Find out what an attacker can do to your AI system
defend shield, warden Firewall the model and gate what your agents may do
deceive trap, shield Make reconnaissance expensive and loud
detect barbican See coordinated synthetic content aimed at you
full all of the above The whole suite

Configuration

oubliette.toml is the shared config file. Precedence, weakest first:

defaults  <  oubliette.toml  <  OUBLIETTE_* env vars  <  CLI flags

Env vars win over the file on purpose: deployments that configure the suite through OUBLIETTE_* today behave identically after adopting the file, and per-environment overrides need no file edit.

Two limits worth knowing, both deliberate:

  • OUBLIETTE_* overrides an existing setting; it cannot introduce a new one. A dotted key is not recoverable from a variable name — OUBLIETTE_A_B_C could be a.b_c or a_b.c — so a variable that matches no known key is ignored rather than guessed at.
  • A product's own env vars beat the plan. oubliette exec passes the shield settings from your config as environment, but if SHIELD_FAIL_OPEN is already set in the shell it wins, and exec says so. Same precedence rule, applied to the products rather than to the suite.

Usage

oubliette version              # installed components + versions
oubliette init                 # choose modules
oubliette threatmodel run -p system.toml
oubliette threatmodel apply    # write the plan into oubliette.toml
oubliette exec --target URL    # run it (--dry-run to preview)
oubliette dungeon --help       # == oubliette-dungeon --help

The CLI shells out to each tool's own console script, so any sub-tool invocation is identical to calling that tool directly — the umbrella just gives one entry point.

Components

Command Distribution Role Status
oubliette shield oubliette-shield AI firewall — 5-stage detection + deception (library) available
oubliette dungeon oubliette-dungeon Adversarial testing — 72 scenarios, 10 categories available
oubliette trap oubliette-trap Deception — MCP honeypot and canary tokens available
oubliette warden oubliette-warden Safety-gated agent framework — gates plans, not just single actions available
oubliette barbican oubliette-barbican Coordinated synthetic-influence detection available

oubliette shield is a library with no CLI; the command explains how to import it. Roadmap products are surfaced by the threat model as things to plan for and are not offered by oubliette init, so you are never handed an action you cannot take.

The product manifest

src/oubliette/data/products.toml is the single source of truth for the product line. The pip extras, the installer menu, the CLI's dispatch table, and the threat model's available/roadmap split are all derived from it — a product is added there and nowhere else.

CI fails if the committed extras drift from the manifest:

python -m oubliette.metapackage          # check
python -m oubliette.metapackage --emit   # print the correct block

Development

uv venv --python 3.13
uv pip install -e ".[test]"
pytest

Release files for oubliette-suite 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oubliette-suite 0.2.1
File Size Uploaded
oubliette_suite-0.2.1.tar.gz 61.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oubliette-suite 0.2.1
File Interpreter ABI Platform
oubliette_suite-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 105.6 kB

Release files / oubliette_suite-0.2.1.tar.gz

Download URL oubliette_suite-0.2.1.tar.gz
Size 61.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a736dd03ec4dbdb96bb7462333f5a2ff3e742dad6d90b147635d0a2e8cc53287
BLAKE2b-256 checksum
How to use checksums
0de6ca3b65729cc4164e63a81dcf6243371fca780110cec375709e40cce776c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / oubliette_suite-0.2.1-py3-none-any.whl

Download URL oubliette_suite-0.2.1-py3-none-any.whl
Size 44.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30bb07d2b96b20dadc0bbb52802e5992cdd2006777c0ad63ef2dc8778749a42e
BLAKE2b-256 checksum
How to use checksums
9d4909f23021868109e0a24ef2123c27d5297d06b6b6157e5927a538676a8bfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

0.2.2

2 release files

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page