Inspiration
A streamer with guests on Discord gets one mixed picture, or asks every guest to install something and upload files afterwards. Clean per-guest footage is what makes a highlight, a split-screen or a good stream layout possible, and guests should not have to do anything for it.
What it does
Café is a Windows desktop app for the host of a call. Guests share on Discord as usual and install nothing.
- Add window: pick a popped-out call window and it becomes a live tile on a video-call style wall.
- Record all: one click starts one video file per window, at 1920x1080 and 30 fps, using the graphics card's hardware encoder.
- Stays out of the way: Café can sit maximized on top of the pop-outs and they keep painting and recording.
- Send to OBS: one click on a tile creates that window's scene in OBS over its local WebSocket.
- Twitch chat, kept locally: Café joins a public channel's chat read-only, with no login and no token, and stores the messages it receives as typed JSONL on your PC.
- Ask your AI: Café is a local MCP server. Codex can check the session, read and search the stored chat, and report chat activity through bounded, typed tools.
How we built it
Rust owns all state and capture: Windows Graphics Capture frames are paced and piped to FFmpeg. Python holds the Twitch and OBS connectors and the MCP server. Electron with checked JavaScript draws the wall. Windows, titles and chat text are treated as untrusted data, and AI requests pass through the same validation as a click. An optional Ask me before AI actions setting adds a Confirm click inside Café.
How we used Codex
The main Codex thread orchestrated the build: it planned units, wrote and tested code, and integrated work from a fleet of models in separate worktrees. On the final day, Codex instances also drove the real app on Windows, wrote evidence reports and fixed bugs in small commits with tests. Claude Code led the final integration and Windows validation. Codex is also a user of the product: it reads Café's session and chat over MCP, as the video shows.
Challenges
- Chromium windows report a content size smaller than their capture size, which looked like a resize and produced zero frames.
- Discord stops painting a fully covered window, so a maximized app turned recordings black. Making Café's window 254/255 opaque fixed it.
- A strict frame pacer stopped recordings on any stall, and still windows were judged frozen. Both now keep a continuous timeline.
Accomplishments
All measured on one MSI laptop with a GTX 1060, an i7-8750H and 16 GB of RAM:
- Two real Discord pop-outs recorded with Record all behind a maximized Café: 1,930 and 1,934 frames in about 64 seconds, at 1920x1080, with no black frames in the sample we reviewed.
- Four windows recorded at once.
- One capsule sent to real OBS with one click, creating its scene.
- Hundreds of real Twitch chat messages stored from a public channel, then read by Codex over MCP.
What we learned
Measure on the real machine. Our most important bugs only appeared with real Discord windows on a real laptop, and our tests passed without them.
Known limits
Windows only. Recordings are video only, with no audio. Each guest needs their own popped-out window. A hardware encoder is required, with NVIDIA NVENC the only one measured. A minimized or resized pop-out cannot be recorded, and off-screen windows or other virtual desktops do not work. Pop-outs must stay not fully covered by other apps; only Café itself may sit on top of them. Some recordings stopped unexpectedly in final testing and we did not find the cause before the deadline: closing and reopening Café recovers it. Codex starting a recording with the app open is not reliable yet. The release ZIP is unsigned.
What's next
60 fps, reliable OBS scene switching, and Codex running full recording sessions from a prompt.