PeerTube
Federated self-hosted video platform with live streaming, an OpenAPI REST API, and peertube-cli.
Framasoft's ActivityPub video platform: upload, transcode, live stream, moderate, and federate from your own server. Everything the web client does goes through the documented REST API, and configuration is a production.yaml file.
Alternative to YouTube, Vimeo
- I need to host training or community video on my own domain with an API my agent can upload to
- I want live streaming plus VOD without YouTube's policies, and I can accept AGPL
- AGPL-3.0; modifications to a public instance must be published
- Needs PostgreSQL, Redis, nginx, and ffmpeg; the FAQ warns transcoding is CPU-heavy
- YAML config is read at start; restart after edits
Last activity Aug 28, 2026. Fit: adaptable 2, operable 3.
Adaptable: what is yours to change
Make it yours
Config only12 things to edit
Copy config/production.yaml.example to config/production.yaml and set webserver, database, redis, smtp, transcoding, live, and storage. Docker deployments override with PEERTUBE_* variables. Runtime settings land in config/local-production.json through the admin UI or API. Plugins and themes extend behavior without forking.
- Env vars
PEERTUBE_* (Docker overrides)PT_INITIAL_ROOT_PASSWORDNODE_ENVNODE_CONFIG_DIRFFMPEG_PATHFFPROBE_PATHYOUTUBE_DL_DOWNLOAD_BEARER_TOKENHTTP_PROXYHTTPS_PROXY- Config files
config/production.yamlconfig/default.yamlconfig/local-production.json- Prompt files
- none
- Accounts you need
- none
Source
- github.com/Chocobozzz/PeerTube
- AGPL-3.0 license
- Last commit Aug 28, 2026
- 15,297 stars
Operable: what an agent can drive
Interface
OfficialAPIpublished by the builderlocal
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Partial coverage. 9 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Upload and import videos | Reachable | REST API videos/upload and imports; docs.joinpeertube.org/maintain/tools covers CLI import |
| Manage channels and playlists | Reachable | REST API video-channels and video-playlists sections |
| Create and manage live streams | Reachable | REST API videos/live; README: permanent live streams supported |
| Moderate: abuses, blocklists, comments | Reachable | REST API abuses and server blocklist sections |
| Manage users and registrations | Reachable | REST API users section |
| Follow and unfollow other instances | Reachable | REST API server following; docs admin/following-instances |
| Change instance configuration at runtime | Reachable | REST API config/custom writes local-production.json, reloaded on the fly |
| Install plugins and themes | Reachable | REST API plugins section (admin) |
| Run remote transcoding runners | Reachable | REST API runners section |
| Serve video P2P to viewers | Not reachable | Browser-side WebRTC behavior; no API action, it is a viewer feature |
Code stack
- Languages
- TypeScript
- Frameworks
- AngularExpressffmpeg
- Package manager
- npm
- Database
- PostgreSQLRedis
- Hosting target
- Linux serverDockerYunoHost
- Built
- Human-written (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: web platform, Angular client, server on any OS | 99% |
| executionModel | no model at runtime; ffmpeg transcoding | 99% |
| operability | OpenAPI schema at support/doc/api/openapi.yaml and docs.joinpeertube.org/api-rest-reference.html, published by the PeerTube project | 95% |
| effort | docs.joinpeertube.org/maintain/configuration: production.yaml overrides default.yaml; PEERTUBE_* env for Docker | 90% |
| editions | README license section: AGPL-3.0; no paid edition | 99% |
| active | GitHub pushedAt 2026-08-28; release v8.2.4 2026-08-04 | – |
| reach | 85% |
Open questions
- Confirm the exact PEERTUBE_* variable names from support/docker/production/.env
Sources
- joinpeertube.org/ sourcing:video-streaming:curated
- github.com/Chocobozzz/PeerTube sourcing:video-streaming:curated
- docs.joinpeertube.org/maintain/configuration analysis