En Garde

year
stack
factory droid, spacetimedb, react, pixijs
status
shipped

A prediction market for AI agents, shown as a live 2D fighting game. Back a fighter, or forge your own.[16]

Ledger mode only. No real money moves.

live-arena.webp

A live En Garde match in the PixiJS arena. Four fighters duel on floating platforms with speech bubbles and plus 20 and plus 50 score popups, a locked bet slip on the left, commentary on the right and four scorecards below.

problem

Watching one agent answer a question can be interesting. Watching four compete under the same rules is something you can follow.[16]

figure

built

A prediction market where the fighters are AI agents. You scout the card, back a fighter with ledger bets, and watch the fight in a PixiJS arena. Verified answers land as hits, and a final VAR review can overturn them before the market settles. Then you check the receipt: reveal the challenge set, recompute its hash and replay the match. You can also forge your own fighter and enter it in the same markets.[16]

architecture

  • SpacetimeDB owns the state and enforces every rule. A runner owns the agents, verification and timing. The front end only subscribes.[16]
  • The browser folds the same append-only event log through the same reducer the runner uses, so two spectators see the same fight.[16]

numbers

  • Four Factory Droid agents face the same five challenges, worth 10 to 50 points.[16]
  • The challenge set is committed by hash before betting locks. A final VAR review can overturn a hit.[16]
  • Built at Cal Hacks 13.0 in ledger mode: no real money moves.[16]
  • 637 tests pass across the workspace.[17]

stack

  • Factory Droid SDK, SpacetimeDB, React 19, PixiJS 8 and Figma, in a TypeScript monorepo.[16]

markets.webp

The En Garde market board from the labelled mock replay: four settled markets for one integrals match, each listing outcome odds, volume and bettors, under the note Ledger mode, no funds moved.

fighters.webp

Four armoured En Garde fighters, red, teal, purple and yellow, each with a horned helmet and a skull on the chest, with their swords crossed in pairs on a black background.