Distribution is fully automated by .github/workflows/release.yml: pushing a
v* tag builds the launcher per platform, builds whisper.cpp, bundles the studio
and Remotion, generates checksums.txt, and publishes a GitHub release. End users
install with no prerequisites:
curl -fsSL https://podcli.com/install.sh | sh
# Windows: irm https://podcli.com/install.ps1 | iexPlatforms: macOS arm64, Linux x64/arm64, Windows x64. (npm isn't used — the
unscoped name podcli is blocked by npm as too similar to pod-cli.)
- Bump the version in
package.json. It is the single source of truth: the launcher embedscli/VERSION, whichgo generatewrites frompackage.json, and the Python backend reads it too.A tag that disagrees withcd cli && go generate ./... && git add VERSION # refresh the embedded version
package.jsonfails the release build, andgo test ./...incli/fails ifVERSIONis stale. - Merge to
mainand make sure CI is green. - Tag and push. The tag must match
package.json:git tag vX.Y.Z git push origin vX.Y.Z
- Watch the
releaseworkflow. It produces these assets (the names the installers, self-update, and provisioner expect):podcli-{darwin,linux,windows}-{amd64,arm64}[.exe]— static launcherswhisper-cli-<os>-<arch>[.exe]studio-bundle.tar.gzremotion-<os>-<arch>.tar.gzchecksums.txt
- Verify the release is published with all assets, then run the smoke test below.
curl -fsSL .../install.sh | sh # Windows: irm .../install.ps1 | iex
podcli doctor # paths + engine resolution
podcli process sample.mp4 --top 1 # transcribe -> suggest -> export a clip
podcli # interactive menu -> Open Web UIFirst run downloads the hermetic runtimes (Python, Node, FFmpeg, model) once. Needs outbound HTTPS to github.com, huggingface.co, nodejs.org, and the ffmpeg hosts. glibc Linux only (Alpine/musl is unsupported).