LeClap
Compose and render video from one JSON template. Deterministic, runs locally, no generative model.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
@leclap/mcpclaude mcp add leclap -e 'LECLAP_MCP_OUTPUT_DIR=<LECLAP_MCP_OUTPUT_DIR>' -e 'LECLAP_MCP_MEDIA_DIR=<LECLAP_MCP_MEDIA_DIR>' -e 'LECLAP_MCP_RENDER_TIMEOUT_MS=<LECLAP_MCP_RENDER_TIMEOUT_MS>' -e 'LECLAP_MCP_ALLOW_REMOTION=<LECLAP_MCP_ALLOW_REMOTION>' -e 'LECLAP_MCP_REMOTION_ENTRY=<LECLAP_MCP_REMOTION_ENTRY>' -- npx -y @leclap/mcp@0.3.4
{
"mcpServers": {
"leclap": {
"command": "npx",
"args": [
"-y",
"@leclap/mcp@0.3.4"
],
"env": {
"LECLAP_MCP_OUTPUT_DIR": "<LECLAP_MCP_OUTPUT_DIR>",
"LECLAP_MCP_MEDIA_DIR": "<LECLAP_MCP_MEDIA_DIR>",
"LECLAP_MCP_RENDER_TIMEOUT_MS": "<LECLAP_MCP_RENDER_TIMEOUT_MS>",
"LECLAP_MCP_ALLOW_REMOTION": "<LECLAP_MCP_ALLOW_REMOTION>",
"LECLAP_MCP_REMOTION_ENTRY": "<LECLAP_MCP_REMOTION_ENTRY>"
}
}
}
}
Variables d'environnement
LECLAP_MCP_OUTPUT_DIRDirectory rendered videos are written to. Defaults to ~/.leclap/renders.LECLAP_MCP_MEDIA_DIRAllowlisted directory the server may read source media from. Defaults to ~/.leclap/media.LECLAP_MCP_RENDER_TIMEOUT_MSPer-render timeout in milliseconds. Defaults to 600000.LECLAP_MCP_ALLOW_REMOTIONOpt in to the Remotion clip renderer, which executes local JavaScript. Off by default.LECLAP_MCP_REMOTION_ENTRYPath to a Remotion entry point used by render_remotion_clip when it is enabled.
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
LeClap
Your video from one JSON template: camera, effects, music, transitions, rendered on the device. No server, no upload.
Try it · Examples · Comparison · Docs · Showcase
🎥 Demo
Click the frame: the film plays on leclap.dev, with captions.
⏱ Try it in 30 seconds
Node 24.11 or later. FFmpeg is optional: the CLI brings ffmpeg-static along and uses it when there is no
ffmpeg on your PATH.
npx @leclap/cli init hello --no-remotion --no-mcp
cd hello && npm install && npm run render
That writes build/output.mp4: three seconds of "Hello, LeClap" on a navy card, from the
template.json next to it. Edit the JSON, render again.
If the title is missing, the ffmpeg on your PATH was built without drawtext (Homebrew's current build is
one). npx leclap diagnose lists what your FFmpeg can and can't do.
Rather not install anything? Open the same template in the web builder,
where it renders in the tab through WebAssembly. The template travels in the URL fragment, which browsers
don't send to servers. leclap studio template.json prints that link for any template.
🎞 Template in, video out
Three templates from this repo and what they render to. Click a frame to play the render.
| Template | Render | What it shows |
|---|---|---|
footage-edit.json | ||
| 4 KB of JSON | Five recorded clips, five edits: a portrait clip over its own blur, a keyframed pan under a LUT, a speed ramp, a freeze frame, a B-roll cutaway. | |
before-after.json | ||
| a PR review clip | The video an agent attaches to a pull request: the change named, the old behaviour, a wipe to the new one, what to check. | |
effects-tour.json | ||
| ten chapters, one template | Seven minutes of kinetic type, camera moves, transitions, captions, light effects, looks, footage edits, sound and music. |
All 59 samples, with their templates, are on the showcase. Each effect, one frame at a time, in the gallery.
🤔 Why LeClap?
Four ways to get a video out of JavaScript, and when each one is the right call. Claims about the others come from their own docs; a "—" means their docs don't say. The full comparison has the sources and the caveats, ours first.
| LeClap | Remotion | editly | fluent-ffmpeg | |
|---|---|---|---|---|
| What it is | A JSON template compiled to FFmpeg | Videos written as React components | Declarative editing, as a CLI and a Node API | A chainable Node API over the ffmpeg CLI |
| You write | JSON, validated against a schema | React (TypeScript) | A JSON5 spec or CLI flags | Chained method calls |
| Node | ✅ | ✅ also Lambda and Vercel | ✅ needs ffmpeg, ffprobe, headless GL | ✅ needs ffmpeg, ffprobe |
| Browser | ✅ WebAssembly | ✅ WebCodecs, since 4.0.491 | — | — |
| React Native, on-device | ✅ FFmpeg linked into the app | — | — | — |
| Same input, same output | ✅ per platform¹ | ✅ if animations derive from the frame number | — | — |
| Agent tooling | ✅ @leclap/mcp: schema, validate, render | ✅ a system prompt for LLMs writing React | — | — |
| Licence | MIT | Free for individuals, non-profits and for-profit companies up to 3 employees; paid above | MIT | MIT, archived in May 2025 |
| Pick it when | The render happens in an app, or a program writes the video | You think in components, render on servers, or want the ecosystem | You want a slideshow from the terminal | You already use it; its README says it's unmaintained |
¹ Per platform, not across them: Node and the browser encode with libx264, Android with libopenh264, iOS
with h264_videotoolbox, and the on-device build drops boxblur and rewrites eq to lutyuv. Same
composition, different pixels.
Remotion wins more of this than a comparison table usually admits: LeClap vs Remotion spells out where.
📦 Packages
| Package | One line |
|---|---|
ffmpeg-video-composer | The engine: compile() a JSON template on Node, in the browser or in React Native. |
@leclap/cli | The leclap command: init, render, validate, snapshot, verify, studio, diagnose. |
@leclap/mcp | The engine as tools an agent can call: read the schema, validate a template, render it. |
The rest of the monorepo is private: the creative kit (templates, fonts, media), the web builder (React, FFmpeg in WebAssembly), the Expo app (camera to render, on the phone) and the Rust engine that links FFmpeg into it. Working on the repo itself: CONTRIBUTING.md and AGENTS.md.
📚 Read next
- Descriptor reference: every section, transition, look, caption and filter, one page per topic.
- Template configuration and effects: the same reference, in the repo.
- Engine configuration:
ProjectConfig, environment variables, encoders. - Architecture and on-device compilation: how one core runs on three FFmpeg builds.
- One descriptor, three FFmpeg builds: the long version, on the blog.
- Agent-made PR videos and browser agents in the builder.
- Showcase: 50 templates with their renders.
🤝 Contributing & licence
Issues and PRs welcome: start with CONTRIBUTING.md. The code is MIT.
The LeClap name and logo are trademarks of Alexandre Mogère. Fork and reuse the code freely, but give your fork a different name and don't imply endorsement. See TRADEMARK.md.
Questions fréquentes
Qu'est-ce que LeClap ?
Compose and render video from one JSON template. Deterministic, runs locally, no generative model.
Comment installer LeClap ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add leclap -e 'LECLAP_MCP_OUTPUT_DIR=<LECLAP_MCP_OUTPUT_DIR>' -e 'LECLAP_MCP_MEDIA_DIR=<LECLAP_MCP_MEDIA_DIR>' -e 'LECLAP_MCP_RENDER_TIMEOUT_MS=<LECLAP_MCP_RENDER_TIMEOUT_MS>' -e 'LECLAP_MCP_ALLOW_REMOTION=<LECLAP_MCP_ALLOW_REMOTION>' -e 'LECLAP_MCP_REMOTION_ENTRY=<LECLAP_MCP_REMOTION_ENTRY>' -- npx -y @leclap/mcp@0.3.4. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour LeClap ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
LeClap est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient LeClap ?
Il est publié par heristop. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.