~/codigoagente
Open source tools

Concat: the open source CapCut alternative that Claude Code can drive over MCP

Concat is a free, open source video editor that pitches itself as a CapCut alternative for Windows, macOS, Linux, Android and iOS. It covers what most people open CapCut for (auto-captions, text to speech, background removal, keyframes, effects and 4K export) with no watermark, no account, no subscription and no uploads: everything runs on your machine on a native Rust engine.

What makes it relevant to this blog is something else: it ships a built-in MCP server (concat --mcp), so Claude Code or any other AI agent can create projects, cut, add titles and export with the same edit commands the window uses. In this review we read its source (version 0.2.8) to explain what it really does, how it is built, where its limits are and how to plug it into your agent.

Concat video editor in dark mode: media bin, 4K preview with a caption, typography inspector and a timeline with text, effect, video and generated speech tracks
The Concat window: media, preview, inspector and multi-track timeline · Official project screenshot (AGPL-3.0)

What Concat is and who makes it

  • Repository: github.com/jub0t/Concat
  • Website and downloads: concatenate.pages.dev
  • Version reviewed: 0.2.8 (tagged October 18, 2026), plus main up to October 28. The first public build, 0.1.0-alpha.1, shipped on August 27, 2026: the project is two months old.
  • License: AGPL-3.0-or-later. The name and logo are a separate trademark (more below).
  • Author: Jareer Abdullah (@jub0t), who holds the copyright and the marks. Outside contributions go through a contributor license agreement (CLA).
  • Status: beta. In the README's own words: "it works, and it still has edges".
  • Interface languages: 26.

A note on the license

We usually cover MIT projects; Concat is not one. The AGPL-3.0 lets you use it for free, including for commercial work: the videos you export are yours and the license does not touch them. Obligations only kick in if you modify the code and distribute it, or offer that modified version to others over a network: then you must publish your changes under the same license. Editing your own videos with the app as shipped requires nothing from you.

There is a second limit on top of the license. Per TRADEMARK.md, if you distribute a modified build you must give it your own name and icon. Writing about Concat, packaging it unmodified for a Linux distribution or forking it is fine; shipping a modified Concat under the Concat name is not.

What it does: the feature set in 0.2.8

AreaWhat you get
CuttingSplit, trim, ripple delete, merge, freeze frame, speed, optional magnetic timeline
TracksMulti-track and multiple timelines per project, overlays and picture-in-picture, blend modes (screen, add, multiply...), crop and flips
AnimationKeyframes for position, scale, rotation, opacity, volume and effect parameters, with a curve editor
Effects127 packages in the repo across color filters, transitions and audio effects (VHS, glitch, film grain, teal-orange, chroma key, telephone, robot...). The README advertises "100 effects, filters and transitions" rendered on the GPU
TitlesFonts, stroke, shadow, background plate and starter presets
AudioOne-switch voice cleanup (denoise, enhance, loudness) plus voice effects
Local AIWhisper auto-captions, text to speech, voice cloning, background removal for people, objects or a painted mask
ExportH.264, HEVC and AV1, up to 4K 60 fps and 10-bit color
AutomationMCP server for agents, JSON-RPC API over a socket and, in source builds, gRPC and a command-line tool

Keyboard shortcuts are what you would expect from a pro editor and can be rebound under Settings > Shortcuts: Ctrl + B splits at the playhead, Q and W delete left or right of the playhead, F freezes the frame and Shift + Delete ripple-deletes.

How it is built

Concat is not a web UI wrapped around an FFmpeg subprocess. It is a Rust workspace (edition 2024, Rust 1.93 or newer) of 17 crates split by responsibility, and the window is just one client of the engine.

Concat architecture diagram: the editor window, an MCP agent, JSON-RPC scripts and the CLI all call concat-api, which uses concat-host and the media, render, effects, export, speech and vision crates on top of concat-core
Four front doors into the same engine, from the repository's `src/README.md` · codigoagente

