Outpost Installation Plan

The plan for installing an Outpost — the local job API that gives a wiki its hands: yt-dlp, ffmpeg, whisper and IPFS from the command line. Today the Outpost is the farm FastAPI on port 4244, started by `wiki-start` and reached as `api.localhost` through Caddy. This page designs the guided install; the runnable flows live on the platform pages. Part of the Anarchive Media Plan.

## The Bootstrap Problem

Terminal and termflow items are display-only until a local wiki and the terminal service exist — and installing exactly that is this plan's job. So every install page leads two lives: on this public site the steps read as copy-paste code blocks; on your own local wiki the same page becomes a live, guarded workflow that checks what is already installed and runs what is not.

## Design Rules

- every step is copy-paste-safe and idempotent — installers detect existing installs - later stages (start the Outpost, init IPFS, add the pinning service) are re-runnable - guards are ordinary shell — `command -v ffmpeg` — so once live, the flow assesses itself - steps that need typed input, like the pinning-service tokens, are `tty` steps: the step-through pauses and hands you the keyboard

## One Page per Platform

One linear page per platform: Outpost on macOS, Outpost on Linux, Outpost on Windows. A single flow with `uname` guards would be elegant — but guards cannot fire until the terminal service exists, which is phase zero, exactly when a reader most needs an unambiguous straight line. Windows is WSL2-first: its page bootstraps WSL2, then hands over to the Linux flow inside the WSL2 shell.

## Install Stages

All platform pages share the same stages: - **Stage 0 — Packages.** Package manager, then ffmpeg, yt-dlp, uv, node and Kubo. - **Stage 1 — Local Wiki.** Node LTS, the wiki server, Caddy. - **Stage 2 — Outpost Service.** Fetch the app, sync dependencies, run on port 4244, health check. - **Stage 3 — IPFS.** Init the repo, run the daemon, register the ring's pinning services per Anarchive Pinning. - **Stage 4 — Verify.** An end-to-end smoke test.

## Open Questions

The Outpost needs a cloneable home. Today it lives at a private path inside the wiki farm (`assets/api-test/main.py`); before the install pages can be honest, it moves to a public repository or a published package — planned alongside the media endpoints on the Anarchive Media Plan.

## See

- Outpost on macOS, Outpost on Linux, Outpost on Windows — the runnable flows - Anarchive Media Plan — the architecture the Outpost serves - IPFS Pinning — the survivability layer the install configures

# Assets

outpost-installation-plan