# OpenChatCut

Local-first conversational video editor whose built-in agent and external MCP clients share one set of timeline tools.

An AGPL Electron and web editor with a real multitrack timeline, transcript-driven cuts, captions, WebGL effects, and generation jobs. Codex or Claude Code connect over a Streamable HTTP MCP endpoint, edit an isolated draft, and submit it for approval inside the editor.

Alternative to: Descript, CapCut, Adobe Premiere Pro

- Capabilities: adaptable, operable
- Vertical: video-streaming
- Shape: product
- Form factor: desktop
- Execution model: hybrid
- Provenance: unknown (recorded, never ranked)
- Repo: https://github.com/0xsline/OpenChatCut (AGPL-3.0), 1549 stars, last commit 2026-08-31
- Last activity: 2026-08-31
- Page: apps/0xsline--openchatcut.html
- JSON: apps/0xsline--openchatcut.json

## Use it when

- I edit interviews by deleting words from a transcript and want Claude Code to do the rough cut while I keep undo and the timeline
- I want a CapCut-style editor where my keys stay on my machine and an agent proposes edits I approve

## Gotchas

- AGPL-3.0
- macOS builds are unsigned and not notarized; Gatekeeper will need manual approval
- External MCP sessions cannot generate, export, or delete; those stay in the UI or the built-in agent
- Requires Node 24.x to run from source

## Editions

- Free: Free, open source
  - binary: https://github.com/0xsline/OpenChatCut/releases/latest
  - source: https://github.com/0xsline/OpenChatCut
  - installable: npx skills add 0xsline/OpenChatCut

## Adaptable: make it yours

Effort: config-only (31 things to edit)

Copy .env.example to .env.local and set only the provider keys you use; LLM_PROVIDER picks the default chat model. MEDIA_DIR and AGENT_IMPORT_ROOTS control where media lives and what agents may read. Add or edit agent skills as SKILL.md files under ~/.openchatcut/skills/. Set OPENCHATCUT_MCP_TOKEN before exposing the MCP endpoint.

- Env vars: LLM_PROVIDER, LLM_ANTHROPIC_API_KEY, LLM_ANTHROPIC_MODEL, LLM_OPENAI_API_KEY, LLM_OPENAI_MODEL, LLM_GEMINI_API_KEY, LLM_DEEPSEEK_API_KEY, ELEVENLABS_API_KEY, GEMINI_API_KEY, GEMINI_IMAGE_MODEL, IMAGE_API_KEY, KLING_API_KEY, SEEDANCE_API_KEY, FIRECRAWL_API_KEY, PEXELS_API_KEY, PIXABAY_API_KEY, UNSPLASH_ACCESS_KEY, FREESOUND_API_KEY, MEDIA_DIR, AGENT_IMPORT_ROOTS, UPLOAD_MAX_BYTES, OPENCHATCUT_MCP_TOKEN, OPENCHATCUT_RENDER_CONCURRENCY, OPENCHATCUT_MAX_ACTIVE_EXPORTS, OPENCHATCUT_H264_ENCODER, R2_ACCOUNT_ID, R2_BUCKET
- Config files: .env.local, .mcp.json
- Prompt files: ~/.openchatcut/skills/&lt;name>/SKILL.md, src/agent/skills/
- Accounts you'll need: one LLM provider account for the built-in agent (Anthropic, OpenAI, Gemini, or others); ElevenLabs, Kling, Seedance, Pexels (optional, per feature)

## Operable: what an agent can drive

Operability: native. Interface: mcp at https://github.com/0xsline/OpenChatCut#using-openchatcut-with-codex--claude-code (published by the builder, local).

### Reach (partial coverage)

- Multitrack timeline editing: move, trim, split, ripple, keyframes: reachable. README: draft-safe project read/edit tools in an edit session; same EditorCore commands as the UI
- Transcript-driven cuts and pause removal: reachable. README Core Capabilities: word-level editing; edit tools apply to the draft
- Captions with styles and SRT: reachable. README: captions are timeline edits; translation is a job and may be excluded from drafts
- WebGL effects, LUTs, transitions, zooms: reachable. README: edits written to real clips, transitions, effects
- Import local media: reachable. README: import_asset and import_folder within AGENT_IMPORT_ROOTS
- Create, list, and open projects: reachable. README: project listing, creation, and navigation tools work without the editor open
- AI generation: image, video, speech, music: not reachable. README: generation stays unavailable in external MCP sessions because a rejected proposal could not roll it back
- Export MP4, audio, captions, FCPXML: not reachable. README: export is an immediate side-effect tool and is not exposed to external MCP sessions
- Motion graphics templates: undetermined. README: built-in agent can generate MG clips; not stated whether external sessions can place them
- Delete a project: not reachable. README: project deletion excluded from external sessions

## Code stack

- Languages: TypeScript
- Frameworks: Electron, Remotion, Vercel AI SDK, ffmpeg
- Package manager: npm
- Database: none
- Hosting target: local desktop, localhost web

## Model stack

- Providers: Anthropic, OpenAI, Gemini, Kimi, Qwen, GLM, DeepSeek, MiniMax, Mistral, ElevenLabs, WaveSpeed, Kling, Seedance, BytePlus
- Models: none
- Keys you need (names only): LLM_ANTHROPIC_API_KEY, LLM_OPENAI_API_KEY, LLM_GEMINI_API_KEY, ELEVENLABS_API_KEY, GEMINI_API_KEY, IMAGE_API_KEY, KLING_API_KEY, SEEDANCE_API_KEY, FIRECRAWL_API_KEY, PEXELS_API_KEY
- Prompts live in: src/agent/skills/, ~/.openchatcut/skills/&lt;name>/SKILL.md
- Tools: begin_edit_session, review_edit_session, get_edit_session, import_asset, import_folder, manage_skill

## Skills

bundled: Ships an installable skill that teaches a coding agent to drive the editor over MCP, plus built-in editing skills the in-app agent loads.
- Paths: skills/openchatcut/SKILL.md, src/agent/skills/*/SKILL.md
- Install: npx skills add 0xsline/OpenChatCut

## Evidence and confidence

- formFactor: README: DMG, Windows installer, Linux AppImage; Electron in topics (confidence 0.9)
- executionModel: README: editor is deterministic; built-in agent runs a model loop on the local server (confidence 0.85)
- operability: README: 'agent-native'; built-in agent and external MCP share the same tools; Streamable HTTP endpoint at localhost:5199/api/external-mcp/mcp (confidence 0.95)
- effort: .env.example documents every provider variable and MCP token; skills are SKILL.md files (confidence 0.9)
- editions: README: independent open source (AGPL); no paid edition (confidence 0.95)
- active: GitHub pushedAt 2026-08-31
- reach:  (confidence 0.75)

## Open questions

- Count and names of the external MCP tools beyond the session tools; the README does not enumerate them
- Whether transcription jobs can be started from an external session

## Sources

- https://openchatcut.com (sourcing:video-streaming:github)
- https://github.com/0xsline/OpenChatCut (sourcing:video-streaming:github)
