Skip to content
MCP ThesaurusMCP Thesaurus

LeClap

CommunityIncomplete39/100Claim

npm @leclap/mcpstdioMITupdated 13d ago

Deterministic, on-device, agent-callable video β€” composed by prompt or by hand.

SourceWebsite23

What can you do with LeClap?

LeClap

Deterministic, on-device, agent-callable video β€” composed by prompt or by hand.

Describe a video in one JSON template β€” sections, filters, music, overlays β€” then render that same template on a phone (React Native, on-device) or in the browser (WebAssembly). No upload, no server, no generative model: the render is deterministic and reproducible, not sampled.

CI Node.js Version pnpm TypeScript License: MIT Trademark: LeClap

Quick start Β· Templates Β· Library API Β· Architecture Β· Docs


✨ What is LeClap?

One JSON template. It renders on Node, in the browser via WebAssembly, and natively on-device on React Native β€” same template, same pipeline, reproducible run after run on a given platform. No upload, no server, no generative model.

πŸŽ₯ Demo

Two looks at LeClap β€” a finished clip rendered from a single JSON template, and the mobile app composing one fully on-device.

A phone composing a LeClap template on-device: tapping Create my video, FFmpeg rendering on the handset, then the finished clip playing back β€” no upload, no server

πŸ€” Why LeClap?

Generative tools can't reproduce a result twice. Cloud renderers can't run in your user's pocket. Remotion renders without a server, but needs a browser engine to do it β€” LeClap links FFmpeg into the app itself.

LeClap Remotion Shotstack Generative video
Renders in a native app, no browser βœ… React Native, FFmpeg linked in ❌ needs a WebCodecs browser ❌ cloud API ❌ cloud API
Runs with no server βœ… βœ… in the browser, since 4.0.491 ❌ cloud API ❌ cloud API
Same input β†’ same output βœ… per platformΒΉ βœ… if you avoid randomness ⚠️ not documented ❌ sampled, not rendered
Authored by an AI agent βœ… MCP ⚠️ an LLM writes React code βœ… MCP (cloud) βœ… prompt

¹ 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→lutyuv. Same composition, different pixels.

LeClap vs Remotion β†’ β€” the reasoning behind each row, the full caveats, every claim sourced to vendor docs, and when to pick Remotion instead.

🧰 Highlights

Highlight What it means
🧩 Template-driven One JSON descriptor β†’ a complete video. No imperative FFmpeg wrangling.
🌍 Runs everywhere Node.js, browser (WASM), and React Native β€” one shared core, reproducible on each (the encoder differs per platform, see above).
πŸ“Ή Capture β†’ compose β†’ render Record from the camera, trim/crop, mix music, add transitions, and render β€” captured, edited, and composed on-device.
πŸ€– Agent-callable An MCP server lets an AI agent author & render a template β€” no LLM in the output path, so it's rendered, not sampled.
🎨 Premium out of the box A bundled creative kit of polished, on-device-safe templates β€” by prompt or in the visual builder.
🧱 Typed & validated Zod-validated templates, strict TypeScript, dependency-injected architecture.

πŸš€ Quick start

πŸ’‘ Recommended: mise. mise install provisions the exact pinned toolchain β€” Node 24, pnpm 11, FFmpeg 8.1.1, and Rust β€” so every contributor and CI run identical versions. Managing versions yourself? Bring Node β‰₯ 24 and pnpm 11.

git clone https://github.com/heristop/leclap.git
cd leclap
mise install     # Node 24, pnpm 11, FFmpeg 8.1.1 + Rust
pnpm install

Then pick an app:

pnpm app:web      # web app β€” compiles videos in-browser (no server)
pnpm app:expo     # Expo mobile app β€” compiles fully on-device (no server)

Or use the CLI β€” @leclap/cli is the leclap dev tool:

npx @leclap/cli init my-video         # scaffold a starter project
npx @leclap/cli render template.json  # render it (`leclap diagnose` checks your FFmpeg)

Or drive it from an AI agent: the @leclap/mcp server exposes the engine as MCP tools β€” schema β†’ validate β†’ render β€” with no LLM in the output path.

πŸ“¦ Monorepo

pnpm workspaces (apps/*, packages/*) β€” no turbo/nx. The root is a private orchestrator (leclap); ffmpeg-video-composer, @leclap/cli, and @leclap/mcp are published to npm. The web and mobile apps both run the same core β€” the mobile app drives it fully on-device via the embedded native engine (no server), the web app in-browser via WASM.

Package Description
ffmpeg-video-composer The library β€” cross-platform composition engine (Node, browser, WASM).
@leclap/cli The CLI β€” the leclap dev tool: scaffold (init), render, diagnose.
@leclap/creative-kit Shared creative catalog β€” templates, partials, fonts, media, bundled assets.
@leclap/mcp MCP server β€” the engine as agent-callable tools (schema/validate/compose/probe).
@leclap/web React 19 + Vite + Tailwind β€” in-browser FFmpeg via WASM (reference).
@leclap/expo Expo / React Native β€” on-device compiles via the native engine (reference).
ffmpeg-engine Rust engine embedding FFmpeg fftools for on-device compiles.

🧩 Templates & library

A template is a Zod-validated JSON descriptor β€” a global block plus an ordered list of sections, each a clip with its own inputs β†’ maps β†’ filters pipeline and {{ variable }} placeholders. Start from a creative-kit template and tweak text, colors, and media β€” by prompt (MCP) or in the visual builder.

πŸ“š Documentation

🀝 Contributing & License

Issues and PRs welcome. Keep changes formatted (pnpm fmt) and lint-clean (pnpm lint) before committing. The code is licensed under the MIT License.

Brand & trademark. The MIT License covers the code, not the brand. The LeClap name and logo are trademarks of Alexandre Mogère — you can fork and reuse the code freely, but please give your fork a different name and don't imply endorsement. See TRADEMARK.md for details.