Skip to content

Repository files navigation

CaptureFlow

CaptureFlow

Open-source, self-hostable screen recording with instant shareable links.

Website  ·  Download  ·  Docs  ·  Self-hosting  ·  License

License: AGPL-3.0 Surfaces: browser extension and macOS Stars


The CaptureFlow recorder panel open over a page, with source, camera, and mic pickers above a Start Recording button

CaptureFlow records your screen and hands you a share link the moment you stop. It records from two places — an MV3 browser extension and a native macOS app — onto one Cloudflare-hosted backend that serves the dashboard, the recording and screenshot viewers, and the API. It's fully open source (AGPL-3.0) and self-hostable on your own Cloudflare account — every feature ships in the open-source build.

The upload runs while you record, so stopping is the last step: no export queue, no render wait. Screenshots come from the same panel and share the same links, dashboard, and retention rules as recordings.

Monorepo layout

apps/
  web/         Next.js 16 dashboard + recording/screenshot pages + API → Cloudflare Workers (OpenNext)
  extension/   Browser recorder (WXT, MV3) — popup/overlay panel, offscreen capture, in-page controls
  desktop/     Electron screen recorder (macOS)
  docs/        VitePress documentation site → its own Cloudflare Worker (assets-only)
packages/
  engine/      Capture engine shared by desktop + extension: macOS sidecars, record protocol, mux pipeline (MIT)
  shared/      Types & constants shared across the apps
  ui/          Theme tokens + the React components with no HeroUI equivalent
  quota/       Storage quota, limits & workspace logic

Apps depend on packages, never the reverse, and never on each other.

Requirements

  • Node.js >= 24.13
  • pnpm 10 (corepack enable && corepack prepare pnpm@10.30.0 --activate)
  • A Cloudflare account for the web app (Workers + D1 + R2)
  • Swift (Xcode command-line tools) only if you change the macOS capture sidecars — the built binaries are committed, so nothing else needs it

Develop

pnpm install
pnpm dev                                  # run everything
pnpm web                                  # just the dashboard
pnpm extension                            # just the browser extension
pnpm --filter @captureflow/desktop dev    # just the desktop recorder

Repo-wide checks:

pnpm typecheck
pnpm --filter @captureflow/web test
pnpm format

After editing the Swift sidecars, rebuild them — the app loads the committed binaries, not the sources:

packages/engine/scripts/build-native.sh              # arm64
packages/engine/scripts/build-native.sh --universal  # arm64 + x86_64

Load the extension

It isn't on the Chrome Web Store yet. pnpm extension launches a browser with it loaded; for a persistent install, build it and load the folder unpacked:

pnpm extension:build   # → apps/extension/.output/chrome-mv3

Then in chrome://extensions turn on Developer mode → Load unpacked → pick apps/extension/.output/chrome-mv3.

Deploy the web app to Cloudflare

Deploy to Cloudflare

Or manually:

# one-time: create the bindings
wrangler d1 create captureflow
wrangler r2 bucket create captureflow-recordings
# paste the returned ids into apps/web/wrangler.jsonc, then:
pnpm --filter @captureflow/web db:apply:remote
pnpm --filter @captureflow/web cf:deploy

DEPLOY.md is the full runbook — secrets, auth providers, the custom domain, and pointing the recorders at your own instance.

License

AGPL-3.0-only, with one exception: the reusable capture engine in packages/engine is MIT-licensed. Combined builds (the desktop app, the browser extension) are AGPL-3.0-only as a whole.

About

Open-source, self-hostable screen recording with instant shareable links.

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages