cadabra

Your living room just invented a game.

Cadabra is a party game for Fire TV. Everyone throws ideas in from their phone, an AI designer turns them into a real physics game, and a few seconds later the room is playing it. Phones are the controllers. Nothing to install.

v1.0 for Fire TV Stick. MIT licensed. Runs in a desktop browser too.

From a shout to a game in under a minute.

"Cadabra" was Amazon's first name. Abracadabra means I create as I speak, and that is the whole game: the room says what it wants, and the TV builds it.

Phone controller screens: join, pick an orb avatar, play, results
Real screenshots from a Fire TV Stick HD

Seven games. Four looks. Real physics.

Cadabra ships with seven built-in games, and every game the AI invents is built from the same parts. Each one runs on planck physics: bumpers kick, balls bounce, crates topple and barrels explode.

Ring Out

Bumper sumo on a floating ring. Dash rivals off the edge.

toybox look1 to 4 playersbots fill empty seats

This row works like the TV home: use the arrow keys, or tap a tile.

Any game, in any of four looks.

All the art is drawn in code, so a look is a setting, not an asset pack. The AI picks one for each pitch, with music and sound to match.

Rocket Ball in the neon look
NeonDark grid, glowing bodies, synthwave
Crate Crash in the toybox look
ToyboxGlossy vinyl, toy-brick crates, swing
Overload in the cosmos look
CosmosNebula, astronaut orbs, ambient pads
Paint Wars in the retro look
RetroPixel art, scanlines, chiptune
Phone tweak screen with chips like Low gravity and More chaos

Don't like a rule? Change it from your phone.

After every round, the phones get ten seconds to ask for something different: tap Low gravity, Faster, Bigger arena, Bouncier, More chaos or Harder for leader, or type your own. The AI patches the game, shows what it changed, and you play the new version.

  1. 10 s
    AskUp to three requests from the room, chips or 80 typed characters, screened by Guardrails.
  2. ~5 s
    Patch and playtestThe AI edits the game spec with a JSON Patch, then bots play a full round before you see it.
  3. 0 s
    ReplayA "What changed" card lists the changes, and the round restarts. If the AI is slow, tested presets step in.
What changedLow gravity

Try it here.

A toy version of the tweak loop, running in your browser. Tap a chip and the rules of this little arena change, the same way the AI patches a real game on the TV.

The AI designs. It never writes code.

A game is a GameSpec: data that composes nine tested blocks with a physics world and a look. The designer builds specs with tool calls, and a spec only reaches the TV after four bots finish a full round with it.

Cadabra architecture Phones load the controller site from S3 and CloudFront and join rooms over an API Gateway WebSocket. The Fire TV Stick runs the game and talks to phones directly over a WebRTC DataChannel. In AWS ap-south-1, the WsFn Lambda handles rooms, signaling and relay and stores state in DynamoDB. It invokes ForgeFn, the AI designer, and HostFn, the captions writer. Both call Amazon Bedrock and Bedrock Guardrails. ForgeFn reads the Anthropic API fallback key from Secrets Manager and falls back to the Anthropic API while Bedrock quota is zero. AWS ap-south-1, one CDK stack HTTPS WSS WSS async async fallback while Bedrock quota is 0 WebRTC DataChannel 13 to 16 ms Phones controller web app browser, no install Fire TV Stick HD Kotlin shell + WebView engine, 9 blocks, bots planck physics, PixiJS authoritative host S3 + CloudFrontcontroller site, assets API GatewayWebSocket rooms Secrets Managerfallback API key Lambda WsFnrooms, signaling, relay Lambda ForgeFnAI designer, tweak, playtest Lambda HostFncaptions, roast DynamoDBone table + TTL Amazon BedrockConverse, tool use Guardrailscadabra-family-safe Anthropic APIClaude 5.5 models
PhonesController web page, no install
Fire TV Stick HDEngine, 9 blocks, bots, planck physics, PixiJS. The authoritative host.

AWS ap-south-1, one CDK stack

API Gateway WebSocketRooms, signaling, relay fallback
Lambda WsFnRooms, relay, rate limits
DynamoDBOne table + TTL
Lambda ForgeFnAI designer, tweak, playtest
Lambda HostFnCaptions, roast
Amazon BedrockConverse, tool use
Guardrailscadabra-family-safe
S3 + CloudFront serves the phone site. Secrets Manager holds the fallback key.
Anthropic APIClaude 5.5 models

The TV is in charge

A deterministic, seeded engine and the physics run on the stick. Phones only send inputs.

Bots test every game

The playtest gate says exactly what failed, like "only 1 of 4 bots scored", so the model fixes it in its next call.

Nobody waits for a model

Pitches get 8 s, the winner 25 s, tweaks 15 s. Each step has a fallback that is already good.

Family-safe by default

Bedrock Guardrails screens every idea, typed tweak, pitch and caption, whichever model answers.

Read more in Architecture and AI designer and Tweak loop.

Measured on the cheapest Fire TV Stick.

Frame rates are from a Fire TV Stick HD (Fire OS 7.7, 922 MB RAM) in the real app with four bots. Timings are from the live backend.

59fpsin every built-in game, rendered at 1280x720
~6sfor three AI pitches after the Idea Storm
4–7sfrom the vote to a bot-tested game
~5sto tweak a game and replay it
633tests across engine, backend, TV, phone and couchpad

Frame rate per game

Crate Crash started at 45 fps. Pixi was rebuilding its render instructions every frame and 1080p fill rate ate the rest. Fixing the depth sort and rendering at 720p took it to 59.3.

  • Ring Out
    58.6
  • Overload
    59.0
  • Paint Wars
    59.3
  • Core Rush
    59.6
  • Neon Dash
    59.8
  • Rocket Ball
    60.0
  • Crate Crash
    59.3

Scale 0 to 60 fps. The tick marks 58 fps.

Make any phone a controller.

We pulled the controller layer out into couchpad, an MIT library for TV and web party games. Scan a QR code and the phone is a gamepad.

  • Direct by default. A WebRTC DataChannel on the local network, 13 to 16 ms measured.
  • Relay when it has to. Falls back to a WebSocket relay with chunking, a reliable queue, keepalive and rejoin.
  • Widgets included. Joystick, button, hold, tilt, swipe, draw, text and vote.
  • Bring your own server. Ships with a reference signaling server and an example.
Four phone screens: join with a code, pick an avatar, a joystick and dash button, and results

Say it. Play it.

Sideload the APK on a Fire TV Stick, or run the TV app in a desktop browser with npm install and two dev servers.