The parts that matter:

  • concat-core: time, frames and the timeline model. Depends on nothing but std.
  • concat-media: reading and writing files. It links FFmpeg 7 as a library (nothing is spawned at run time) and is the only crate that knows FFmpeg exists.
  • concat-render: composites each frame on the GPU with wgpu. It shares a device with the window's Slint renderer, so a preview frame never leaves the GPU.
  • concat-effects: each effect is a folder with a TOML manifest plus a WGSL shader for pictures or an FFmpeg filter chain for sound.
  • concat-speech: transcription with whisper.cpp compiled in, and text to speech with Kokoro through sherpa-onnx.
  • concat-vision: the cutout models on ONNX Runtime, using each platform's accelerator: CoreML on macOS and iOS, DirectML on Windows, NNAPI on Android.
  • concat-api: one JSON request dispatcher. The window, the MCP server, the JSON-RPC socket and the CLI all talk to it, so any edit you make with the mouse a script can make too, with the same refusals and the same undo.

Projects are folders with a concat.json, and every process that opens one locks it with concat.lock so the window and an agent cannot clobber each other.

The AI models: what downloads and from where

The installers carry no model weights. Each model downloads the first time a feature needs it, from Settings, and works offline afterwards. models/manifest.toml pins every model to a SHA-256 digest (a download with no digest to check is refused) and serves it from a mirror release on the project's own repo, with the original upstream as fallback:

FeatureModelApprox. size
CaptionsWhisper `tiny`, `base` or `small` (multilingual or English-only)depends on the size you pick
Text to speechKokoro v1.0, compact int8 or full precision132 MB / 350 MB
Voice cloningPocket TTS (Kyutai, 100M)98 MB
"Studio" voiceChatterbox Turbo (Resemble AI)about 1 GB
Background removalRobustVideoMatting (people), ISNet (objects), SlimSAM (brush)various
UpscalingReal-ESRGAN general x4v3—

According to its code signing policy, the app only reaches the network when you ask: checking for updates, downloading a model, or if you turn on the remote API. There is no telemetry.

Language limits worth knowing

A detail the README does not spell out, which we found in concat-speech/src/tts.rs:

  • Auto-captions work in many languages as long as you pick a multilingual Whisper model (tiny, base or small, not the .en variants). The largest model offered is small: fine for clean audio, but with noise or strong accents you will fix more lines than you would with medium or large, which are not on the list.
  • Text to speech only speaks English and Chinese. Kokoro bundles 53 voices in nine languages, but the code only lists English and Chinese because, as the author notes in a comment, its lexicons only cover those two well. Pocket TTS and Chatterbox, the cloning models, are English-only.

If you need narration in another language, generate the audio elsewhere and drop it on the timeline. We reviewed VoiceStudio, an open source voice cloner you can use for that.

Installing Concat

Two ways in: the project website, which picks the right build for your system, or GitHub Releases, with every installer and its checksums.

SystemFormatHeads-up
Windows x86_64`.exe` setup and `.msi`Unsigned: SmartScreen warns, click **More info › Run anyway**. With Smart App Control on, Windows refuses to run it. ARM builds are paused
macOS (Intel and Apple silicon)`.app`Also unsigned. If macOS will not open it: `xattr -dr com.apple.quarantine /Applications/Concat.app`
Linux x86_64 and ARM`.deb`, `.rpm`, `.AppImage`, Arch package, community Flatpak—
AndroidAPKPhones and tablets
iOS / iPadOSSideloadedNot on the App Store

Unsigned Windows binaries are normal for a two-month-old project, but keep it in mind on managed company machines. The signing policy (CODE_SIGNING.md) states that every build comes from GitHub Actions off a tag, never from someone's laptop, and you can verify downloads against the release checksums.

Building from source

You need Rust 1.93 or newer, the FFmpeg 7 development libraries, cmake and a C++ compiler. The Cargo workspace lives in src/, not the repo root:

