PeerTube Browser is a video discovery project for the federated PeerTube network. It crawls instances, builds a local dataset, creates ANN indexes for fast similarity search, and serves a web UI with recommendation feeds.
PeerTube has great content but weak discovery across the federation. This project tries to make exploration easier by aggregating public data and providing similarity-based recommendations.
- Crawler discovers instances via subscriptions and walks channels/videos.
- Filtering keeps instances that appear in the JoinPeerTube whitelist.
- Embeddings are built from video metadata (title, description, tags, channel, etc.).
- ANN index (FAISS) is created for fast similarity lookups.
- Server serves recommendations and metadata from the local DB/index.
- Client renders the feed and video pages.
See DATA_BUILD.md for the end-to-end steps to build the SQLite dataset and ANN index.
- Crawler: discovers instances/channels/videos and stores raw data.
- Dataset/DB: local SQLite database with video/channel metadata.
- ANN index: FAISS index for similarity search.
- Server: API for /api/similar, /api/video, profile/likes endpoints.
- Client: static web UI (recommendations, video page, channels).
The recommendation system is a mix of filtering + scoring:
- similarity to liked videos,
- freshness,
- popularity,
- layer mixing (explore/exploit/popular/random/fresh).
Likes are used as a signal to find similar content. This is not a heavy ML system; it is a transparent, controllable pipeline.
Currently, likes are stored locally in the browser and sent to the server as JSON per request. The server does not keep user profiles by default.
- ActivityPub integration (receive new video events, send likes/comments).
- User accounts and server-side profiles (opt-in).
- Better discovery modes and ranking logic.
- Viewing modes (Hot / Popular / Random / Fresh) as separate feeds or tabs.
- User‑tunable recommendation settings (mix ratios, weights, or presets).
- Peer-to-peer communication between aggregators to share or refresh metadata.
- Far‑beyond‑the‑horizon experiments (collaborative indexing, distributed caches).
- etc
This project was started by a developer from Ukraine during the war. It is both a personal coping project and an attempt to improve discovery in federated media.
If you want to help, contributions are welcome. You can open issues or submit PRs.
If you want to support this project, here are quick options: