Install
npm ci --ignore-scripts still works. Linux builds are static, so
Alpine is supported.
The ffmpeg requirement
splice does not bundle ffmpeg. It needs a build with libx264 and libass:
libx264 encodes the picture, and libass draws captions and titles.
A system build can be missing libass. Homebrew on macOS has shipped such builds;
on GitHub’s macOS runners, ffmpeg 9.0.2 has no ass or subtitles filter. The
symptom is specific: everything renders until a caption or title is added, then
ffmpeg fails with No such filter: 'subtitles'.
Check a build directly:
splice, and installs it into a per-user
cache. Both ffmpeg and ffprobe must verify before either is moved into place, so
a mismatched download installs nothing.
This is explicit, not a postinstall: nothing is fetched behind your back. It is
about 56 MB to download and 160 MB on disk, and it needs network once.
Which binary wins
doctor reports ffmpeg_source, and the order is fixed:
SPLICE_FFMPEG— a directory holding both tools, or a path whose siblingffprobeis preferred.- A copy beside the
splicebinary. - The splice cache, where
ffmpeg installputs one. PATH.
~/.cache/splice/ffmpeg
on Linux, ~/Library/Caches/splice/ffmpeg on macOS, %LOCALAPPDATA%\splice\ffmpeg
on Windows — or point SPLICE_FFMPEG at the binary you want.
Keeping it current
splice update asks the npm registry for latest and installs it with
npm install -g splice-cli@latest; it needs npm on PATH, and it only moves
forward, so a local build ahead of the registry is left alone.
The agent skill
The npm package ships asplice skill and installs it into whichever skill
directories already exist (~/.claude/skills, ~/.agents/skills,
~/.pi/agent/skills). It never creates one, and a failed copy never fails the
install. If you installed with --ignore-scripts, run splice-skill; --dir
puts it somewhere else, and SPLICE_SKILL=none skips it.