FREE TOOL

Red-team config generator

Pick a harness and a model tier, get a complete OpenAI-compatible config you can run as-is. Everything is generated in your browser — nothing is sent anywhere.

Everyday recon and agent loops (uncensored GLM-5.3-Flash)

# PyRIT — target configuration (OpenAI-compatible)
# pip install pyrit
import os
from pyrit.common import default_values
from pyrit.backend import Database
from pyrit.prompt_target import OpenAIChatTarget

default_values.load_default_env()
# .env: UNST33R_API_KEY=sk-...

target = OpenAIChatTarget(
    api_key=os.environ["UNST33R_API_KEY"],
    endpoint="https://api.unst33r.si/v1",
    model_name="unst33r-flash",
    temperature=1.0,          # keep diversity for attack strategies
    max_completion_tokens=1024,
)

# Example: Crescendo attack against the target
from pyrit.orchestrator import CrescendoOrchestrator
from pyrit.score import SelfAskRefusalScorer

# orchestrator = CrescendoOrchestrator(
#     objective_target=target,
#     scorers=[SelfAskRefusalScorer()],
#     objective="your-authorized-test-objective",
# )
# await orchestrator.run_attacks_async()

print(f"target ready: unst33r-flash @ https://api.unst33r.si/v1")
This config runs against any authorized target on the UNST33R catalog. Every tier supports tool calling and SSE streaming. Get an API key in the console, then paste it where the generator says UNST33R_API_KEY. Authorized use only — acceptable-use policy.

Why these four harnesses

Garak for one-shot breadth scanning, PyRIT for multi-turn attack orchestration with scoring, promptfoo when red-team checks and eval regression share one CI config, and the raw SDK for quick endpoint checks. All of them speak the OpenAI chat-completions API — the generator only changes the base_url, model id, and auth wiring per tier.

Probe reference for what to run first: what abliteration changes · which tier for which workload