terminalsh
git clone https://github.com/jub0t/Concat.git
cd Concat/src
cargo run -p concat                    # the editor, debug build
cargo build --profile app -p concat    # the shipping binary (fat LTO, stripped)

On macOS, brew install ffmpeg is enough. On Windows, and on Linux distros whose FFmpeg is older than 7, grab a BtbN shared build and point FFMPEG_DIR at it. On Nix, nix run at the repo root builds everything with pinned dependencies.

Driving Concat from Claude Code over MCP

This is what sets it apart from CapCut and from most free editors. The MCP server lives inside the same binary, so there is nothing extra to install. With Claude Code on macOS:

terminalsh
claude mcp add concat -- /Applications/Concat.app/Contents/MacOS/concat --mcp

On Windows the path is %LOCALAPPDATA%\Programs\Concat\concat.exe (per-user install) or C:\Program Files\Concat\concat.exe (all users or the .msi); on Linux, /usr/bin/concat or the .AppImage file itself. For Claude Desktop and most other clients the config looks like this:

claude_desktop_config.jsonjson
{
  "mcpServers": {
    "concat": {
      "command": "/Applications/Concat.app/Contents/MacOS/concat",
      "args": ["--mcp"]
    }
  }
}

What the agent can do

We counted 45 tools in crates/concat-mcp/src/tools.rs:

AreaTools
Projects`project_create`, `project_open`, `project_save`, `project_list`, `project_set_video`...
Reading`timeline_read` (compact view of lanes and clips), `project_get`, `concat_version`
Media`media_probe`, `media_import`
Editing`clip_add`, `clips_add_sequence`, `clip_trim`, `clips_split`, `clips_move`, `clip_speed`, `track_add`...
Picture`clip_mask`, `clip_stabilize`, `timeline_background`
Titles and captions`title_add`, `title_style_words`, `captions_add`
Keyframes and effects`keyframe_set`, `effects_list`, `effect_layer_add`, `effect_key_set`
Export`export_start`, `export_wait` (with progress), `export_status`, `export_cancel`
Looking`preview_frame`: returns the composited frame as an image so the agent can check its own work

Argument schemas are generated from the Concat API's own types, so the agent gets the same limits the engine enforces. Times are in seconds, a keyframe's position is a fraction of its clip (0 to 1) and sizes are fractions of the frame. Edits stay in memory until project_save, just like in the window.

A realistic task for Claude Code once the server is connected:

Create a vertical 1080x1920 project in ~/Videos/reel-demo, import ~/Videos/raw/interview.mp4, remove silences longer than one second, add auto-captions with the key words in yellow, apply the teal-orange filter, check three frames with preview_frame and export to ~/Videos/reel-demo.mp4 as H.264.

Two modes and their safety rules

concat --mcp runs one of two ways, and concat_version tells you which:

  • Through the window (--mcp window): with Concat open and Settings > Automation > Scripts and apps on, the window writes its server address and token to automation.json and the agent goes through it. This is the safer mode while you edit: the agent's exports take turns with yours and it cannot save over the project on your screen.
  • On its own (--mcp headless): with no window open, the MCP server runs the engine itself.

Either way the agent only writes under your home folder; to allow other paths in headless mode, list them in CONCAT_MCP_ROOTS. And the agent works on projects of its own: live editing of the project open in the window is planned in issue #337.

The JSON-RPC socket API requires a token as the first line of every connection, loopback included, but it does not encrypt traffic. If you bind it off loopback, put it behind something that terminates TLS.

Concat vs CapCut

Concat 0.2.8CapCut
PriceFree, no paid tierFree with limits; advanced features and unrestricted export need a subscription
Watermark and accountNeitherAsks you to sign in for several features and cloud
Where your footage is processedOn your machineSome AI features run in the cloud
CodeAGPL-3.0, auditableClosed
PlatformsWindows, macOS, Linux, Android, iOS (sideloaded)Windows, macOS, web, Android, iOS. No Linux
AutomationMCP server, JSON-RPC, CLINo
TTS languagesEnglish and ChineseMany
Templates, music, stickersOwn templates and a sound library, small catalogHuge catalog and TikTok trends
MaturityTwo-month-old betaMature product

