wanessalabs games production

The Monkey Paw

Negotiate a wish so it cannot be twisted, while you play the safety rail that is losing. One AI-stitched ending per run, plus an archive of every decree.

ReactTypeScriptTailwindViteHonoGemini FlashCloudflare Pages
Make a wish. The paw grants it, technically, and never in the way you meant.
Make a wish. The paw grants it, technically, and never in the way you meant.
The whole bit fits a phone: type the wish, approach the paw, read the damage.
The whole bit fits a phone: type the wish, approach the paw, read the damage.

“Be careful what you wish for” is one of the oldest jokes in storytelling, and nobody had made it a game you play instead of read. The Monkey Paw fixes that. Each day serves up a curated wish, and an ancient, malevolent artifact that has been issued a filing cabinet begins to negotiate.

What It Is

One page. A daily wish, like “Today I want to end world hunger” or “Today I want to live forever,” and the Paw asks three to five gleefully monstrous clarifying questions. You answer by picking from a handful of hand-written options, each one closing a loophole, leaving one open, or cheerfully opening a new one you did not notice. It plays like twenty questions where you are the safety rail and you are losing. When the questions run out, the wish is granted as a short story, built almost entirely out of the loopholes you failed to close. You win by getting an ending that is merely disappointing instead of civilization-ending.

The Architecture Is the Point

Every question, every option, and every consequence is pre-authored content shipped as data. The AI model is called exactly once per playthrough, at the very end, to stitch the ending from the specific path you took. That single decision drives everything good about the game:

The Ending

On a completed run, a Cloudflare Worker sends only the ids of your choices, never any free text, to Gemini Flash, which grants the wish as a 150 to 250 word decree. The rules are strict, and they are the product. The wish is always granted exactly as negotiated. The betrayal is anchored to a loophole you actually left open, so you can trace the cost back to a specific answer you gave. Loopholes you sealed stay sealed. A near-perfect run earns a near-clean ending. The cost is always ironic, bureaucratic, or emotional, never graphic. When a wish implies something dark, the Paw renders it as absurd paperwork: people are not removed, they are “reassigned to a rounding error and filed under Consolidation, Voluntary.”

The Filing Cabinet

Every wish you have had granted is filed. A local, private archive lists each case by name with its outcome, from “merely disappointing” to “civilization-ending,” expands to the full decree and a recap of what you sealed and what you opened, and lets you replay any wish you have discovered. It lives in your browser and is never sent anywhere.

Features

Stack

ToolRole
React + TypeScriptGame module inside wanessalabs-games
Content-as-dataZod-validated scenario packs, one AI call at the end
Hono on Cloudflare Pages FunctionsThe single POST /api/decree endpoint
Cloudflare KVEnding cache, keyed by wish and path
Gemini FlashStitches the ending story from the negotiated path
TailwindScoped “cursed antique bureaucracy” theme
Cloudflare PagesHosted inside the wanessalabs-games hub

Development timeline

1 logged update on 27 Jul 2026.

  1. Make a wish and watch it go wronglaunch

    Every wish gets granted. Choose your words one clause at a time, then read the decree that finds the loophole you left open.

Written from the release notes published with each update, not afterwards. See every project →