vCut is a local agent (Node + ffmpeg) with a Cloudflare Pages gate for UAT. Source video stays on the machine — ffmpeg never runs on Cloudflare.
Requires Docker (recommended; captions included) — or Node.js 18+ and ffmpeg on PATH.
From a clone of this repo (folder that contains docker-compose.yml):
git clone <YOUR_REPO_URL> vcut && cd vcut # if the app lives in a subfolder: # cd "Cursor - vCut" export VCUT_AUTH=on export VCUT_DOCS_URL=https://YOUR_PAGES_HOST export VCUT_UPDATE_URL=https://YOUR_PAGES_HOST/latest.json export VCUT_CORS_ORIGINS=https://YOUR_PAGES_HOST docker compose -f docker-compose.yml -f deploy/docker-compose.uat.yml up --build
Or copy deploy/env.uat.example to .env and fill your Pages host, then:
docker compose -f docker-compose.yml -f deploy/docker-compose.uat.yml --env-file .env up --build
Boot log should show auto-captions: on (whisper.cpp). Open http://127.0.0.1:4321, create an account, complete the walkthrough.
Host install (no Docker):
./scripts/install.sh # macOS / Linux # .\scripts\install.ps1 # Windows
docker compose … up --build.VCUT_UPDATE_URL pointed at this site’s latest.json.Set these on the agent (not on Cloudflare Pages):
VCUT_AUTH=on VCUT_DOCS_URL=https://YOUR_PAGES_HOST VCUT_UPDATE_URL=https://YOUR_PAGES_HOST/latest.json VCUT_CORS_ORIGINS=https://YOUR_PAGES_HOST
VCUT_CORS_ORIGINS lets the Pages gate call /api/health when the browser allows private-network fetch. Soft failure on the gate is OK — Open local editor still works.
docker compose up --build
UAT overlay (auth + docs/update/CORS from env):
docker compose -f docker-compose.yml -f deploy/docker-compose.uat.yml up --build
UAT + Tunnel (shared operator agent):
export VCUT_TUNNEL_TOKEN=… docker compose -f docker-compose.yml -f deploy/docker-compose.tunnel.yml --profile uat up --build
Optional: expose one always-on operator agent without opening ports. See repo deploy/README.md. Round-1 default for testers is still local Docker.
VCUT_UPDATE_URL=https://YOUR_PAGES_HOST/latest.json
Contract:
{
"version": "2.68.1",
"url": "https://YOUR_PAGES_HOST/docs.html#install",
"notes": "Release notes…",
"sha256": ""
}
After first Pages deploy, run ./scripts/set-pages-host.sh https://YOUR_PAGES_HOST to rewrite site/latest.json and commit.
VCUT_AUTH=on. Users sign up / sign in; files isolated under VCUT_DATA_DIR.In the editor, click (i) on any tool for a quick note, Ask assistant, or Open docs (these anchors).
Keep only the selected timeline region. Drag handles or type times; Same quality or Frame-exact.
Shrink by quality/resolution or target file size (two-pass).
Change aspect for social (9:16, 1:1, 4:5, 16:9) with blur or bars.
Transcribe speech to burned subs or .srt. Needs Whisper (Docker / setup-whisper).
Title/caption overlay with position, size, colour; PNG fallback without drawtext.
Fill fields, optional storyboard, apply → Result. Works template-first or after upload.
Themed 9:16 layout chrome (Skating Kid, Traveler, Motorbike, Pro Blogger, Corporate, …).
Series + day/level, video, trick/achievement, CTA + AD.
Stat rows under the clip for practice diaries.
Milestone badge and learned skill.
Streak header with goal progress bar.
Coaching quote and tomorrow goal.
Episode-style fun moment card.
Countdown and practice time.
Week summary with progress bar.
Multi-step recipes (social, podcast, captions, highlights).
Browse a shared folder online, download selected clips, edit locally.
Tool-first home → source → CapCut-style canvas → unified Result.