{"adoption": {"forks": 59, "observed_at": "2026-08-28T04:03:27.261599+00:00", "stars": 1067}, "canonical_url": "https://ross.abutalabs.com/products/rffmpeg", "card": {"archived": false, "artifact_type": "cli-tool", "description": "rffmpeg: remote SSH FFmpeg wrapper tool", "domain": ["media", "self-hosted"], "enriched": true, "function": ["video-processing", "cli", "developer-tools"], "health_score": 50, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["joshuaboniface/rffmpeg"], "name": "joshuaboniface/rffmpeg", "platform": ["python", "cli", "self-hosted"], "pushed_at": "2025-11-03T19:42:58+00:00", "repo": "joshuaboniface/rffmpeg", "stars": 1067, "tags": ["ffmpeg", "ssh", "transcoding", "jellyfin", "load-balancing", "remote-execution", "video", "automation", "linux"], "topics": [], "urls": [], "use_cases": ["offload jellyfin ffmpeg transcoding to a remote server over ssh", "distribute video transcoding across multiple servers for load balancing", "use hardware acceleration on a remote machine for media transcodes", "run ffmpeg commands on remote hosts transparently", "set up a transcode backend for a home media server", "replace local ffmpeg binary with a remote ffmpeg wrapper"], "what_it_is": "rffmpeg is a Python CLI wrapper that executes FFmpeg and ffprobe commands on remote servers over SSH. It lets media servers like Jellyfin offload transcoding to remote machines with better hardware or distribute transcodes across multiple hosts.", "when_to_avoid": ["you only transcode locally and have sufficient hardware", "you need a general-purpose distributed video processing pipeline rather than an ffmpeg drop-in", "your media server and transcode host cannot communicate over SSH"], "when_to_choose": ["you run a media server like Jellyfin whose local hardware can't handle transcoding", "you want to spread transcoding load across several machines", "you need ffmpeg to run transparently on remote hosts via SSH"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rffmpeg", "repo": "joshuaboniface/rffmpeg", "role": "main", "score": 45}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.261599+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.789085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea1e2d1c4e595f0cc2f2128001022e2b74c7072a41463ccc0b43a62738cbbb7", "fetched_at": "2026-08-28T04:03:27.261599+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joshuaboniface/rffmpeg"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 50, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2510, "days_push": 303, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 45, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}