The infrastructure plan for the media wing of the anarchive — one Media Plugin, one Outpost, and an IPFS pinning layer that together turn any video or audio source — YouTube, screencasts, Fathom recordings, podcasts — into a citable, forkable, survivable wiki page. Extends the channel strategy in Media Plan.
## Three Layers
The **Outpost** is a local job API — the farm FastAPI on port 4244 — doing the heavy work: yt-dlp, ffmpeg, whisper, IPFS pinning. It must run on the user's own machine: YouTube blocks datacenter IPs, and the public farm containers have no room for video work. The Media Plugin is the distributable npm client: it renders the media item, carries the clip-marker UI and the provenance contract, and degrades gracefully when no Outpost answers. **Triggers** are how media arrives: a URL dropped on the page flag, the conversational YouTube Archive Skill, and the clip marker.
## Push, Never Pull
For online wikis the owner controls, the Outpost pushes results — page JSON and assets written via the Nextcloud sync folder or owner credentials. Browser-to-localhost calls from a public page are a dead end: Chrome's Local Network Access rules block them. The plugin on a public page is a renderer, never a controller.
## Survivability
Media survives through tiers: the Homebase — today a Kubo node on the Pi5 — pins everything including the high-resolution originals, and a ring of free-tier remote pinning services pins clips and sidecars so citations survive the Pi being offline. Strategy on Anarchive Pinning; node mechanics on IPFS Pinning.
## Roadmap
Each phase lands as working tooling before the next begins.
- **Phase 0 — Plan pages.** This cluster: the architecture recorded where it can be forked. - **Phase 1 — IPFS foundations.** Kubo on the Pi5, pin the existing assets corpus, register the pin ring — Filebase first, then Pinata and 4EVERLAND — per Anarchive Pinning, backfill CIDs into existing video pages. - **Phase 2 — Plugin scaffold.** `wiki-plugin-media` via the house plugin workflow; the media item plays video, audio and m3u8 from its item contract with no Outpost at all. - **Phase 3 — Outpost media endpoints.** `/media/probe`, `/media/archive` as an async job with status polling, `/media/pin` — a `media_service.py` router joining the farm API the way the terminal service does; wraps the youtube-archive pipeline. The Outpost moves to a cloneable home. - **Phase 4 — Triggers.** A YouTube URL dropped on the page flag creates a media item and fires the archive job; the youtube-archive skill delegates its heavy lifting to the endpoint. - **Phase 5 — Clip marker.** The timed-video clip tools move into the media item; fair-use clips transcoded with the house recipe and auto-pinned to Filebase. - **Phase 6 — Push to remote.** The Outpost writes pages, assets and their Media Commons pages to owned online wikis, then reindexes — never browser-to-localhost. - **Phase 7 — Audio and podcasts.** An audio mode for the media item; podcast feeds through the same pipeline; the Fathom recording flow formalised. - **Phase 8 — Distribution.** npm publish, documentation on plugin.fedwiki.club, and the install flows hardened by real termflow runs on all three platforms.
## Open Questions
- the plugin name: check `wiki-plugin-media` against upstream `wiki-plugin-video` and `wiki-plugin-audio` before Phase 2 - Pi5 gateway exposure: a public gateway subdomain has port-forwarding and abuse-surface implications - Fathom recordings: pin the mp4 (it must be fetched within its 15-minute download window) or trust the durable share-token m3u8
## See
- Media Plan and Glasp Plan — the channel strategy this builds under
- Media Plugin, Outpost Installation Plan and IPFS Pinning — the three layers
- Anarchive Pinning, Filename Convention and Media Commons — pinning strategy, self-naming files, the public commons
- YouTube Archive Skill, Video FFmpeg Skill and Fair Use Clip — the pipeline this generalises
- Clip Maker and Fathom and Screencasts — the clip flow and the dropped-file channel
- Anarchive Hosting — the 2026 hosting and storage cost survey, on hosting.anarchive.earth ![]()
# Assets
anarchive-media-plan