Skip to content
Msh4iPublic

About

Free, open-source desktop video editor with CapCut-style effects, filters and beat-synced editing. GPU-rendered (Rust + WebGPU), local AI, built on OpenCut.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,571 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ccut: the open-source video editor

A free, open-source, desktop-first video editor with CapCut-style effects, filters and beat-synced editing.
It renders on your GPU and keeps your footage on your machine.

License: MIT Platform: Linux, Windows Rust + WebGPU Next.js Electron Built on OpenCut

Download · Features · Getting started · How it works · Roadmap · Credits


The Ccut editor: a Neon night filter on an effect track over two video tracks and a beat, rendered live in the preview

Note

Ccut is built on OpenCut. The timeline, the editor's core and the Rust/WebAssembly compositor all started there. Ccut adds a desktop app and a long list of features on top of that foundation, and the credits explain why this project would not exist without them.


✨ Why Ccut

Most "free" editors give you a watermark, a subscription or an upload to someone else's server. Ccut aims for the CapCut workflow you already know (drop in clips, add a look, cut to the beat, export) as a native desktop app, with the source open for anyone to read, change and build.

  • Your files stay with you. Projects are stored locally. Captions run Whisper locally, and stem separation and smart cutout run as local models. None of them uploads your footage.
  • GPU-rendered preview and export. A Rust compositor built on wgpu, compiled to WebAssembly, draws every frame with WebGPU shaders.
  • Built to be scripted. A built-in MCP server lets an AI assistant you choose read and edit your timeline.

🎬 Features

🎛️ Video effects

Eleven effects that move with time: Shake, Punch zoom, Flash, Strobe, Glitch, Blur pulse, Vignette pulse, Film grain, Light leak, Rotate wobble and Blur. Put one on a clip, or on an effect track to cover everything below it. Every tile in the panel loops a live preview when you hover over it.

🎨 Filters

Nine one-slider looks: Cinematic, Cinematic light, Warm, Cool, B&W film, Vintage, Paper, Pencil sketch and Neon night. Each runs as GPU passes (colour grade, Sobel-edge sketch, vignette, film grain) and has one Intensity slider, like CapCut.
The Effects panel The Filters panel

🥁 Auto hits: cut to the beat

One button finds the hits in your music and marks them on the timeline. Ccut first separates the song into stems (drums, bass, vocals, other) with a local Demucs model, so it can follow the kick and snare, a steady beat grid, or the singer's accents. You can also bring your own stem file.

📈 Keyframes with real curves

Animate position, scale, rotation, opacity and effect settings, then shape each segment: Linear, Ease in, Ease out, In-out, Smooth, Pop, Hold, or your own bezier curve, which you can save and reuse. One-click animation tiles add a Shake, Float, Swing, Pan or a volume Fade or Duck.
The Auto hits menu: Drum hits, Steady beat, Song and vocals The keyframe curve menu

And much more

📌 Stick to scene After Effects-style camera tracking: select a text, sticker or image over a video and press one button. Ccut tracks the shot's features (Lucas-Kanade, RANSAC, homography) so the element moves, scales and rotates with the scene.
🧊 3D layers Place layers in perspective with a virtual camera.
✂️ Smart cutout & chroma key Remove a background with a local U²-Net model (downloaded once and checked against a fixed SHA-256), key out a colour, or paint a mask with the brush.
💬 Local captions Speech-to-text with Whisper in 99 languages, running on your machine. SRT and ASS import.
✍️ In and out animations Fade, Zoom, Pop, slide in from an edge, Typewriter and Word reveal.
🤖 AI control over MCP A token-protected local MCP server with 18 tools (read the project, split, move, set properties, add keyframes, seek, play). Connect Claude Code, Codex or any MCP client.
🔗 Import from a link Paste a link and Ccut downloads and imports the media with yt-dlp (desktop app). Only use it for content you have the rights to.
😀 Stickers, icons & fonts 1,500+ Fluent emoji, the Phosphor icon set and 80 bundled font families, all available offline.
🎞️ Everything a timeline needs Multi-track editing, ripple and snapping, split, speed and retime, masks, scenes, bookmarks, and MP4/WebM export.

📥 Download

Windows: grab the installer (Ccut.Setup.exe) or the portable zip from the latest release. It is a pre-release that is not yet code-signed, so SmartScreen may ask you to click More info → Run anyway.

