▶ Try PopForge live in your browser: https://popforge-studio.tusharaggarwal274.chatgpt.site/ No install or account needed. Start a moment and use the sample contribution button to see the stream react. This is a browser-only preview; the full Twitch + OBS experience runs through the local companion in the GitHub repo.
Inspiration
Every streamer hits the same moments: a five-minute queue, a coffee break, a loading screen. Viewers drift away. Streamers can't code a new overlay in the middle of a stream. And anyone joining two hours in feels like they walked into an inside joke. I wanted those moments to become something the whole chat builds together, and something the community still has next stream.
What it does
PopForge is a companion for Twitch streamers: viewers play in Twitch chat, the creator stays in OBS.
- One-click moments. The streamer starts a garden, a moon-defense round, or a focus sprint from the studio or a compact OBS dock, then can step away.
- Chat plays, live. Viewers type free commands in Twitch chat.
!watertips a mug over the soil,!cheersends sparkles, and!plant sunsetdrops a seed in the color they pick. Each one animates on stream within seconds. Viewers need no extra account or app. - A garden that lasts. Every five contributions grow a flower that persists across streams and restarts.
- Chat builds the world. Each flower earns a seed. Chat votes on what to build next (
!grow pond,!grow nook,!grow lanterns), the streamer approves, and a new place (Moonpond, Reading nook, Lantern walk) becomes a permanent part of the community's garden, revealed on stream. !recapfor late viewers. PopForge replies in Twitch chat with what actually happened, based on recorded events.- Codex inside the stream. In the Scene workshop the streamer describes an idea, and the Codex SDK generates a new playable scene in about 10 seconds. It runs in a read-only, no-network sandbox, the output is validated against a schema, and it is previewed privately. Nothing reaches the stream until the streamer publishes it, and generated code is never executed.
- A cozy lounge for breaks. Original Canvas environments, three original music loops cleared for stream and VOD, a breather mode, quiet mode, a kindness jar, and moderated mood suggestions.
- Creator Relay (prototype). Two creators run a shared episode where each community gets at most half of the vote, so a bigger chat can't drown out a smaller one.
How I built it
PopForge was built with OpenAI Codex, mostly in one Codex Desktop thread over four days (session 01a18204-be62-77d1-b0ad-70175ae80ee7): 42 of my prompts, 34 Codex turns, and over 800 tool actions. I set the direction, tested as both streamer and viewer, and sent screenshots of anything that felt off. Codex designed and wrote the frontend and backend, the Twitch integration, the Canvas art and music synthesis, and the tests. It checked its own work in a browser, against real Twitch chat from a second account, and in OBS.
- Frontend: React 19, TypeScript, Vite; Canvas renderer for OBS browser sources; four studio themes
- Backend: Express 5 + Socket.io with a server-authoritative engine; atomic, checksummed state checkpoints
- Twitch: Twurple for OAuth, EventSub over WebSocket, and Helix chat replies
- Codex at runtime:
@openai/codex-sdkwith structured output, validated with Zod - Safety: studio controls and OBS sources use separate permissions, credentials are encrypted at rest, and the companion binds to localhost
- Quality: 51 automated tests, CI on every push
Challenges I ran into
- OBS transparency: OBS's embedded browser rendered a white background behind a sandboxed iframe, so the broadcast route draws the trusted renderer straight onto a canvas.
- Codex CLI mismatch: the SDK's bundled Codex CLI rejected my account's model, so PopForge now prefers the installed Codex CLI, with a
CODEX_CLI_PATHoverride. - AI on a live stream: I wanted Codex creativity without risk, so Codex returns a scene specification, never code. Only trusted mechanics render it, and the streamer approves every publish.
- Fun for one chatter and for a crowd: gentle five-contribution goals, per-viewer cooldowns, and bounded effects keep it playable and readable at both sizes.
- Persistence you can trust: the garden and its places had to survive restarts without being inflated by duplicate or rehearsal events.
Accomplishments that I'm proud of
- The whole loop works live on Twitch: real chat → OBS animation → a bloom → a community vote → a streamer-approved build →
!recapin chat. The demo video is unedited footage of that run. - Codex generates a brand-new playable scene in about 10 seconds during a live stream, safely.
- Every visual and every note of music is original, so nothing in PopForge can get a VOD muted.
What I learned
Honestly, this whole project was a new learning experience. Before this hackathon I had never really thought about the problems Twitch streamers and their communities face. I had to stop thinking like a developer and start thinking like someone who streams every night, and like a viewer who just walked in.
The hardest part was finding something that helps a creator with 5 viewers and a creator with 50,000 at the same time. Most ideas only worked for one of them. A big-chat game is empty with three people watching, and a small-chat idea turns into noise with thousands. That's why PopForge ended up with gentle goals that a single chatter can finish, cooldowns and capped effects for busy chats, and a garden that keeps the community's progress whatever its size.
I also learned how to build with an AI agent rather than just asking it for code. The best results came when I gave Codex product direction and honest feedback, like "think about whether streamers will actually use this" or a screenshot of something that looked off, and let it own implementation and verification. Along the way I picked up a lot about Twitch itself: OAuth, EventSub, chat replies, and how OBS browser sources actually behave.
And I learned to be honest about limits. PopForge runs as a local companion today, and I haven't yet tested it with independent creators. Those are the next things I want to prove.
What's next for PopForge
- Hosted sign-in, so creators don't need to register their own Twitch app
- Raids that plant a visitor grove from the incoming community
- Remote Creator Relay between two channels
- Community-made scene packs, and more places for chat to build
Built With
- canvas-api
- codex-sdk
- express.js
- node.js
- obs-studio
- openai-codex
- react
- socket.io
- twitch
- twitch-eventsub
- twurple
- typescript
- vite
- web-audio-api
- zod
Log in or sign up for Devpost to join the conversation.