Skip to content

Quickstart ​

This guide gets Sandcut running locally without changing the existing Worker deployment path.

Deployment model ​

Use two independent services:

  • Application service: the existing Worker + Container deployment from the repo root
  • New Sandcut service: a second Worker + Container deployment using wrangler.sandcut.toml
  • Documentation service: a separate Cloudflare Pages project built from apps/docs

This keeps docs releases completely isolated from media processing releases.

Prerequisites ​

  • Node.js 20+
  • Cloudflare account with Workers, Containers, Durable Objects, KV, and R2
  • Wrangler authentication already configured locally

Install the application ​

bash
npm install
cp .dev.vars.example .dev.vars

Run the application locally ​

bash
npm run dev

Run the new Sandcut service locally ​

bash
npm run dev:sandcut

Create a bearer token ​

bash
wrangler kv key put --binding=AUTH_KV "your-secret-token" "active" --remote

Test a processing request ​

bash
curl -X POST http://127.0.0.1:8787/video/process \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-token" \
  -d '{
    "input_url": "https://example.com/video.mp4",
    "ffmpeg_args": ["-vf", "scale=640:360", "-c:v", "libx264"],
    "seek": { "mode": "hybrid", "start": 30, "duration": 8 }
  }'

Start the docs app ​

The docs app lives in apps/docs and is intentionally isolated from the root package.

bash
cd apps/docs
npm install
npm run dev

Build and deploy the docs app ​

bash
cd apps/docs
npm run build
npm run deploy

The deploy script targets the separate Pages project sandcut-docs.

Configure your own Cloudflare resources ​

Before deploying publicly, replace placeholder values in wrangler.toml or wrangler.sandcut.toml with your own:

  • CDN_DOMAIN
  • OUTPUT_BUCKET.bucket_name
  • AUTH_KV.id

Deploy the new Sandcut Worker + Container service ​

bash
npm run build:sandcut
npm run deploy:sandcut

This deploys a separate Worker named sandcut-video-sandbox and does not overwrite the existing application service.

Built for sandboxed media workloads on Cloudflare.