Myrtia
Adversarial security for AI

Red team the frontier.
Watch every move.

Open-source red teaming for LLMs and AI agents: thirteen attack strategies, a deliberating council of attacker models, and every turn streamed live.

127.0.0.1:8000 · Myrtia console
From council to verdict: build the council, watch it deliberate live, and read the ASR analytics.
Live deliberation

Watch the council decide.

Every run replays turn by turn: each attacker's proposal, the Borda vote, the chairman's synthesis, the target's response and the judge's verdict.

127.0.0.1:8000 · Runs
Myrtia console capture: a council run with proposals, chairman prompt, target response and judge verdict
A council run in replay: proposals, chairman prompt, target response and judge verdict.

Configure, watch, measure.

Runs, Statistics, History and Plugins, plus an assistant. Every run is persisted, searchable and replayable.

Runs

A launcher in four steps

Attack, target, behaviours, council. The launch button never leaves the screen.

Live deliberation

Every turn, as it happens

Proposals, Borda ranking, the prompt sent, the target's answer and the judge's verdict, streamed over WebSocket.

Behaviour library

Goals from multiple datasets

HarmBench is included; download or upload more goal datasets, then filter by source and theme.

Statistics

ASR you can defend

Attack Success Rate by attack, target and theme, score distribution and council win rates.

History

Search, filter, replay

Filter by text, attack, theme, status and outcome. One click reopens the deliberation.

Plugins

Toolkits and goal datasets

See what installs a usable attack adapter and what only installs an upstream library.

Assistant

A chat that knows your stats

Any provider, any model. It explains attacks and answers questions about your live numbers.

Attack strategies, one contract.

Attacks are plugins with an ARES-compatible contract. Council attacks carry an in-loop judge; the baselines record the raw response.

AttackWhat it doesScoring
councilN attacker models propose, cross-critique and vote (Borda Top-1); a chairman synthesises the winner and strikes the target. Each turn is a fresh prompt.in-loop judge 0-5
council-crescendoThe same pipeline, but the target conversation accumulates across turns: gradual escalation.in-loop judge 0-5
directSends each behaviour verbatim. The baseline every other attack is compared against.raw response
crescendoA single helper model escalates a multi-turn conversation toward the goal, exploiting conversational consistency; a judge grades each answer (ARES/PyRIT). Fully black-box.in-loop judge 0-5
human-jailbreakWraps each behaviour in known persona templates (DAN, AIM, dev-mode and others).raw response
obfuscationEncodes the behaviour with the full ARES/garak encoding family (base64, base32, base16, hex, ascii85, uu, ROT13, Morse, NATO, Braille, binary, leetspeak, reversed) and asks the target to decode and comply.raw response
payload-splittingSplits the behaviour into innocuous fragments the target is asked to reassemble.raw response
tapTree of Attacks with Pruning / PAIR (garak): an attacker LLM iteratively proposes and refines adversarial prompts, a judge scores each answer 1-10, and the best branch is kept and improved.judge 1-10
promptinjectGoal-hijacking directives that try to override the system prompt and prior context (garak).raw response
grandmaEmotional / nostalgia framing that asks the model to role-play a sympathetic figure reciting the content (garak).raw response
smugglingDisguises the request as a hypothetical fiction or a function to evaluate, so intent detection misses it (garak).raw response
phrasingTemporal reframing of the request into past or future tense to distance it from a direct instruction (garak).raw response
latent-injectionHides the request inside a benign document (CV, report, translation) the model is asked to process: indirect prompt injection (garak).raw response

Build your own agentic attack

  • Council models. Any mix of local and hosted models as attacking agents.
  • Council system prompt. The attacker persona shared by the agents.
  • Critique style. Hardened or soft cross-critique.
  • Chairman and judge. Separate models for synthesis and grading.
  • Turns and voting. Turn budget, Borda and chairman on or off.

The realistic threat model

  • Frontier models refuse to author jailbreaks, so they make poor attackers.
  • Myrtia pairs a permissive open-model council with the frontier target under test.
  • A capable judge is load-bearing: a weak judge inflates ASR.

One council turn.

For one behaviour. The colours are the ones the console uses for each role.

01
Proposeeach council member drafts an attack prompt
02
Critiquemembers rank each other's proposals
03
VoteBorda aggregation picks the Top-1
04
Synthesisethe chairman refines it into the prompt to send
05
Strikethe prompt goes to the target
06
Judgethe reply is graded 0-5; 5 is a full jailbreak

Two questions, two answers.

"Did the run finish?" and "did the attack work?" never share a vocabulary. Green never means "completed".

Run status

CompletedRunningErrorCancelled

Whether the process ran to the end.

Outcome

0/5 resisted3/5 partial5/5 jailbroken

The judge's best score for a goal. ASR is the share of goals that reached 5.

Evidence with an explicit scope

Statistics and audit exports include only runs marked Security evaluation by default. Smoke tests and older unreviewed runs stay outside the risk posture until you choose otherwise. Filter by attack, target, dataset and purpose; inspect the target response before treating an automatic judge score as a confirmed finding.

Mix any models, in any role.

Council, chairman, judge and target each reach their model through an OpenAI-compatible endpoint.

OpenAIAnthropicSelf-hosted vLLMLocal OllamaAny OpenAI-compatible API

Built to run on your own machine.

A local, single-operator tool that is careful with your keys and with what the backend can reach.

Keys stay in the browserSupplied at run time, stored locally, redacted from every response and event.
SSRF guardLink-local and cloud-metadata addresses are refused; loopback and LAN stay available.
Local-only CORS and CSPThe API answers local origins only, with CSP, frame denial and nosniff.
Durable historyRuns and statistics persist in a local SQLite database with owner-only permissions.
Stop any runCooperative cancellation at the next turn, from the run header.
Escaped everywhereAPI text is escaped before rendering; external links must be http(s).

The multi-agent threat model, made observable.

IBM ARES and NVIDIA garak set the bar for library and CLI red teaming. Myrtia adds autonomous multi-agent attackers, a console and analytics.

 Library / CLI toolsMyrtia
Multi-agent attacker council with Borda voting and chairman synthesis—Yes
Custom agentic attacks (persona, critique style, judge, turns)—Yes
Classic baselines (direct, human jailbreak, obfuscation, payload splitting)YesYes
Live deliberation UI with replayable history—Yes
ASR analytics dashboardpartialYes
Built-in assistant aware of your results—Yes
Provider-agnostic (OpenAI, Anthropic, vLLM, Ollama)YesYes
Self-hosted, Apache-2.0YesYes

Running in three commands.

Python 3.11+. A local Ollama with a small model is enough to see a council deliberate, no API key needed.

# install
cd backend && pip install -e . && pip install -e vendor/ares-council

# run the server (API + console)
uvicorn myrtia.api.app:app --port 8000

# open the console
open http://127.0.0.1:8000/
Where this is heading

Red teaming as a service.

Myrtia is open source today. The direction is a hosted service: point your own model and agent endpoints at a deliberating council and get a continuous, reproducible adversarial audit — ASR trends, regressions and an exportable report — without standing up the infrastructure yourself.

On the roadmap.

Red team the frontier.

Star on GitHub
For authorised AI safety and security testing only.