AI video editor that takes natural language instructions and edits videos locally.
Project description
CutAI
AI video editor with natural language instructions. Local-first, open-source.
"Film it. Describe the edit. Done."
CutAI is an open-source, local-first AI video editor. Give it a video and a sentence โ it analyzes scenes, generates an edit plan, applies practical edits like cuts / subtitles / grading, and renders the result on your machine.
๐ v0.2.0 highlights
- ๐ค Agent Mode โ goal-driven autonomous editing with self-evaluation loop
- ๐ MCP Server โ connect CutAI to Claude Code, Cursor, and other AI agents
- ๐ EDITSTYLE.md โ portable editing style format (like DESIGN.md for video)
- ๐จ 7 style presets โ cinematic, vlog, cooking, tech, music, podcast, shorts
- โก Performance โ MLX Whisper (Apple Silicon), VideoToolbox hwaccel, analysis cache
Current status
CutAI is in an ambitious but practical alpha stage.
What is in solid shape right now:
- CLI happy path for
analyze,plan,edit,preview,style-*,highlights, andmulti - local backend server for desktop integration
- desktop upload โ analyze โ edit plan โ render happy path
- default burned-in subtitles in the current render pipeline
- local-first workflow with optional LLM planning
What is not fully polished yet:
- desktop preview is currently frame-scrubbing oriented, not full playback
- desktop UX still focuses on the core MVP flow rather than exposing every CLI capability
- release packaging/signing/notarization now has documented helper scripts, but still needs one successful credential-backed machine validation run before external alpha distribution
- edge-case coverage for unusual codecs, long videos, and broader creator workflows is still growing
If you want the most complete experience today, start with the CLI. If you want the simplest workflow for demoing the product direction, try the desktop alpha.
$ cutai edit vlog.mp4 -i "remove boring parts, add subtitles, make it warm and cinematic"
๐ฌ Analyzing vlog.mp4...
โ
Detected scenes
โ
Transcribed speech
โ
Found low-value segments
๐ Edit Plan:
โข Remove dead air and low-value beats
โข Add subtitles
โข Apply warm color grade
๐ฌ Rendering โ output/vlog_edited.mp4
โ
Done
Features
Core editing
- Natural language instructions โ describe edits in English or Korean
- Scene detection โ content-aware scene boundary detection
- Silence / low-value trimming โ remove dead air and weak sections
- Auto subtitles โ Whisper-powered transcription and subtitle generation
- Color grading โ warm / bright / cool / cinematic style adjustments
- BGM mixing โ add background music when requested
- Transitions and speed controls โ available in the editing pipeline
Edit Style Transfer
- Style extraction โ turn a reference video's editing patterns into portable Edit DNA
- Style application โ apply a saved style file or preset to your own video
- Style learning โ learn a style from multiple reference videos
- Built-in presets โ includes starter presets like
cinematicandvlog-casual
Smart highlights
- Engagement scoring โ rank scenes by interest and energy
- Highlight generation โ produce short reels from the strongest moments
- Duration targeting โ fit output to a requested duration
Local-first workflow
- No required cloud upload โ editing runs on your machine
- Rule-based planning works offline โ useful even without an API key
- Optional LLM planning โ richer instruction handling when a model is configured
Quick start
Prerequisites
# macOS
brew install ffmpeg
# Ubuntu / Debian
sudo apt-get update && sudo apt-get install -y ffmpeg
# Windows (via Chocolatey)
choco install ffmpeg
Installation
pip install cutai
cutai --help
Your first edit
# Basic edit โ remove silence and add subtitles
cutai edit video.mp4 -i "remove silence, add subtitles"
# Apply a warmer look
cutai edit vlog.mp4 -i "์๋ง ์ถ๊ฐ, ๋ฐ๋ปํ๊ณ ์๋ค๋งํฑํ๊ฒ"
# Generate a plan without rendering
cutai plan video.mp4 -i "remove boring parts and add subtitles"
# Quick low-res preview
cutai preview video.mp4 -i "remove boring parts"
Desktop app (alpha)
A Tauri desktop app lives in desktop/ and is aimed at the practical non-terminal flow:
- launch the native app
- auto-start the local backend in the native shell
- upload a clip
- analyze it
- inspect the generated edit plan
- choose a style preset as planning context for the next plan/refinement
- optionally use
Apply nowto turn a preset into an immediate starting plan - render locally
The current style-aware planning bridge is intentionally explicit:
- selecting a style preset in the desktop UI adds planning context for the next plan request
Apply nowis a separate action that generates a plan immediately- refinement prompts keep using the selected preset as context until you clear it
- the app still runs through the same local backend on your machine; it is not pretending there is a hidden cloud editing step
- desktop release packaging now explicitly gates non-portable backend bundles and only becomes self-contained for FFmpeg/FFprobe when those binaries are bundled during the desktop backend step
Desktop development
cd desktop
pnpm install
pnpm tauri dev
Browser dev mode
If you run only the frontend with pnpm dev, backend auto-start is not available. Start the backend manually:
cutai server --host 127.0.0.1 --port 18910
See desktop/README.md for the desktop-specific guide, desktop/RELEASE_MACOS.md for the macOS signing/notarization release path, and desktop/QA_CHECKLIST.md for a practical final-pass validation checklist.
Commands
| Command | Description |
|---|---|
cutai edit |
Full pipeline: analyze โ plan โ render |
cutai analyze |
Analyze video (scenes, transcript, quality) |
cutai plan |
Generate an edit plan without rendering |
cutai preview |
Generate a quick low-resolution preview |
cutai chat |
Interactive chat-based editing session |
cutai highlights |
Auto-generate a highlight reel |
cutai engagement |
Show per-scene engagement scores |
cutai multi |
Combine and edit multiple video files |
cutai style-extract |
Extract Edit DNA from a reference video |
cutai style-apply |
Apply an Edit DNA style to a video |
cutai style-learn |
Learn style from multiple reference videos |
cutai style-show |
Display an Edit DNA file |
cutai prefs |
View or reset learned preferences |
cutai agent |
๐ค Goal-driven autonomous editing agent |
cutai mcp-server |
๐ MCP Server for AI coding agent integration |
cutai style-convert |
Convert between EDITSTYLE.md and YAML |
cutai style-validate |
Validate an EDITSTYLE.md file |
cutai server |
Start the API server used by the desktop app |
Style workflow
# 1. Extract style from a reference video
cutai style-extract reference.mp4 -o style.yaml
# 2. Inspect the extracted DNA
cutai style-show style.yaml
# 3. Apply it during editing
cutai edit myvideo.mp4 --style style.yaml
# Or use a built-in preset
cutai edit myvideo.mp4 --style cinematic
Edit DNA captures practical editing preferences such as pacing, transitions, visual tone, audio choices, and subtitle defaults in a portable YAML file.
Agent Mode
Let the AI handle the full editing workflow autonomously:
# Single video โ agent analyzes, plans, renders, evaluates, and iterates
cutai agent video.mp4 --goal "warm casual vlog with subtitles, 5 minutes max"
# Multiple clips โ agent selects the best parts
cutai agent clip1.mp4 clip2.mp4 --goal "best moments reel, 3 minutes" -n 5
# With a style preset
cutai agent footage/ --goal "cinematic travel video" --editstyle EDITSTYLE.md
EDITSTYLE.md
A portable, markdown-based format for video editing styles โ like DESIGN.md but for video editing.
# My Vlog Style
> Source: custom
> CutAI EDITSTYLE v1
## Rhythm
- **Pacing**: fast (12 cuts/min)
- **Silence tolerance**: 0.8s
## Visual
- **Color temperature**: warm
## Subtitles
- **Enabled**: yes
- **Size**: large
Drop it in your project root โ CutAI auto-detects and follows your style.
Browse presets: awesome-editstyles/
# Convert between formats
cutai style-convert style.yaml --to md
cutai style-validate EDITSTYLE.md
โ Full spec
MCP Server
Connect CutAI to AI coding agents (Claude Code, Cursor, Gemini CLI):
{
"mcpServers": {
"cutai": {
"command": "cutai",
"args": ["mcp-server"]
}
}
}
8 tools exposed: analyze, plan, edit, agent, style-extract, highlights, engagement, editstyle-parse.
Configuration
CutAI stores config at ~/.cutai/config.yaml.
Common environment variables:
| Variable | Description |
|---|---|
OPENAI_API_KEY |
Enables richer LLM-based planning |
CUTAI_WHISPER_MODEL |
Default Whisper model size |
CUTAI_LLM |
Default LLM model |
CUTAI_OUTPUT_DIR |
Default output directory |
CUTAI_FFMPEG_PATH |
Custom FFmpeg binary path |
Local-only mode
CutAI works without an API key using rule-based planning for common instructions like:
- remove silence
- add subtitles
- make it warm / cinematic
- trim boring parts
For more open-ended planning, configure an API-backed model or a local LLM setup.
Architecture
Analyzer โ Planner โ Editor / Renderer
โ Style engine โ
โ Highlight / engagement โ
Key modules:
cutai/analyzer/โ scene detection, transcription, quality signals, engagementcutai/planner/โ rule-based + LLM edit planningcutai/editor/โ cutter, subtitles, color, BGM, speed, transitions, render orchestrationcutai/style/โ style extraction / application / learning / YAML IOcutai/server.pyโ backend API used by the desktop appdesktop/โ Tauri + React desktop shell
Known limitations
These are the most relevant current gaps for contributors and testers:
- desktop preview is not a full playback/timeline experience yet
- some advanced CLI capabilities are not exposed in desktop UI yet
- performance varies heavily with source length, Whisper model, and hardware
- unusual codecs / malformed inputs still need broader robustness testing
- GPU acceleration and plugin-style extensibility are not finished
Contributing
We welcome contributions. See CONTRIBUTING.md.
git clone https://github.com/mindsurf0176-ui/cutai.git
cd cutai
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v
Helpful contribution areas:
- better QA coverage for desktop and render edge cases
- more style presets and example projects
- documentation and onboarding improvements
- robustness fixes for analysis / render failures
Roadmap
- Core editing pipeline
- Edit Style Transfer primitives
- Highlight / engagement pipeline
- Desktop happy-path backend integration
- GPU acceleration (CUDA / Metal)
- Web UI
- Plugin system for custom operations
- Community style preset marketplace
- Real-time preview during chat
- Broader desktop polish and release packaging
License
MIT โ free for personal and commercial use.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cutai-0.2.0.tar.gz.
File metadata
- Download URL: cutai-0.2.0.tar.gz
- Upload date:
- Size: 124.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1813488cfb2fdeaecd1542d46755edee5492a81d45da01676bef017d5145761
|
|
| MD5 |
654dfc6b8f1bbfa4b6e94a6e176bfb31
|
|
| BLAKE2b-256 |
11fee34ff6a78eb1dec67a8ac0dfbe7ce8a16f95a193b61fa1783c0877d84996
|
File details
Details for the file cutai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: cutai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 120.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16371a91d20f2331d0cefdc044f74d47025974df5c1b9e63f0cca084502a1ffa
|
|
| MD5 |
273e43baebc0117cf9aa54d816d4cea5
|
|
| BLAKE2b-256 |
0067701a2de27c9210bc39819ea8fc69093c4e572894f3a6d958e8de811bbd93
|