kneecap
A free, open-source CapCut for iPhone — full mobile video editor, no account, no watermark, no subscription
not yet reviewed by publik
kneecap
open source · on publik
README
Open in GitHubkneecap
A local-first, fully offline mobile video editor, built for CapCut-mobile feature and visual parity.
kneecap is an independent, community fork. It is not affiliated
with, endorsed by, or sponsored by OpenCut, OpenCut-app, CapCut,
ByteDance, or TikTok Pte. Ltd. "CapCut" is referenced in this repo's
planning docs only as a functional/visual parity target for the editor
we're building — no CapCut trademarks, marks, or copyrighted assets are
bundled, redistributed, or reproduced here. See docs/DECISIONS.md for
the full attribution and naming posture.
Based on OpenCut-app/opencut-classic (MIT)
kneecap is forked from
OpenCut-app/opencut-classic
— the archived-but-complete Next.js/Rust engine behind the original
OpenCut web editor — licensed under the MIT License. The original
copyright notice and license are preserved verbatim in LICENSE; see
NOTICE for the attribution statement and docs/THIRD_PARTY_NOTICES.md
for a full inventory of bundled third-party assets and dependency
licenses.
opencut-classic was archived by its maintainers on 2026-05-16. This
fork receives no upstream commits and owns its entire dependency and
security surface going forward — see docs/DECISIONS.md for what that
means in practice. It is unrelated to and not a redistribution of
the separate, actively-developed OpenCut-app/OpenCut rewrite.
What this is
kneecap strips the inherited engine down to its headless editing core — timeline, ripple/placement, effects, storage — and is being rebuilt as a touch-first, CapCut-mobile-shaped editor for iOS and Android, running fully on-device:
- Zero cloud dependency. No account, no server, no paid API of any kind. The app is designed to work correctly with the network off.
- On-device auto-captions, multi-track timeline editing, trim/split, transitions, text/stickers, filters, speed ramping, and hardware-accelerated export — all local.
- No app-store release. kneecap is distributed directly (signed
builds via GitHub Releases + install guides), not through the Apple
App Store or Google Play. See
docs/DECISIONS.md§8.5.
The full architecture and milestone plan lives outside this repo in the
project's planning documents; docs/DECISIONS.md is the in-repo record
of what's been ratified and why.
Current status
This repo is mid-fork: the inherited codebase is a Next.js 16 web app
(apps/web/) with the original desktop shell (apps/desktop/, GPUI) and
Rust/WASM compositor (rust/) still present.
M2 landed the headless engine extraction. The editing engine now
lives in packages/editor-core — EditorCore and its 12 managers,
timeline/placement/ripple/retime, the command system, storage and its
31 migrations, the renderer graph, and the frozen EDL v1 bridge
contract (docs/EDL.md). It contains no React, Next, or UI-library
imports, enforced two ways: the package type-checks standalone with
@/* mapped to its own src only, and scripts/check-headless.mjs
scans every file. apps/web consumes it and keeps working.
The mobile shell (apps/mobile/) does not exist yet — see the plan's
milestone list for sequencing. Treat what remains under apps/web/src
as inherited UI code being progressively adapted, not as the shipped
mobile product.
Project structure
packages/editor-core/— the headless editing engine. Framework- agnostic TypeScript: no React, no DOM-desktop assumptions, no server. Itsreact/subdirectory holds the one React-aware file, theuseSyncExternalStorebridge.schema/edl-v1.jsonis the frozen native-export contract; seedocs/EDL.md.apps/web/— inherited Next.js web application. Now the UI host forpackages/editor-core, and the dev harness for engine work.apps/desktop/— inherited native desktop shell (GPUI), not a build target for this project.rust/— the Rust/wgpu compositor compiled to WASM (rust/wasm) and its supporting crates (rust/crates/{gpu,compositor,effects,masks,time}).docs/— architecture notes,EDL.md(the frozen EDL v1 bridge contract — read this before writing a native exporter),DECISIONS.md(ratified founder decisions),THIRD_PARTY_NOTICES.md,RELEASING.md(how signed direct-distribution releases are cut — plan M13's no-app-store section), andguides/+publik-listing.md(draft install guides and listing copy; repo docs only, not yet published anywhere).scripts/—offline-audit.{sh,mjs}(the CI gate that keeps the app network-free),invariants.sh(the merge gate),check-headless.mjs(thepackages/editor-coreimport gate), andgenerate-third-party-notices.mjs.
License
MIT — see NOTICE for the required upstream attribution and
docs/THIRD_PARTY_NOTICES.md for third-party asset and dependency
licenses.