Streamplace VOD JAM

ATmosphereConf 2026 was recorded live on Streamplace . All talks are now available as VODs stored on our new beta Video on Demand service. But there's no frontend yet. That's where you come in.

In a world where Streamplace and the AT Protocol are successful, there won't be just one app or website for everyone's content. Solving video for everybody forever means: many apps, many websites, thousands of unique experiences for every situation. We want your take!

TLDR:

DURATION: Submissions will close in two weeks: Sun Apr 12, at 11:59 PDT .

REQUIREMENTS: Your app or website has to show the AtmosphereConf VODs, one way or another. Websites must be accessible on the public internet. Native apps must have clear instructions for building and installation. Within those parameters, get creative!

SUBMISSION:

Reply to the @stream.place VOD JAM announcement post with links to the public endpoint of your app and a Tangled repository.

Submissions must be open-source and permissively licensed (MIT or Apache 2.0).

If you're working as part of a team, make sure to tag all your team members in the submission!

If you use AI to help create the app, please let us know what you used, either in the README or in the commit descriptions.

PRIZE: All valid submissions will receive a VOD badge that may be equipped to show up next to your name in Streamplace chat from now until the end of time. Show off that you were here when it all started!

Streamplace VOD Beta Documentation

We wanted to get the VODs out as quickly as possible, but they're rough at the moment; the timestamps need to get sliced nicely. We'll be cleaning them up over the course of the jam — by the end we'll have working apps with clean video! Other things that will be added as we go:

AAC audio rendition (you might have some problems with iOS playback until we do this)

Transcoded video renditions (720p, 240p)

Thumbnails

Lexicon schema

We'll update this post as we get things polished.

The data

Every talk is a place.stream.video record in the did:plc:rbvrr34edl5ddpuwcubjiost repository ( @stream.place ). You can list them all on pds.ls .

Each record looks like this:

{
"$type": "place.stream.video",
"title": "How Streamplace Works: VODs",
"source": {
"ref": "bafkr4igmxmm3dei6tsgmwmfyuyyas74dlmminco5zfhad3lcinm3q3aa4e",
"size": 1448011796,
"$type": "place.stream.muxl.defs#archiveBlob",
"mimeType": "video/mp4"
},
"creator": "did:plc:jcahd7fl7h23c24ftxuhkhiw",
"duration": 2019548316666,
"createdAt": "2026-03-28T23:44:48Z",
"livestream": {
"cid": "bafyreifdrkhtt2gpeqxq26aqb64rfsxhc6eysfjksldkaw6os4ihck4za4",
"uri": "at://did:plc:jcahd7fl7h23c24ftxuhkhiw/place.stream.livestream/3mi5stzyxji2e"
}
}

Key fields:

title — talk title

creator — DID of the original streamer

duration — nanoseconds

livestream — back-reference to the original livestream record

source.data.ref — BLAKE3 content hash of the video archive

The livestream field links back to the original place.stream.livestream record if you want additional context about the stream.

Playing a video

We have a beta service set up for this at vod-beta.stream.place, and the data structures and XRPC endpoints may change as we move toward generally-available VOD. The primary XRPC that you'll need is place.stream.playback.getVideoPlaylist, which returns a standard HLS CMAF playlist.

Given a record URI like at://did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.video/3mi2ikg6gij26, you'll want to hit:

https://vod-beta.stream.place/xrpc/place.stream.playback.getVideoPlaylist?uri=at://did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.video/3mi2ikg6gij26

Clipping!! (New 2026-04-03)

We've successfully implemented a rough version of clipping! Two ways to access it:

https://vod-beta.stream.place/xrpc/place.stream.playback.getVideoPlaylist?uri=at://did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.video/3mi2ikg6gij26&start=23867000000000&end=25581000000000

{
"$type": "place.stream.video",
"title": "How Streamplace Works: VODs",
"source": {
"end": 25581000000000,
"ref": "bafkr4iex2pp52cxwzrm6dfess3gk3gnfp4vwtg4de6akkezb2egt4ph33a",
"size": 14601435604,
"$type": "place.stream.muxl.defs#archiveBlob",
"start": 23867000000000,
"mimeType": "video/mp4"
},
"creator": "did:plc:jcahd7fl7h23c24ftxuhkhiw",
"duration": 1714000000000,
"createdAt": "2026-03-28T23:44:48Z",
"livestream": {
"cid": "bafyreifdrkhtt2gpeqxq26aqb64rfsxhc6eysfjksldkaw6os4ihck4za4",
"uri": "at://did:plc:jcahd7fl7h23c24ftxuhkhiw/place.stream.livestream/3mi5stzyxji2e"
}
}

(Note that you can't yet use this mechanism to upload your own VODs; for now any records you create will need to reference the blobs in the @stream.place repo. VOD upload coming soon!)

What we're looking for

Video player apps and web UIs for browsing talks

Integrations with existing AT Protocol clients

Creative uses of the data — playlists, clips, highlights, search

Accessibility features — captions, transcripts, chapters

Hilarious and amazing nonsense that we couldn't possibly have predicted

Good luck and happy vodding!