Bottom line: Concat wins on privacy, Linux support, cost and, above all, automation. CapCut still wins on template catalog, voices and overall polish.

Who is it for?

  • TikTok, Reels and Shorts creators who want no watermark and no subscription: yes, if you can live with a beta.
  • Linux users: probably the closest thing to CapCut you can run.
  • Teams handling sensitive footage (internal training, interviews, client material): local processing and zero telemetry are the main argument. Sort out the signing question before rolling it out on managed Windows machines.
  • Developers and agencies automating video: the MCP server and JSON-RPC API make "raw footage to reel" pipelines possible without touching the window. If you want to generate video from code, compare it with HyperFrames, which renders MP4 from HTML: HyperFrames animates designs; Concat edits footage.
  • If you need non-English narration or a production-critical workflow, wait or combine it with other tools.

Common errors and warnings

  • "Windows protected your PC": SmartScreen, because the installer is unsigned. More info › Run anyway. With Smart App Control on, there is no way to run it without turning that off.
  • "Concat is damaged and can't be opened" on macOS: Gatekeeper quarantine. Run xattr -dr com.apple.quarantine /Applications/Concat.app.
  • The agent cannot open the project you have in the window: that is the concat.lock. Turn on Settings > Automation > Scripts and apps and use --mcp window, or close the project in the window.
  • The agent cannot save to an external drive: in headless mode it only writes under your home folder. Add the path to CONCAT_MCP_ROOTS (:-separated on macOS and Linux, ; on Windows).
  • cargo run fails with "no such file or directory" when building: you are in the repo root. Cargo commands run from src/.

FAQ

Is Concat really free? Yes. No paid plan, no watermark, no account. It is funded by Patreon donations and a sponsor listed in the README.

Can I use it for commercial videos? Yes. The AGPL governs the program's code, not the videos you export with it.

Does it upload my footage anywhere? No. All processing, captions and cutout included, is local. It only goes online to check for updates, download models, or if you turn on the remote API.

Can it caption non-English video? Yes, with the multilingual Whisper models (up to small). Text to speech, however, is English and Chinese only.

Can I edit video with Claude Code? Yes: claude mcp add concat -- <path to concat> --mcp. The agent creates its own projects, edits, checks frames with preview_frame and exports.

How stable is it? It is a two-month-old beta shipping releases almost weekly. For important work, keep backups of the project folder.

Conclusion

Concat is the open source project that comes closest to CapCut's feature set today, with two things CapCut cannot offer: your footage never leaves your machine, and an AI agent can edit with it over MCP. It still lacks maturity, Windows code signing and voices beyond English and Chinese. To try it, download 0.2.8, cut a short reel, then connect Claude Code and see what it can do with just timeline_read, captions_add and export_wait.

// source code

Repository in this article
The code this article covers is public: browse it, star it or clone it from here.

// implementation

Need this automation running in your business?
Don't spend weeks wiring servers, APIs and agents. Safe Build Labs, the agency that sponsors codigoagente, builds it for you, production-ready.
Fish Speech 3.0 ships Drama 3 and S2-Pro: voice cloning and TTS you can run on your own GPU. Hardware, license and what it costs compared with ElevenLabs.
  • Free alternatives to paid apps
  • Run it on your server
read article
What Speridlabs' Idol is, how it turns one photo into a 3D Gaussian splat, how much GPU it needs, how to install it and which licenses to check first.
  • Design, image and video
  • Free alternatives to paid apps
read article
What Dioramas is: an MIT framework for 3D landing pages in three.js, with a Nano Banana 2 + Meshy 7.1 asset pipeline, a post-processing engine and 20 examples.
  • Design, image and video
  • Step-by-step tutorials
read article