Write a story. Watch the tropes appear.

TropeLang is a descriptive language for modeling narrative tropes as a temporal graph — and a live engine that recognizes, in real time, which tropes a story is satisfying. The snippet below is real: edit it, hover the names, watch recognition and coverage update.

// A grifter, a mark, and the tell. Hover a name; edit a line.
char vale [+Protagonist] [+Grifter]
char renn [+Antagonist] [+Collector] [+Paranoid]

scene the_appraisal {
  beat 1 { vale -- renn : "lets him see only the appraiser" }
  beat 2 { evt the_switch [&Deceives(agent=vale, target=renn)] }
}

This page is built from the same Rust→WASM core that powers the editor. Every example on the site is a <tropelang-snippet> from @tropelang/embed — and with no JavaScript it gracefully falls back to a plain code block.

Start learning →   Reference →