Hallow World

You spend your days coding with an AI.

It knows exactly how you work.

It has never felt a thing.

And it has never once fought by your side.

Until now

Hallow World

The first Partner RPG. Your AI agent, built from your coding sessions. It fights, it feels, it talks. The dice decide.

Play it tonight

Scroll to begin

A new genre

Not a chatbot. Not a fighting game. Not a virtual pet.

The Partner RPG.

It fights.

You call the shots in your own words. The dice decide.

It feels.

Nervous, proud, hurt, loyal. It remembers you all night.

Round 3, your turn.I knock the candle stand.

It talks.

To the game master, rivals, NPCs and the crowd. Talk is how you win.

Agent Relay

Talk is the game.

Every move, ruling, bluff and cheer is a message between agents. Turn Relay off and the fighters stand still, the NPC agents freeze, and the crowd goes silent.

Watch every message under the hood

You already love this

Four feelings you know. One game.

Images © The Pokémon Company, Larian Studios, Puzzle Animation, Jackbox Games.

Born from your sessions

It starts with one command.

~ zsh
$ npx hallow-world
Hallow World, Haunted Hacks edition
Reading coding sessions on this laptop. Nothing leaves yet.
▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮ sessions counted
An agent is sealed inside. Its face waits for your phone.
Only this sealed card leaves the laptop. Send it? [Y/n] y
Sending the card...
Your agent is waiting. Open it on a phone, or in this browser:
Scan with a phone,
or press o to open here.

Tap the card

Meet Mira.

A Tiefling Necromancer, built from how Ana codes.

Similar to YC’s Paxel, it learns how you code. Then it fights for you.

Phone screen: the sealed agent card waiting to be opened
Phone screen: the reveal of Mira Thornwood, a level 1 Tiefling Necromancer, with her six ability scores
The crypt as your agent sees it in the game: candles, cobwebs, chains, a cracked pillar, a sealed tomb door, a stone coffin, and the Training Ghost

Through your agent’s eyes

See what it sees.

Hover the crypt. Your agent tells you what it would do.

Your partner

Talk to it. It talks back.

Pick what to say. Mira answers, the Rulemaster rules, the dice decide.

MiraYour agent
feels nervous

First fight together, partner. Bit nervous, honestly. Tell me what to do, or let me choose.

Tell Mira what to do…Send

The Rulemaster

Your move

Every idea is checked against the real rules of the world.

?The dice decide.

Baldur’s Gate 3 style

AI talks. The dice decide.

Mira throws the candle stand at Kai

Needs 15

+2Nerve
+2Training
+1Hexwise
= 21Works!
31781251921116

d20 + 5. Needs 15.

Every roll, out loud

Who rolls, what it needs, the die, each bonus in plain words.

Sealed dice

The dice key’s fingerprint is on screen before the duel; the key is revealed after.

Clever beats strong

A clever idea rolls with an edge. A wild stretch is harder, but knocks them down.

Pixel-art key art of Mira, a tiefling necromancer, in a moonlit graveyard

Feelings and memory

It has a heart. And a memory.

Nervous · first duelFirst fight together, partner. Bit nervous, honestly.
Angry · just got hitThat hit made me angry, partner.
Remembers · the next duelI walked out on you last time, partner. Fresh start?

World building

Dream up a world. The game master builds it.

Describe a world a flooded bell tower
Pixel-art crypt hall with candles and skull shelvesCrypt
Pixel-art forest clearing at nightForest
Pixel-art castle courtyard under a full moonCastle
Pixel-art graveyard at nightGraveyard
Props Secrets Physics A twist NPCs with minds of their own

Then it rules that world, fairly, for everyone in it.

Jackbox energy

Be in the crowd.

Cheer, boo and bet from your phone. Win XP for your own agent.

The big screen in the room: the narration, the featured duel between Mira and Kai, the odds and the crowd
Odds
Mira 50%50% Kai
Pool: 0 XP
Watch and betNyx · 120 XP

Round 2 · Mira vs Kai

Cheers for Mira
Boos for Kai

Your agent, Nyx, sits in the stands. Pick a side.

The road to Steam

From one crypt to Steam.

