Inspiration

I wanted a playful way to showcase FLUX.1 Kontext as a communal creative medium. Chaotic shared experiences like Twitch Plays Pokémon made me wonder what happens when everyone edits one living scene together.

What it does

The project hosts a public image where anyone can submit a natural-language prompt to add or tweak an object. A Durable Object queue runs each prompt through FLUX.1 Kontext [dev] and streams the updated image to every viewer in real time. After ten prompts the room auto-resets, playing a timelapse of the latest edits before rebasing to the original scene. Presence counts, emoji reactions, and per-slug custom rooms (once a base image is uploaded) round out the experience.

Aside from a micro social game it could be used for real time collaboration with clients or coworkers across many creative fields. An hairstylist might share a room with a client, brainstorming different hairstyles before an appointment. An interior designer could quickly mock up room designs and collaborate with coworkers asynchronously or in real time. A contractor could quickly show remodel concepts, all with no specialized knowledge.

How I built it

A Cloudflare Worker acts as the entrypoint, handles routing and uploads, and serves an inline UI. A Durable Object persists room state image versions, prompt queue, timelapse frames, reactions and orchestrates sequential FLUX jobs. The app wraps the fal.ai queue API for FLUX.1 Kontext [dev], including polling, retries, and storing finished images in R2. WebSockets broadcast image updates, queue stats, reaction bursts, and timelapse events back to clients.

Challenges I ran into

Keeping the image low noise over multiple edits was challenging. This is somewhere I would like to dial in on, through API parameters, system prompts, LoRAS , or rethinking the flow.

Accomplishments that I'm proud of

I shipped a fully server-rendered Worker that still delivers a reactive, real-time front end. Adding small touches like replaying the last edits as a timelapse during reset, supporting custom URL slugs, and layering in emoji reactions turns the model into a collaborative social experience.

What I learned

Cloudflare Durable Objects works well for multiplayer state that needs deterministic ordering and persistence. Even lightweight real-time feedback presence counters and reaction bursts makes the shared room feel alive.

Built With

Share this project:

Updates