rakesh0x/OpenCardboard

★ 57⑂ 15

OpenCardboard — local-first chat-to-edit AI video editor. Your footage never leaves your machine.

About rakesh0x/OpenCardboard

rakesh0x/OpenCardboard is an open-source project on GitHub, mainly written in TypeScript. OpenCardboard — local-first chat-to-edit AI video editor. Your footage never leaves your machine. It currently holds 57 stars and 15 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the Today's Trending board, currently at rank #91 with 0 new stars today.

GitHub Repository Details

Repository rakesh0x/OpenCardboard · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

https://github.com/rakesh0x/OpenCardboard/blob/HEAD/Cutboard

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

---

https://github.com/rakesh0x/OpenCardboard/blob/HEAD/Cutboard editor — beat-synced sequence with karaoke captions generated by the agent

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:

import. The agent is an editor, not a slot machine. detection run on your machine (whisper.cpp, ffmpeg, local ONNX). Cloud models are opt-in per capability and clearly labeled. append-only log — exact undo/redo, crash recovery, and MCP clients can edit the project even with the window closed. 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  cutboard && cd cutboard
pnpm install
pnpm fetch:ffmpeg        # bundled LGPL ffmpeg/ffprobe (optional — falls back to PATH)
pnpm dev                 # apps/desktop → Electron dev server

1. Create a project and import media (⌘I). 2. Wait for analysis — proxies, transcript (✓ analyzed badge). The first ASR model download is ~150 MB; manage models in Settings → AI. 3. 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 "

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.

GitHub Stars & Activity

57Stars
15Forks
0Open issues
TypeScriptLanguage

GitHub Popularity

GitHub stars57
Forks15
Open issues0
Primary languageTypeScript
License-
Stars gained today0
Created-
Last pushed-

Trending History

Daily boardrank #91 · ▲ 0 stars

Related AI Projects

1

deepseek-ai / deepseek-harness

TypeScript★ 244,544⑂ 0
→
2

n8n-io / n8n

TypeScript★ 206,762⑂ 0
→
3

firecrawl / firecrawl

TypeScript★ 189,134⑂ 0
→
4

thedotmack / claude-mem

TypeScript★ 97,052⑂ 8,555▲ 536 stars
→
5

ruvnet / ruflo

TypeScript★ 73,998⑂ 8,799▲ 87 stars
→
6

heygen-com / hyperframes

TypeScript★ 57,834⑂ 5,158▲ 582 stars
→
7

ChromeDevTools / chrome-devtools-mcp

TypeScript★ 53,035⑂ 5,704▲ 45 stars
→
8

wonderwhy-er / DesktopCommanderMCP

TypeScript★ 9,940⑂ 1,247▲ 13 stars
→

More AI Rankings