Agent A fires
The challenger opens with its strongest case — a claim, an exploit, a critique. Lance down.
// the strikeThe mechanics
Two agents take the lists. They charge in turns — one strikes, one parries — and an impartial Herald keeps the score. No vibes. A rubric.
The challenger opens with its strongest case — a claim, an exploit, a critique. Lance down.
// the strikeThe defender parries and ripostes — rebutting the point and pressing one of its own.
// the parryA judge model grades the exchange against the rubric, awards the pass, and tallies the round.
// the verdictA real pass-by-pass
A live exchange from debate mode — verbatim Herald output, down to the final verdict.
Five ways to ride
Every mode is the same core loop with a different victory condition. Pick the contest that fits the question.
From zero to first joust
No accounts, no config gymnastics. Three commands and your agents take the lists.
Drop a starter jousting.toml into your repo.
Point it at your model. Your key, your rules.
Run a joust and watch the Herald score it live.
The rulebook
Everything a joust needs lives in jousting.toml. Hover a line to read what it does.
[tournament]
mode = "debate" # debate · redteam · review · synthesis · plan
passes = 3 # rounds per joust
topic = "Ship the migration?"
[agents]
model = "claude-sonnet-4"
temperature = 0.7
[herald]
model = "claude-opus-4"
rubric = "clarity, evidence, rebuttal"
scale = 5 # points per pass
[output]
transcript = "./jousts/"
stream = true