Open source · Apache-2.0 · MCP server + skill

A nonlinear video editor that lives inside Claude Code.

It opens beside the chat like a living artifact. Cut by hand, direct by comment, never re-render the whole video.

Try it: press L. Again for 2×, 4×, 8×. A real session. The layer's render wait is shortened.

The loop

You cut. You comment. Claude builds that one piece.

  1. 01

    Cut by hand

    Real footage on a timeline with the keys you already know: J/K/L to 8×, add edit, ripple trims, lift, drag an edge. Camera audio and your external mic follow every trim.

  2. 02

    Comment on a range

    Press M and say what you want, right where you want it: “scroll pops up here”, “tighten this”, “warmer on the lav”. Each comment is a task pinned to exact frames.

  3. 03

    One layer renders

    Claude turns the comment into one edit or one motion graphic. The graphic is code, rendered alone with an alpha channel and composited live over your picture.

The rule

Change one, render one.

Every graphic is its own element with its own alpha file, cached by a hash of its content. So most of what you do renders nothing at all.

You do thisThis renders
Trim, split or move a clipNothing
Scrub, shuttle, skim at 8×Nothing
Move or retime a graphicNothing
Undo back to an earlier versionNothing. It is still cached
Change one graphicThat one graphic
FinishThe full video, once

Where it stands

Honest about what is built.

Works today

  • Timeline editing on 540p proxies with thumbnails and waveform
  • Linked dual audio: camera mic and external recorder, never summed
  • Comments as tasks on exact ranges, for picture or either audio track
  • Alpha layers from HTML, CSS and canvas: VP9-alpha preview, ProRes 4444 master
  • One undo history for your edits and Claude's
  • Two versions side by side: a shorter and a longer cut, one key to switch, one to see what differs
  • Chat passes with model tiers: edit on one model, a read-only story pass on a stronger one
  • MCP server with 28 tools and a /cuento skill

Not built yet

  • Person matte, for text behind the head
  • Export to Premiere, Resolve and OpenTimelineIO with every layer intact
  • Voice comments
  • Brand kits
  • Frame rates other than 23.976

Install

Local-first. One small daemon. Nothing uploaded.

macOS, Python 3.11+, ffmpeg and Chrome. No Python packages, no Node, no account.

git clone https://github.com/ckaico/cuento.git ~/Projects/cuento
cd ~/Projects/cuento
claude mcp add cuento -s user -- "$PWD/bin/cuento" mcp
ln -s "$PWD/skill" ~/.claude/skills/cuento

Then, in any Claude Code session: /cuento open myfilm

FAQ

Questions people ask first.

Is Cuento a Claude Artifact?

It behaves like one. In the Claude desktop app the editor opens in the browser pane beside the chat and stays live while you and Claude both edit. It is served by a small local daemon, because multi-gigabyte camera files cannot live in a hosted page.

Does my footage get uploaded?

No. The daemon binds to 127.0.0.1 and makes no network requests of its own. Footage, proxies and project files stay on your disk.

Does it replace Premiere Pro or DaVinci Resolve?

No. It is for cutting and building graphics fast with Claude. Final color and finishing belong in Premiere or Resolve; export with every layer intact is the next milestone and is not built yet.

What does it need to run?

macOS, Python 3.11 or newer, ffmpeg, and Google Chrome or another Chromium-based browser for layer renders. No Python packages and no Node.

Does it work with MCP clients other than Claude Code?

The server speaks standard MCP over stdio, so any MCP client can call its tools. The /cuento skill and the beside-the-chat editor are built for Claude Code.

Films first, tools second.

Cuento exists because a real edit needed it. It is built by a filmmaker, in the open, and it is free.