About OpenCardboard
OpenCardboard is an MCP server published by rakesh0x in the Data category: openCardboard — local-first chat-to-edit AI video editor. Your footage never leaves your machine.
The repository has 89 stars and 25 forks, with the last commit 16 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/rakesh0x/OpenCardboardThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about OpenCardboard
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 2 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.
1 check has not been run yet.
README
Chat-to-edit video editing. Local-first. Open source.
Drop in raw footage. Describe the edit. Watch the real timeline update — cuts, captions, beat sync, motion graphics — while your files never leave your machine.
MIT License · macOS / Windows / Linux · Electron + React + ffmpeg
The screenshot above is a real session: footage imported, transcribed locally, silence removed, captions generated from the transcript, and the video track re-cut to the beat grid of a music track — all driven through the tool API, all undoable with ⌘Z.
Why
Most AI video tools generate fake footage or ship your files to a server. Cutboard is the opposite:
- Edits real footage. Never generates video. Nothing enters the output that you didn't import. The agent is an editor, not a slot machine.
- Local-first. Originals stay where they are. Transcription, scene detection, and beat detection run on your machine (whisper.cpp, ffmpeg, local ONNX). Cloud models are opt-in per capability and clearly labeled.
- The timeline is the source of truth. Every agent edit is a validated operation in an append-only log — exact undo/redo, crash recovery, and MCP clients can edit the project even with the window closed.
- One tool set, every interface. The built-in chat and any MCP client (Claude Code, Claude Desktop, Codex, Cursor) drive the same 30+ typed tools.
What it does
| Footage understanding | Word-level transcript (whisper.cpp), scene detection with keyframes, optional VLM scene descriptions — all searchable (FTS5 + local embeddings). |
| Rough cut | Removes pauses and repeated takes, keeps your order, reports the duration. One atomic undo. |
| Transcript editing | "Cut to the brushes whenever I mention them" — edit by what was said, timed in milliseconds. |
| Captions | Serif / bold / karaoke presets generated from word timings; styled, placed, batched. |
| Beat sync | Local DSP beat detection (BPM, grid, downbeats, sections) → cuts land on the grid with per-section density. Verified at ±1 frame. |
| Motion graphics | The agent writes sandboxed scene-tree compositions (lower thirds, counters, title cards) timed to speech. Edited only via chat, with a look-and-fix loop. |
| Reference style | Analyze a reference video's cut rhythm and color stats; copy the properties you choose. The reference footage never enters your edit. |
| Effects & keyframes | Brightness/contrast/saturation/blur with keyframed animation; speed ramps and time remap. |
| Export | Presets for TikTok/Reels/Shorts, YouTube, Square — hardware-encoded (VideoToolbox/NVENC/QSV/AMF) with a mixed, ducked audio track. Frame-accurate: output matches the preview. Plus OTIO hand-off to Resolve/Premiere/FCP. |
Quick start
git clone <your-fork-url> cutboard && cd cutboard
pnpm install
pnpm fetch:ffmpeg # bundled LGPL ffmpeg/ffprobe (optional — falls back to PATH)
pnpm dev # apps/desktop → Electron dev server
- Create a project and import media (⌘I).
- Wait for analysis — proxies, transcript (
✓ analyzedbadge). The first ASR model download is ~150 MB; manage models in Settings → AI. - Ask the agent — open the AI chat tab and try the prompts in
docs/prompts/. Configure a provider (Anthropic / OpenAI / Google, or run fully local with Ollama) in the chat's ⚙ AI settings.
Verified smoke run on Apple Silicon: 12.6s speech clip → analyzed in ~20s (base.en), silence removal cut 2.5s, 8 karaoke caption cards, 121 BPM detected on a 120 BPM click track, 20 beat-synced cuts, 1080p export.
Drive it from your own agents (MCP)
Cutboard ships a local MCP server (loopback only, per-install bearer token). Enable it in Settings → MCP, then:
# Claude Code
claude mcp add --transport http cutboard http://127.0.0.1:8629/mcp \
--header "Authorization: Bearer <token from Settings>"
# Codex / Cursor / Claude Desktop — see the copy-paste snippets in Settings → MCP,
# or use the stdio shim: npx cutboard-mcp
Privacy: external agents receive text (transcripts, scene descriptions, timeline JSON)
and frames only when they call captureFrame — never your source files.
Architecture
┌─────────────────────────── Desktop app (one install) ───────────────────────────┐
│ Renderer (React editor, canvas compositor, sandboxed motion-graphics iframe) │
│ ▲ typed IPC (contextBridge, zod-validated, sandboxed preload) │
│ Main process — source of truth │
│ ├─ Project service SQLite (WAL) + append-only op log, undo/redo │
│ ├─ Tool registry 30+ zod-typed tools — chat and MCP share one catalog │
│ ├─ Agent runtime Vercel AI SDK → Anthropic / OpenAI / Google / Ollama │
│ ├─ MCP server 127.0.0.1 Streamable HTTP + token + stdio shim │
│ ├─ Job manager resumable ingest/export queue (SQLite-backed) │
│ └─ Analysis whisper.cpp ASR · scene detect · beats DSP · embeddings │
│ Sidecars: bundled ffmpeg/ffprobe (LGPL) · hidden render window → hw encode │
└──────────────────────────────────────────────────────────────────────────────────┘
Timeline state lives in the main process and changes only through ops (item.trim,
item.split, batch, …). The UI, the built-in agent, and MCP clients are all just
clients of the same op log — which is why undo works everywhere and agents can edit
headless. Core op semantics (ripple, split, trim, inverses) are pure TypeScript with
46 unit tests (packages/editor-core).
Repository layout
apps/desktop Electron app (main / preload / renderer)
apps/mcp-shim stdio ⇄ loopback-HTTP bridge for MCP clients
packages/schema zod data model + op catalog (single source of truth)
packages/editor-core pure op engine: apply/invert, ripple, snapping, history
packages/tools tool catalog shared by chat + MCP
packages/renderer canvas compositor + motion-graphics runtime + validators
packages/agent system prompt, provider notes
scripts/ logo generator, ffmpeg/whisper fetchers
docs/ decisions, prompts, screenshots
Packaging
pnpm --dir apps/desktop dist # signed builds need certs; unsigned otherwise
pnpm --dir apps/desktop dist:dir # fast unpacked build (mac verified)
Config in apps/desktop/electron-builder.yml (dmg / NSIS / AppImage). Bundled ffmpeg is
LGPL — no GPL components; see THIRD_PARTY_LICENSES.md for the
codec distribution notes.
Status & roadmap
Shipped: all ten desktop milestones — see docs/DECISIONS.md for
every resolved decision and docs/prompts/ for copy-paste agent prompts.
Next up, in rough order: mask tracking + SAM-based background removal (ONNX sidecar),
project bundle portability (per-project project.db), batch-over-folder flows, signed +
notarized installers, stock media search (Pexels/Freesound).
Contributing
PRs welcome. pnpm test (vitest), pnpm typecheck, pnpm lint should all pass —
packages/editor-core changes need tests. Keep the privacy rule sacred: nothing leaves
the machine unless the user explicitly configured a cloud provider for that capability.
License
MIT — see LICENSE. The wordmark embeds Montserrat (SIL OFL 1.1) as outlines. Not affiliated with any commercial product.
README fetched from the repository 2 days ago. The original is authoritative.