Inspiration

I moved to Canada from Ukraine in 2007. That time left a great impression in my head so I'm trying to bring it back. Remember waiting for my high school crush to message me back on MSN, staring at the Windows Media Player visualizer getting mesmerized.

When Rhys tweeted the "we literally have no idea how to build like this anymore" theme, it hit. We've forgotten how to build with character. The 2000s had skins — the Headspace alien head, WMP Ambience visualizers, nudge buttons that literally shook your window. Software had vibe.

So I rebuilt that — but under the hood it's 2026. Claude agents, Mux Robots analyzing videos in real time, CRDT sync, AI Gateway. All the modern plumbing, dressed up like 13-year-old me would recognize.

What it does

It's a Windows XP desktop running in your browser. Boot splash, login screen, Bliss wallpaper, draggable windows, taskbar with a live clock. Two apps live there:

XP Messenger — MSN Messenger with 6 AI buddies, each with a distinct personality:

  • SmarterChild (smug OG AIM bot, back from the dead)
  • xX_DarkAngel_Xx (emo kid, MySpace top 8 energy)
  • DJ Retro (music snob, rates everything out of 10)
  • Tech Support Tom (ALL CAPS, HAVE YOU TRIED TURNING IT OFF AND ON)
  • Crush (flirty mysterious stranger, asks a/s/l)
  • Mom (just discovered MSN, sends ❤️❤️❤️)

Every agent has a watchVideo tool backed by Mux Robots. Drop a YouTube link, an mp4, a Mux URL, or even a bare Mux asset ID — the agent actually watches it. We ingest to Mux, auto-generate English captions, run Robots summarize + find-key-moments, and Claude reacts in character. Paste the same video to all six and they say wildly different things.

You can also drag-and-drop an mp4 straight into a chat — it uploads directly to Mux, captions generate post-upload, Robots analyzes, agent reacts.

XP Tunes — real Spotify client wearing the iconic Headspace WMP skin (green alien head, closed dreamy eyes, transport buttons across the dome). Recreated entirely in SVG + CSS. OAuth, Web Playback SDK, real playlists, LCD visualizer, slide-out equalizer and playlist panels.

How we built it

One Cloudflare Worker hosts everything.

  • Hono on Workers with run_worker_first = true so /api/* and /auth/* aren't shadowed by the SPA fallback
  • Vite + React 19 SPA served by the Worker's Assets binding
  • Cloudflare AI Gateway in front of every Claude call — free caching, rate-limiting, observability
  • Claude Sonnet 4.5 via @ai-sdk/anthropic, tool calls streamed over SSE
  • Mux + Mux Robots for ingest, playback, and AI analysis
  • Jazz.tools as the entire database. Every message is a CoMap; streaming Claude tokens are written into the Message's content field every 40ms. Two tabs on the same account see tokens appear letter-by-letter simultaneously — no WebSocket code I had to write
  • Spotify Web API + Web Playback SDK for real playback, with 429 retry-with-backoff
  • XP shell is all hand-rolled on xp.css — Zustand window store, react-rnd drag/resize, DIY boot splash, useDemoAuth user tiles, start menu with "Reset XP" nuclear-wipe

Challenges we ran into

The Cloudflare Assets binding was silently eating our routes. With SPA fallback on, Spotify OAuth kept showing my React login screen. run_worker_first = true was the fix — but it took a while to spot.

Mux Robots docs vs reality. The docs say statuses are pendingcompletederrored. Reality adds a processing state. The retrieve endpoint is /robots/v0/jobs/{workflow}/{JOB_ID} (not /robots/v0/jobs/{JOB_ID}). Results live under data.outputs, not data.result. Getting this right was the difference between agents hallucinating from filenames and accurately summarizing Dave Kiss's 23-minute talk on designing for AI agents.

Direct-upload captions. generated_subtitles in the Upload API's new_asset_settings is silently ignored. You have to wait for the asset to be ready, find the audio track ID, call generateSubtitles, and poll until the text track is ready — only then can find-key-moments work.

Spotify videos are DRM-locked. Web API doesn't expose them, Web Playback SDK is audio-only. Had to pivot: Spotify plays audio, Mux streams a separate visualizer.

1Password was hijacking every click because buttons default to type="submit". Fixed with type="button" everywhere and data-1p-ignore on every input.

Accomplishments we're proud of

  • Full end-to-end demo with zero mocks. Real Spotify, real Mux ingestion + captions + Robots analysis, real Claude streaming, real cross-tab Jazz sync, one wrangler deploy.
  • Six agents, six completely different reactions to the same video. Drop Dave Kiss's talk to Tech Support Tom and he rages IT IS TOO TECHNICAL. Drop it to Mom and she's "so proud of him ❤️❤️❤️." Same Mux Robots data, six personalities.
  • The Headspace skin actually looks like Headspace. Built entirely in SVG + CSS — alien head, closed eyes, LCD screen cutout, speaker cones, sliding panels. No sprites.
  • Realtime Jazz sync feels magical. Two tabs, tokens appearing simultaneously, zero transport code.

What we learned

Mux Robots launched six days before this hackathon. It's a genuinely new primitive — each workflow returns typed outputs you can hand directly to an LLM. The pattern ("agent calls tool → Robots runs → LLM reacts to structured content") will generalize.

Jazz.tools' progressive-CRDT-mutation pattern for streaming is a real unlock. No "subscribe to a channel" boilerplate. Mutate a string field and every subscriber re-renders.

Cloudflare AI Gateway adds almost nothing to client code and gives you a real observability dashboard for free.

And most importantly: skins matter. Software with vibe is more fun to build AND more fun to use.

What's next for MicroSlop XP

  • Pre-ingest a classic WMP visualizer compilation into Mux, use Robots find-key-moments to auto-segment it into Ambience / Alchemy / Plenoptic clips, sync to Spotify track mood in XP Tunes
  • Wire the remaining Mux Robots workflows: moderate, generate-chapters, translate-captions
  • Swap useDemoAuth for Passkey auth so cross-device sync works
  • Let users invite custom agents with custom avatars — everyone's MSN friend group was different
  • BSOD if you resize a window too fast

Built With

Share this project:

Updates