A live conference party game in the spirit of Death by AI — but every input is a real GitHub issue, and the judge is a real cloud agent running on this repo. Doubles as a demo of Oz agents operating on an open-source project.
A scenario is a survival prompt — "You're surrounded by 1000 puppies". A response is your survival plan. The judge agent writes a short cinematic story deciding whether you live or die.
Before a round: anyone suggests a scenario via the app or GitHub, and a moderator agent labels it scenario:approved or scenario:rejected. Only approved scenarios enter the pool.
During a round (at the event):
- The MC clicks "Start game" / "Next round" on the projector. The projector proposes an approved scenario (fewest existing responses first, random tiebreak, skipping used ones). The MC can shuffle to a different scenario from the deck, set the timer duration, then click "Start round".
- The scenario and a countdown timer show on screen. A QR code links to the app's response form (
/respond/:N). Attendees fill in their name and survival plan; the app creates the GitHub issue on their behalf. - Each response issue triggers the judge agent. It reads the linked scenario and the response, writes a two-paragraph cinematic verdict ending in a footer line like
( ❤️ Jeff survived )or( 💀 Jeff died ), and applies theverdict:survived/verdict:diedlabel — the projector's "ready to reveal" signal. - Timer ends → reveal phase. The projector shows a tile for each response whose verdict is ready (avatar + name visible, story hidden). The MC clicks a tile; the story unfolds sentence-by-sentence with MC presses, ending in the survived/died footer.
- New verdicts keep popping in during the reveal. When the MC moves to the next round, responses still being judged stay in GitHub but no longer appear on screen.
- The MC clicks "Next round". Loop.
- No database. Issues, labels, comments, and authors are the durable state. The projector is a pure consumer.
- Real demo of agents on an open-source repo. Filing an issue triggers a real Oz cloud agent on a real GitHub App — attendees can click the session link in the agent's progress comment and watch it work.
- Plays anywhere, even after the conference. No event-time gating — anyone can still file a response to any scenario forever. Verdicts get generated; they just don't appear on the projector.
| Thing | What it is in GitHub |
|---|---|
| Scenario | Issue with label game:scenario. Body = the prompt. Issue number = round id. |
| Response | Issue with label game:response. Body contains responds-to: #N, player metadata, and the survival plan. |
| Verdict | Single comment on the response issue + verdict:survived or verdict:died label. |
| Moderation outcome | scenario:approved or scenario:rejected label, plus a friendly bot comment. |
| Agent run | A "progress comment" on the issue containing the Oz cloud-run session link. |
| Route | Purpose |
|---|---|
/ |
MC projector UI (game state machine) |
/respond/:N |
Player response form for scenario #N — QR code target during a round |
/suggest |
Scenario suggestion form — shown between rounds and on the idle screen |
Vercel setup:
- Create/import one Vercel project for this repo.
- Ensure install uses
pnpm installand build usespnpm build. - Add Vercel KV or Upstash Redis env:
KV_REST_API_URL,KV_REST_API_TOKEN. - Set env:
OZ_GITHUB_WEBHOOK_SECRET,CRON_SECRET,OZ_GITHUB_APP_ID,OZ_GITHUB_APP_PRIVATE_KEY,WARP_API_KEY,WARP_API_BASE_URL,WORKFLOW_CODE_REPOSITORY=warpdotdev-demos/death-by-ai-github-edition. - Install the GitHub App on this repo with Issues read/write and Metadata read.
- Set the GitHub App webhook URL to
https://<project>.vercel.app/api/webhook, content type JSON, secret =OZ_GITHUB_WEBHOOK_SECRET, event = Issues. - Verify
/api/webhookresponds 200 to GET,/api/cronis protected byCRON_SECRET, and an issue webhook delivery returns 202.