kerf
AI-assisted video & audio editor — Rust + Tauri, with an MCP server that lets Claude cut and assemble your footage.
Install / Use
claude mcp add OrellBuehler -- npx -y github:OrellBuehler/kerfIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of kerf
kerf scores 81/100 on our quality scale, 727th of 933 AI & Machine Learning skills we index.
Its MCP Server is 23 KB long, well organised into 18 sections with 9 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated yesterday, so kerf is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 85/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
kerf compared with similar skills
All 4 of these similar skills score higher than kerf; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| kerf (this skill)by OrellBuehler | 81 | 10 | 1d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 106.0k | 4d ago | CLAUDE.md |
| claude-memby thedotmack | 100 | 104.2k | today | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 88.8k | 3d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install kerf?
- Run
claude mcp add OrellBuehler -- npx -y github:OrellBuehler/kerf. The install tabs above show the steps for each supported agent. - Which AI agents does kerf work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is kerf safe to use?
- It declares no license and scores 85/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is kerf still maintained?
- The repository was last updated yesterday, so kerf is actively maintained.
Skill content
View source on GitHubKerf
The non-destructive video editor your AI can drive.
Kerf is a cross-platform desktop editor with an embedded MCP server, so an LLM (Claude, or any MCP client) can analyze your footage and assemble the cut through the same engine the GUI uses, on the same live project — and it can actually see the frames it's editing. Nothing is re-encoded until you export.
kerf website · download · FAQ
</div>A kerf is the slit a saw leaves behind — the cut itself. Kerf edits non-destructively: your timeline is an edit list over the original media, and nothing is re-encoded until you hit export.
Why Kerf is different
Plenty of tools bolt a chatbot onto a video editor. Kerf inverts that: the editor is an API, exposed twice over one shared project — as the GUI you click, and as Model Context Protocol tools an agent calls. So the agent isn't scripting a black box; it drives the identical engine — and its edits are staged for review, so they never move the cut you are looking at.
- 🎬 The agent has eyes.
get_frame,skim_asset(a contact-sheet montage for finding the good parts),preview_timeline(the composited cut at a given time) andskim_timeline(a contact sheet of the whole cut) return real images the model sees — so it can find the right moment and confirm the cut, not guess from metadata. - 🧠 Same engine, same project. The MCP server and the webview hold the same
Projectbehind one lock — no import/export round-trip, no second copy of the truth, and the agent previews its own work through the exact graph that renders your export. - 🤝 You stay in control. Agent edits stage — they build a proposal, not your cut. The review card shows a real diff (added / cut / moved / retrimmed), you can watch the proposed timeline play, and Apply lands it as one revertible revision. Work is handed back through a persisted task queue, so an agent is safe to leave running on someone's edit.
- ✂️ Truly non-destructive. Everything is an EDL over source ranges. Cuts, effects,
and keyframes are just data until you export a single
filter_complex. - 📦 Runs without FFmpeg dev libraries. The engine drives the
ffmpeg/ffprobebinaries, so probe, analysis, frames, waveforms, and export all work on a plain install — the in-process libav path is optional.
Features
| | |
| --- | --- |
| Multi-track NLE | Bespoke timeline: video/audio/text tracks, free clip positioning with gaps, drag-to-move across tracks, edge-drag trim, razor split, roll / slip / slide trim tools, trim-to-playhead, ripple delete, markers, mute/solo/lock, snapping to edges / playhead / beats. |
| Real playback | Not a slideshow — one long-lived FFmpeg streams the composited cut (every track, effect, keyframe and overlay) paced against the audio clock, with J/K/L shuttle audible both ways and audible Web-Audio scrub. |
| Delivery frames | 16:9 / 9:16 / 1:1 / 4:5 is a property of the project, so preview, scrub and export all render the same frame — with platform safe-area guides and cover-crop instead of letterboxing. |
| Smart crop | Reshaping 16:9 to 9:16 throws away most of one axis. smart_crop samples where each shot's content actually is (edge detail + motion, no model to ship) and writes the crop that keeps it, per clip — an ordinary transform the sliders can still override. |
| Ready to publish? | platform_check judges the cut against Reels / Shorts / TikTok / Instagram / YouTube — length, shape, resolution, captions — and tells a hard limit (rejected) apart from a reach limit (accepted, then buried). Advisory only; nothing blocks an export. review_cut lints the editing itself — flash frames, cuts inside a word, sound cut into sound, jump cuts, captions a later edit left behind, black gaps — each with the tool that fixes it. Cover frames save at the full delivery resolution. |
| Analysis & speech | Silence and scene detection, an onset/tempo grid, EBU R128 loudness and speech-vs-music from one decode — plus transcription in every build, via FFmpeg's whisper filter or in-process whisper.cpp (models fetched on first use). |
| Cut to the beat | The tempo grid is drawn on the ruler and snapped to while dragging, and snap_to_beats ripples a whole track's cuts onto it, retrimming each clip at its outgoing edge. |
| Stabilization | Shaky hand-held footage made steady, per clip: vid.stab measures the camera once (a background analysis of the original, kept beside it), and the preview, every still, a proxy and the export move each source frame by the same correction — speed, reverse and ramps keep it. FFmpeg's deshake steps in where the FFmpeg has no vid.stab. |
| Effects, color & looks | Per-clip video (blur/sharpen/hue/negate/vignette/chromakey) and audio (highpass/lowpass/EQ/compressor/gate/denoise) chains, transform + color grade, and one-click Punchy / Warm / Cool / Faded / B&W looks. |
| Transitions & masks | Eleven transitions — crossfade, dip to black / white, slide and push in four directions — that borrow the outgoing clip's handle and degrade to a hard cut when there is none. Masks cut a clip to a feathered rectangle or ellipse so a lower track shows through: a blurred face is a duplicated shot above, blurred and masked. Blend modes — multiply, screen, overlay, hard light, add, darken, lighten, difference, exclusion — composite a clip onto the tracks below instead of over them: a light leak screened onto the shot, a texture multiplied into it. |
| Keyframe animation | Animated zoom, position, rotation and opacity via keyframes — linear, hold, ease in / out or a custom curve per key — the Transform panel auto-keyframes at the playhead. Any one number can carry keys of its own: a colour that warms over a shot, an opacity ramp that starts later than the zoom, the clip's volume swelling mid-clip. |
| 360 reframing | Cut a normal, flat shot out of equirect or Insta360 dual-fisheye footage: aim a virtual camera (yaw / pitch / roll / FOV) and keyframe the pan. An Insta360 lens pair imports as one 360 asset — Kerf stitches the two capture files into an equirect sphere once and caches it. Spherical sources are detected on import; anything unflagged can be marked by hand. |
| Titles & captions | Text overlays / lower-thirds with their own keyframes, Title / Lower-third / Caption style presets, the system font list, and SRT export. Captions follow the cut: the transcript is projected through the clips that actually show its footage (trim / speed / reverse honored), so words you cut out get no caption — in a subtitle Lines style or the social Word punch style, one large word on the beat of the speech, fitted to the delivery frame. |
| Edit by transcript | The transcript is an editing surface: lines resolve to the clip carrying them, a click seeks, and × cuts that sentence out of the timeline and ripples the gap closed. |
| Smart mixing | A mixer strip per audible track (fader + pan, mirrored exactly in preview), per-track ducking (music dips under dialogue via sidechain), a master bus (fader + safety limiter), single-pass loudnorm to −14 LUFS on export, and measured levels (LUFS / true peak, per track and master) an agent can check before it calls a cut finished. |
| GPU-accelerated export | NVENC / QSV / VideoToolbox / AMF are verified with a real test encode before being offered, hardware decode falls back to software on its own, and range export renders just the region between your in/out marks. |
| Agent workflow | The full MCP tool set (below), staged edits with a reviewable diff, a persisted task queue, and a fully revertible edit history attributed to user / agent / system. |
| Plays nicely with your machine | One heavy FFmpeg job at a time, at a CPU budget you set (Background / Balanced / Full speed in Settings, or KERF_CPU_PERCENT) and below-normal priority — an agent analyzing eight sources no longer takes the desktop down. Every toast lands in a notification center, so a failure is still readable after it fades. |
| Auto-update | The app updates itself from its own GitHub releases; a bundle only installs if its minisign signature verifies against the embedded public key. |
Quickstart
Download a build
The Kerf site has a direct download
button for your platform, or grab the installer from the
latest release — .dmg
(macOS, Apple silicon + Intel), .AppImage/.deb/.rpm (Linux, x86_64 + arm64), or
.exe/.msi (Windows). macOS and Linux builds expect a system FFmpeg on PATH; the
Windows build bundles it. The macOS build is unsigned: on macOS 15 and later clear the
quarantine flag once with xattr -dr com.apple.quarantine /Applications/Kerf.app
(Windows SmartScreen asks once too — More info → Run anyway). Every installer
carries a build-provenance attestation: gh attestation verify <file> --repo OrellBuehler/kerf.
Once installed, Kerf updates itself from its own releases.
Or build from source
git clone https://github.com/OrellBuehler/kerf
cd kerf/frontend && bun install && cd ..
cargo run -p kerf-app # launches the app (runs the frontend dev server first)
You need Rust ≥ 1.95, Bun ≥ 1.2, the platform WebView/GTK libraries for Tauri,
and (for the default ffmpeg feature) the FFmpeg development libraries + clang. See
Building for per-platform setup and the no-FFmpeg path.
Driving Kerf from an LLM
The desktop app hosts the MCP server over streamable HTTP at 127.0.0.1:7777/mcp
(change it in Settings › Agent, or with KERF_MCP_ADDR). Every request must carry the
bearer token Kerf made on first start; Settings › Agent shows it with the exact commands
below filled in. Start the app, then point an MCP client at it — e.g. with Claude Code:
claude mcp add --transport http kerf http://127.0.0.1:7777/mcp \
--header "Authorization: Bearer <token>"
…or in any MCP client config that supports HTTP servers:
{
"mcpServers": {
"kerf": {
"type": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Every tool is listed by default. A client that loads every tool's schema up front can ask for fewer by
adding tool sets to the URL — http://127.0.0.1:7777/mcp?tools=core,titles (sets: core, analysis,
clips, keyframes, titles, audio, music, delivery, tasks, project; Settings › Agent builds
the command for you). The server also offers workflow prompts — rough_cut_from_transcript,
podcast_cleanup, social_reel, music_bed, deliver — which Claude Code shows as `/mcp__kerf__<na
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
106.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
claude-mem
104.2kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Understand-Anything
88.8kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
78.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
