Roomy + Streamplace Integration Discussion

@iame.li I wanted to start a topic to discuss how Roomy and Streamplace can integrate with each-other.

We are still fixing bugs in the Roomy app, but our architecture has settled now and I think it’s a good time to start figuring out what the most useful integration strategy would be.

There’s a lot of different angles here, both from the UX and technical perspective.

Maybe we should start with the UX then get into the technical details. I haven’t understood yet how streamplace implements chat so I’d appreciate an overview on that front.

UX

Starting with UX, though, I think we need to figure out what we would like the integration to work like ( pinging @erlend.sh ).

For example, we can embed a stream into the Roomy app, but what do we want to do about chat?

  • Should chats from Roomy be sent to Streamplace?
  • Should chats from streamplace end up stored in Roomy?
  • Should Roomy let you see chats in streamplace without storing them in the Roomy channel?
  • Is it meaningful to actually persist stream chat, or not really?
  • Should Roomy let you view a stream and chat in the stream directly to Streamplace, acting like an alternative Streamplace client, instead of actually internalizing the stream chat into Roomy itself?

In roomy we can create completely new kinds of “rooms” for specific purposes.

For example, we had a “Feed” room previously that allowed you to basically create a Bluesky feed reader and organize it in your Roomy space’s sidbar. Pages, channels, and threads are also just different kinds of rooms.

We could create a “Live Stream” type of room that would render an embedded Streamplace stream.

Technical

Roomy’s basically just built on an event stream for spaces, where events can be indexed on the server so that the client doesn’t have to download all of them to find the space events that are relevant to, for example, the latest happenings in a particular room.

It’s very bridgeable so we can bots to sync with Streamplace if that’s what we end up wanting to do.

Side note: I was just reading up on some of the Stremplace blog posts and I saw that we have some small architecture similarities to Streamplace. :slight_smile:


That’s my quick thoughts right now, I’d love to get your perspective!

3 Likes

So on the advanced end we’ve got the various ways in which we could sync and embed across the two apps.

As a more basic starting point though, I think we can start off with just a one-off importer of Streamplace chat data for Roomy.

  1. A live talk takes place digitally on stream.place, with its own live chat
  2. Talk concludes; the chat of the talk is forwarded (and linked) to Roomy
  3. Talk-specific chat can be continued as a thread in Roomy’s atconf space.

Streamplace is the primary feed of the conference, since the streamed talks are the main connection point between the physical and virtual attendees. Streamplace is the main event, while Roomy is the afterparty.

A 20min talk will have 20-30 mins of live-chat going, and then it’s pretty much done.

For Roomy, that 20 min talk and its transcript is a thread (I.e. a chat-room which can be elevated to a channel) that may be now continued asynchronously with further questions & answers.

On Streamplace’s end it’d just have to automatically link out to this continuation thread on Roomy from its own chat and such, so people know where to go to go on talking.

OK, cool. So from that perspective we don’t need anything special from users, but we need to think about what the workflow for creating those threads are.

For example, you could create a new “Streamplace Import” thread and specify a stream account as well as the start and ending time to import.

Any admin in the space could then do that manually for each talk?

Oh, but the thread has to be created ahead-of-time if streamplace is going to be able to link back to it before the stream is over.

Actually that could still work maybe. You can create the threads for each stream ahead of time, and then maybe the simplest option would be to simply have a button that you could click to “refresh” the thread and pull any chats that are within the configured time range from Streamplace.

This could be further automated, but it’d be good to come up with the simplest, not-horrible-to-use solution that we can get away with and then make it nicer if we still have time before the conference.

1 Like

Some thoughts from a Twitch & Discord admin/moderator of 5 years

Twitch’s offline chat has quietly acted as the “glue” for communities for a long time. This is exactly where Stream.place + Roomy.chat have a real opportunity to shine.

  • “Live Stream” Channel Type in Roomy

    • When the stream is live, conversation flows in real time.

    • When the stream ends, the discussion naturally continues in Roomy without cluttering the live chat experience.

  • Threads as Continuation Spaces

    Creating a thread for each talk or topic lets Roomy host deeper, asynchronous discussion while keeping Stream.place’s live chat focused and fast. This mirrors how communities already behave—they want a place to keep talking once the stream ends.

  • Shared Moderation & Labeling

    There’s a huge opportunity here. Mods have always struggled to keep identities and rules synced across platforms. Even with linked accounts, moderation actions can’t be shared. With AT:// Compostable Moderation, labels and actions could apply across both environments, finally giving admins a unified toolset.

  • Extending the Relationship to Bluesky

    Ideally, this integration could reach Bluesky as well—e.g., posts referenced in Stream.place live chat or Roomy channels, and mentions flowing back in a meaningful way. There’s a lot of potential for cross‑surface continuity.

4 Likes

Ah sorry I’m bad at watching these!

Yes we can totally do this! You could also just make a Streamplace bot that posts the link at the appropriate time in the appropriate channel by making a place.stream.chat.message record.

So how do you send streamplace chats? I can’t just create records on my PDS right?

You can! If you take a look at an example message: (https://atp.tools/at:/natalie.sh/place.stream.chat.message/3mbrsqbro5e2c) you’ll notice that it’s both just a record, and it has a streamer DID. That streamer DID matches up to the streamer (which in this case is also me) that the chat will eventually be in.

1 Like

Interesting! But that isn’t suitble for realtime notification / has rate limit issues right?

It should be reasonable wrt realtime. Streamplace consumes the firehose for these and the rtt is usually around 1-1.5 seconds