OpenCut (Legacy)
May 17, 2026 ยท View on GitHub
This is the original OpenCut codebase. It's archived and no longer maintained.
The rewrite is happening at opencut-app/opencut.
Sponsors
Thanks to Vercel and fal.ai for their support of open-source software.
Why?
- Privacy: Your videos stay on your device
- Free features: Most basic CapCut features are now paywalled
- Simple: People want editors that are easy to use - CapCut proved that
Project Structure
apps/web/: Next.js web applicationapps/desktop/: Native desktop app built with GPUI (in progress)rust/: Platform-agnostic core: GPU compositor, effects, masks, and WASM bindings. We're actively migrating business logic here from TypeScript.docs/: Architecture and subsystem documentation
Getting Started
Prerequisites
- Bun
- Docker and Docker Compose
Note: Docker is optional but recommended for running the local database and Redis. If you only want to work on frontend features, you can skip it.
Setup
-
Fork and clone the repository
-
Copy the environment file:
# Unix/Linux/Mac cp apps/web/.env.example apps/web/.env.local # Windows PowerShell Copy-Item apps/web/.env.example apps/web/.env.local -
Start the database and Redis:
docker compose up -d db redis serverless-redis-http -
Install dependencies and start the dev server:
bun install bun dev:web
The application will be available at http://localhost:3000.
The .env.example has sensible defaults that match the Docker Compose config โ it should work out of the box.
Desktop setup
Desktop is opt-in. If you're only working on the web app, skip this entirely.
If you want to get ready for apps/desktop, see apps/desktop/README.md. It's a two-step setup: Rust toolchain first, then desktop native dependencies.
Local WASM development
Only needed if you're editing rust/wasm and want the web app to use your local build instead of the published package.
Prerequisites โ install these once before anything else:
# Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# build the WASM package
cargo install wasm-pack
# reruns the build on file changes, used by bun dev:wasm
cargo install cargo-watch
-
Build the package once from the repo root:
bun run build:wasm -
Register the generated package for linking:
cd rust/wasm/pkg bun link -
Link
apps/webto the local package:cd apps/web bun link opencut-wasm -
Rebuild on changes while you work:
bun dev:wasm
To switch apps/web back to the published package, run:
cd apps/web
bun add opencut-wasm
Self-Hosting with Docker
To run everything (including a production build of the app) in Docker:
docker compose up -d
The app will be available at http://localhost:3100.
Contributing
We welcome contributions! While we're actively developing and refactoring certain areas, there are plenty of opportunities to contribute effectively.
๐ฏ Focus areas: Timeline functionality, project management, performance, bug fixes, and UI improvements outside the preview panel.
โ ๏ธ Avoid for now: Preview panel enhancements (fonts, stickers, effects) and export functionality - we're refactoring these with a new binary rendering approach.
See our Contributing Guide for detailed setup instructions, development guidelines, and complete focus area guidance.
Quick start for contributors:
- Fork the repo and clone locally
- Follow the setup instructions in CONTRIBUTING.md
- Working on
apps/desktop? Seeapps/desktop/README.mdfor setup - Create a feature branch and submit a PR