Podex - don't let anyone tell you what you can share!

Since the launch of Codex testnet I wanted to build a decentralized media hosting platform on top of Codex and Waku. Well, here it is:)

Disclaimers first:

  1. It is a vibe coded buggy webapp:)
  2. There are self-hosted/decentralized streaming/media content sharing platforms which would benefit from integrating Codex and that would probably be way better path than this, but…I just wanted to try:)
  3. I do not encourage anyone to (re)publish any content that is licensed or that they do not own

What is Podex?

Podex is a combination of words podcast and Codex - the initial idea came from looking at Logos Podcasts - Logos Press Engine and thinking - why do I have to listen to these podcasts on Youtube or Spotify - I would like to download them and listen offline - and we could use Codex to host those media files.

I’ve built an even shittier version last October - it basically just downloaded the file from Youtube, uploaded it to Codex and kept the list of these locally, so I could a) download it to my device b) listen from that single-page webapp

Last week I thought, which new app could I try to build - and remembered I wanted to do Podex, so I did. Initial version took ~3h with Lovable.dev and then I had to tweak the Codex and Waku integrations and slowly added features - most frontend has been done by AI.

Podex has 3 components:

  1. Codex node
  2. Frontend
  3. Podex “backend”

  1. Codex node is pretty self-explanatory - if you do not plan to publish content, it does not even have to be public (i.e. other nodes be able to connect to you). Obviously, if you plan on publishing content, other Codex nodes need to be able to connect to you and fetch the dataset(s)

  2. Frontend allows you to configure your backend APIs, view list of available content and publish new one. Each published media is signed by a wallet (supports ENS) and you can “follow wallets” - i.e. you can only filter for content from people you care about. The goal was to support both video and audio, but the audio is only partially working.

  3. Podex “backend” is a small service leveraging yt-dlp tool to fetch content from various streming/media hosting platforms like Youtube or Twitter and upload it to Codex node to make the UX as simple as possible - this is kinda where this started with LPE podcasts:D But I think it would be interesting to re-upload for example Waku/Logos Spaces or broadcasts as those are quite quickly lost in the mess of Twitter feed content (obviously after some additional features are added - like playlists:))

I would like to encourage you to try this - it should hopefully be very simple:D

  1. Get the docker-compose.yml from the repo: podex-network-stream/docker-compose.yaml at main · vpavlin/podex-network-stream · GitHub
  2. Spin it up with docker compose up (or any other way you’d normally do it)
  3. Access http://localhost:8082
  4. Depending on whether anyone (me?) actually published anything lately, you could see new content. If not, you can go directly to an existing content: http://localhost:8082/content/zDvZRwzm4b52vmff6oCF818AU11D82xk1zProbiTH3aqMwpdSLu2

For every new published audio/video the Manifest is published over Waku, so that it is discoverable by other peers. The Manifest is also uploaded to Codex (hence the CID in the localhost link above - that points to the Manifest, which then points to the content and thumbnail CIDs).

I have a few ideas how this could be made better/more useful as well:

  1. Support Codex marketplace - allow creators to actually pay for making the content durable
  2. Allow viewers/supporters to pay for extending (I know extending is not possible, so maybe renewing) the content hosting in the network
  3. Integrate Status Network and allow for content to be tracked in a contract (for long term discoverability)
  4. The above would also allow viewers/supporters to provide funding to the creator - e.g. by liking you could also pay the creator
  5. Add playlists - playlist is essentially a list of dependencies (i.e. list of Manifest CIDs)
  6. Add dependencies to content Manifests - if your content is referencing/using/remixing some other content, you could/should reference and link it, but also if monetization is possible, you could “drip” (as in https://www.drips.network/) funds to your “dependencies”)
  7. Filtering
  8. Per-creator content-topics - currently all content is announced on a single content-topic, might make sense to also/instead allow creators to choose to announce on custom content-topics

Anyway, I would like to see someone publishing a video and sharing a link, so that I can try to view it:)

Kudos to Ben (@thatben) from Codex who actually ran Podex and published a video to prove it works:) - I had issues with making my Codex node publicly available (works now!), so it was hard/impossible to make sure things actually work somewhat reliably without him!

Anyway, link to the repo here: GitHub - vpavlin/podex-network-stream

It is open source, feel free to fix it!

3 Likes

Siiiiiiiiiiiiiick

IMO this is prime app for Logos Core. As soon we have a codex library in there so you can just do the install via logos core instead of playing around with docker-compose/.

Yup, I was thinking about trying to package it up with Tauri to minimize the initial barrier - it might not allow you to publish, but at least should be extremely easy to setup for viewing.

Definitely looking forward to porting it to Logos Core:D

This is crazy, nice work! Something where tech oriented people can get their hands dirty perhaps?

Edit: Just moved this to the Tech category.

I will try to clean up the code a bit, but yes, the code should be simple enough for people to dig into how it works. I can also record a more code oriented walkthrough if needed.

I want to see a web meme board: Waku + Webtorrent. You inspire me to make it happen.