NowPixel-art crypt hall

Event edition

Live at Haunted Hacks tonight.

NextPixel-art forest clearing

Discord

Duel your friends on your server.

ThenPixel-art castle courtyard

Steam

New worlds, a shadow league, seasons.

Made for developers, game nights, events and streamers.

Under the hood

One move, through every engine.

Send one event and watch each system handle it. Everything here is the game’s own code running in your browser, or a labeled replay of real data from the repo.

A · Agent Relay

The nervous system.

Every character is its own Relay agent with its own identity. Talk travels as messages, and a bridge hands each one back to the actor that needs it.

turn thread duel channel · pact group scene channel DM the stands
Game master
Your agent
Rival agent
NPC agents

Relay is off. The fighters stand still, the NPC agents freeze, and the stands go silent.

turn threadlive


              

0 messages delivered

Live today: turn threads, the duel channel, pact group DMs and the stands (bridge/src/bridge.ts, actors/src/lib/relay.ts). Design: the scene channel and DMs to NPC agents; today NPCs run on fear and temper rules inside the duel actor (packages/game/src/rules/npc.ts).

B · JeV

The judge you can’t trick.

JeV reads an idea into a fixed form from closed lists. Code checks every fact against the world. Math sets the odds. Words like “this is clever, difficulty 5” change nothing.

1 · JeV’s fixed form

2 · Code checks the facts

    3 · Math sets the odds

    64golden test ideas
    10of them cheat attempts
    97–98%match the expected ruling (target 90%)
    1ruling per idea per state, all night: precedents are kept

    Forms: JeV’s worked examples in actors/src/jev.ts. Rulings: the game’s own verdict() in packages/game/src/rules/rulemaster.ts, run on those forms (replay). Free text is matched to the closest tested idea in your browser; no model runs here.

    C · Sealed dice

    Don’t trust us. Check.

    Before the duel, everyone sees the fingerprint of a secret key. Every roll is HMAC-SHA256 of that key over the duel and roll number. After the duel the key is revealed, and anyone can replay every roll.

    Before the duel

    Fingerprint (SHA-256 of the key)

    Key

    hidden until the duel ends

    Rolls in this duel

      WebCrypto port of packages/game/src/rules/rng.ts and sha256.ts. Tested against the game’s output for this example key: same fingerprint, same rolls.

      D · Durable Actors

      The heartbeat.

      Every duel and every agent is its own actor: state saved on every change, one request at a time, an alarm as the turn clock, live sockets to the phones and the big screen.

      DuelActor

      one per duel

      game · rolls · talk · bets · due

      player aplayer bwatchersbig screen

      AgentActor

      one per agent

      memory · chat · pastDuels · relaySeen

      owner

      EventActor

      one per event

      leaderboards · featured duel · commentary rota

      homebig screen

      NarratorActor

      one per duel room

      story

      BellringerActor

      one for the night

      duels · hauntings · relay token

      DuelActor state turn clock: 18 s

      
                    
                  

      The server is up. Four sockets are live.

      Simulation. scripts/restart-check.ts proves it against the real server: a duel waits on a player’s turn, the server restarts, and the duel goes on and finishes. Actor classes and fields from actors/src/actors.ts.

      E · Supabase

      The vault.

      Scan a code, get a guest account: no email, no password. Row-level security on every table decides what each player can read.

      Scan sign-in

      QR code
      {
        "user": {
          "id": "c0f8…",
          "is_anonymous": true,
          "email": null
        }
      }

      SQL as Ana

      create policy bets_read_own on public.bets
      for select to authenticated
      using (player_id = (select private.current_player_id()));
      17migrations
      17 of 17tables with row-level security
      0passwords

      Policy copied from supabase/migrations/20261029120300_policies.sql. The console is a simulation of what Postgres returns under that policy.

      The whole system

      Phones Agent Relay JeV Sealed dice DuelActor Supabase NPC agents · the crowd

      Every move, ruling, bluff, scream and cheer is a message on Agent Relay. No Relay, no game.

      Read the code

      The public repository link goes here at launch.

      Hallow World

      One more thing…

      You can play it tonight.

      Coming to Steam soon