Installation
Install Kinetograph from npm, or build it from a clone, and check that the native addon loads.
There are two ways to install:
- Prebuilt from npm (recommended). About a minute, with no Rust, FFmpeg or compiler to set up.
- From source. Only to work on the engine, or on a platform with no prebuilt package (Intel Mac, Linux on ARM). It takes 15 to 30 minutes.
With a coding agent
Paste this into Claude Code, Codex or another coding agent:
Set up Kinetograph (https://github.com/0xS4N4TG/kinetograph) for me by following its AGENTS.md:
https://github.com/0xS4N4TG/kinetograph/blob/main/AGENTS.md
Ask me first whether I want the prebuilt package (recommended) or a build from source,
and ask before installing anything system-wide or installing the Kinetograph agent skills.The agent asks which install you want, installs it, runs doctor, and then asks whether to add the agent skills and the MCP server.
From npm
npm install kinetographYou need Node.js 22 or newer. The native addon comes prebuilt for macOS (arm64), Linux (x64, glibc) and Windows (x64). It carries FFmpeg, so you install nothing else.
Kinetograph uses the GPU when there is one: Metal on macOS, Vulkan on Linux and D3D12 on Windows. Without a GPU it draws on the CPU. It needs no window or display, so it runs on a server or in CI.
From source
You need:
- Node.js 22 or newer.
- A stable Rust toolchain from rustup.
- The FFmpeg development libraries, pkg-config and libclang.
Install the system libraries:
- macOS:
brew install ffmpeg pkgconf. Withoutpkg-config, setFFMPEG_DIR=$(brew --prefix ffmpeg)instead. - Debian or Ubuntu:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libclang-dev pkg-config
A build from source uses the ffmpeg on your PATH for libx264 when it has it (Homebrew's does).
If Homebrew's rustc comes first on your PATH and does not start, put rustup first:
export PATH="$HOME/.cargo/bin:/opt/homebrew/opt/rustup/bin:$PATH"Then, from the repository root:
npm ci
npm run buildnpm ci installs the workspace packages. npm run build builds the TypeScript packages and a debug build of the addon. For timings, build the release addon too:
npm run build:release -w @kinetographdev/nativeThe GPU tests, the golden images and the benchmarks run on an Apple M4 Mac. CI builds the Linux and Windows versions.
Check the install
npx kinetograph doctorWith no entry, doctor prints the Node version, the platform, whether the addon loaded and which renderer draws:
node v22.x.x on darwin-arm64
addon: loaded, version 0.3.0
renderer: Skia GPU (Metal)
kinetograph doctor <entry> reports what a project holds that the engine cannot drawIf the addon line says NOT loaded, the text after it gives the reason. If Skia draws on the CPU because the GPU could not be used, doctor says why.
FFmpeg licence
Kinetograph uses two FFmpeg builds. The libraries linked into the native addon (kinetograph.*.node) are LGPL 2.1 or later, built by scripts/build-ffmpeg.sh. They do all decoding and the default encoding. The bin/ffmpeg program (bin/ffmpeg.exe on Windows) in the same npm package is a separate executable under GPL 2 or later, built by scripts/build-ffmpeg-gpl.sh with libx264, libx265, libvpx and AAC. The addon runs it as a child process, only for libx264 and libx265, and sends it raw pictures on a pipe. The two share no memory or code, so the PolyForm licence does not cover bin/ffmpeg and the GPL does not cover the addon.
- Each
@kinetographdev/native-<platform>package holdsLICENSE.md,FFMPEG-LICENSE.md,COPYING.GPLv2,COPYING.LGPLv2.1andbin/SOURCES.txt, which lists the tag and commit of every library in the program. - The GPL program is built from unmodified upstream sources: FFmpeg 9.0.1 (tag
n9.0.1, github.com/FFmpeg/FFmpeg), x264 (a pinned commit of thestablebranch, code.videolan.org/videolan/x264), x265 4.2 (bitbucket.org/multicoreware/x265_git) and libvpx 1.15.0, BSD-3-Clause (github.com/webmproject/libvpx). The configure options and pinned refs are inscripts/build-ffmpeg-gpl.sh. - The addon's own encoders are VideoToolbox (macOS, the fallback when libx264 is missing), OpenH264 (macOS, Linux), Media Foundation (Windows), NVENC, libvpx (macOS, Linux), ProRes, AAC and GIF.
- To use your own
ffmpeg, setKINETOGRAPH_FFMPEG. Each encoder is looked up there first, then inbin/ffmpeg, then in anffmpegon yourPATH. To keep the GPL program out of your install, deletebin/ffmpeg. Then--encoder libx264and--encoder libx265fail with an error naming the missing encoder, unlessKINETOGRAPH_FFMPEGor yourPATHsupplies one.
Run the CLI
npx kinetograph <command> runs the CLI. In a clone, run it from the repository root, or use node packages/cli/dist/cli.js <command>. The CLI reference lists every command.
Next, write a first project: First video.