A lightweight Rust proxy that exposes YouTube-style Atom feed endpoints using Invidious backends.
yt-feeds-proxy translates Invidious API responses into YouTube-compatible Atom feeds and lightweight endpoints. It is implemented in Rust with async I/O and is intended to run as a small, high-performance proxy.
- Standard Atom feeds:
/feeds/api/standardfeeds/:region/:feed - Video search:
/feeds/api/videos?q=... - Video metadata:
/feeds/api/videos/:video_id - Comments feed:
/feeds/api/videos/:video_id/comments - Related videos:
/feeds/api/videos/:video_id/related - User profile and uploads:
/feeds/api/users/:usernameand/feeds/api/users/:username/uploads - Redirects to Invidious embeds:
/embed/:video_id - Admin stats endpoints:
/admin/statsand/admin/stats.json
src/— Rust application sourcesproto/— protobuf schemas used by the proxyrustypipe-patched/— vendored patched RustyPipe dependencyCargo.toml— project manifestDockerfile,docker-compose.yml— container deployment support
- Rust stable 1.70+
git clone https://github.com/Basket5125/yt-feeds-proxy.git
cd yt-feeds-proxy
cargo build --releaseRun:
cp config.example.json config.json
./target/release/yt-feeds-proxyIf config.json is missing, the proxy uses built-in defaults and supports PORT / HOST environment variables.
Copy config.example.json to config.json and update the values for your environment.
{
"port": 8080,
"host": "0.0.0.0",
"primary_instance": "http://inv.example.org",
"primary_instances": [
"http://inv.example.org",
"http://inv2.example.org"
],
"primary_rpm_limit": 5,
"instances_list_url": "http://example.org/instances.json",
"instances_refresh_secs": 300,
"server_host": "example.com:80",
"youtube_api_key": "YOUR_API_KEY"
}The proxy will use config.json when present. If the file is absent, defaults are loaded from the environment or built-in values.
Build the image:
docker build -t yt-feeds-proxy:latest .Run with mounted config:
docker run -d --name yt-feeds-proxy -p 8080:8080 \
-v $(pwd)/config.json:/app/config.json:ro \
yt-feeds-proxy:latestOr use:
docker-compose up -d