Linux: build the AppImage from source (see below). Prebuilt Linux downloads are coming.

🚀 Getting started

Prerequisites

  • Bun 1.2.18 (the version pinned in package.json)
  • Node.js 20 or newer (used by the desktop build scripts)
  • Optional: Rust with the wasm32-unknown-unknown target and wasm-pack, but only if you change the compositor. A prebuilt copy ships in packages/opencut-wasm.

Run the editor in your browser

git clone https://github.com/Msh4i/ccut.git
cd ccut
bun install
cp apps/web/.env.example apps/web/.env.local   # placeholder values are fine for local editing
bun run dev:web

Then open http://localhost:3000. You need a browser with WebGPU (a recent Chrome, Edge or Brave).

Build the desktop app

cd apps/electron
node bundle.js                                  # builds the web app as a standalone server
../../node_modules/.bin/electron-builder --linux AppImage
# or: --win   (NSIS installer + zip)

The desktop app adds the features that need your file system or local models: Auto hits stem separation, smart cutout, import from a link and the MCP server.

Checks

bun run qa        # TypeScript, unit tests and ESLint

🧠 How it works

flowchart LR
    subgraph Desktop["Electron shell (apps/electron)"]
        IPC["IPC bridges<br/>stems · models · link import · MCP"]
    end
    subgraph Web["Editor UI (apps/web · Next.js + React)"]
        TL["Timeline, commands<br/>& keyframes"]
        FX["Effect & filter<br/>definitions (TS)"]
    end
    subgraph Rust["Compositor (rust/ → WebAssembly)"]
        C["wgpu compositor"]
        S["WGSL effect shaders"]
    end
    TL --> C
    FX -- "passes + uniforms" --> S
    S --> C
    C -- WebGPU --> P["Preview & export"]
    IPC <--> Web
    AI["AI assistant<br/>(MCP client)"] <--> IPC
Loading
Folder What lives there
apps/web The editor: Next.js app, timeline, panels, effects, tracking, captions
apps/electron The desktop shell: window, IPC, stem separator, model downloads, MCP server, link import
rust/ Compositor, effects, masks and time crates (wgpu), built to WebAssembly
packages/opencut-wasm The prebuilt WebAssembly package the editor imports

Effects and filters are defined in TypeScript as a list of GPU passes. Each pass names a WGSL shader in the Rust crate and gives it uniforms, including the clip's local time, so time-based effects stay frame-exact during export. Contract tests parse both sides so the TypeScript definitions and the Rust shader table cannot drift apart.

🗺️ Roadmap

  • Time-based video effects with live previews
  • Filters with a single Intensity slider
  • Stem-aware Auto hits
  • Camera tracking ("Stick to scene")
  • Transitions between clips
  • LUT-based filters and a bloom pass
  • Keep effects centred on picture-in-picture clips
  • macOS builds

Ideas and bug reports are welcome in Issues.

❤️ Standing on the shoulders of OpenCut

Ccut would not exist without OpenCut.

The OpenCut team and its contributors built what this project grew from: a privacy-first, open-source video editor with a real multi-track timeline, a clean command system, and a Rust/WebAssembly compositor that renders on the GPU. Every feature listed above was built on their architecture, their careful engineering and their decision to share it under the MIT license.

Their commit history is kept here on purpose. Every OpenCut contributor's work is part of this repository, and they deserve the credit for it. If you like Ccut, go and ⭐ OpenCut too: they are now working on a full rewrite.

Thank you, OpenCut. 🙏

Also thanks to

Demucs (stem separation) · Whisper and Transformers.js (captions) · U²-Net and rembg (smart cutout) · ONNX Runtime · wgpu · yt-dlp · Fluent Emoji · Phosphor Icons · Fontsource · Next.js · Electron

The full list of bundled material, with each license, is in THIRD_PARTY_NOTICES.md.

📄 License

Ccut is released under the MIT License. It keeps OpenCut's copyright notice, as the license requires.

Ccut is an independent project. It is not affiliated with or endorsed by CapCut, ByteDance or the OpenCut team. "CapCut" is mentioned only to describe the editing style.

Made with care by MsHai · 🇹🇷

About

Free, open-source desktop video editor with CapCut-style effects, filters and beat-synced editing. GPU-rendered (Rust + WebGPU), local AI, built on OpenCut.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages