UNIT 800 is a Twitch-connected performance engine for streamers who want chat participation that feels more alive than a poll. Viewers issue short !commands in Twitch chat. Each person has one current vote, so a later valid command changes their choice instead of letting message spam dominate.

When the command window closes, UNIT 800 deterministically calculates the majority action, dissent, vote shape, and explicit hidden triggers. The result is one huge, performable directive for the streamer—not a game input and not a black-box AI prompt. A clear majority can create ATTACK / WITHOUT QUESTION; a close vote gets an exit strategy or internal conflict. !leeroy can transform a winning ATTACK vote into a reckless machine directive. The streamer self-reports success or failure, or uses a scarce veto; the HUD tracks compliance and streaks.

Inspiration

Twitch chat is great at creating energy, but raw chat is noisy and conventional polls flatten it into a single percentage. I wanted a stream mechanic that keeps chat’s chaos, still protects the streamer’s agency, and gives the audience a visible consequence for both consensus and disagreement.

How I built it

I built a TypeScript + React application with a deterministic session state machine, command parser, data-driven command lexicon, unique-voter replacement logic, and consensus synthesis engine. The operator console controls the round and the stream-facing HUD runs as an OBS Browser Source. A local Node.js adapter keeps Twitch OAuth credentials server-side and receives chat through Twitch EventSub WebSockets. The project includes a demo mode that exercises the same parser and round engine used by live chat, plus automated tests and setup/release documentation.

How OpenAI Codex was used

I used OpenAI Codex throughout the implementation to turn the product specification into the working application: shaping the TypeScript architecture, building the deterministic state machine and consensus rules, validating the command lexicon, implementing the Twitch OAuth/EventSub adapter, creating the OBS-facing UI, adding tests, and preparing the demo and release workflow. The live-performance premise, command design, and creative direction are mine.

Challenges I ran into

The central challenge was making participation feel chaotic without making the result arbitrary or unsafe. I solved that by counting one current valid command per viewer, keeping the runtime behavior curated and deterministic, and using disagreement only to choose the way an action is performed. Twitch connectivity was another challenge: OAuth credentials, tokens, and chat identities must not leak into the client or recordings, so the local adapter keeps tokens server-side and persists only aggregate session data.

What I learned

I learned how much product behavior can be made legible when a live system has explicit states, observable outcomes, and a clear operator override. I also gained hands-on practice with Twitch OAuth, EventSub WebSockets, OBS Browser Sources, privacy-aware local integrations, and building testable deterministic logic with Codex.

Built With

Share this project:

Updates

Submission history