Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,221 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenScreen Logo

OpenScreen

A free, open-source screen recorder and editor for polished product demos — with Screen-Studio-style auto-zoom, cursor effects, on-device AI voice enhancement, and hardware HEVC export.

Platform License On device

This is a fork of OpenScreen (itself a continuation of the original project by Siddharth Vaddem) that pushes the editor toward Screen Studio Pro territory. Everything runs locally: no accounts, no uploads, no telemetry.


What it does

OpenScreen records your screen at the native resolution while capturing the cursor and every click as a separate metadata stream — the cursor is never baked into the pixels. That one architectural choice is what makes the polish possible: zooms are generated from your clicks after the fact, a synthetic cursor is re-rendered along a smoothed path, and every effect stays editable until export.

Record → Edit → Export:

Recording Editing Export
Full screen or single window (ScreenCaptureKit) Click-driven auto-zoom with cinematic easing MP4 (H.264 or HEVC) and GIF
System audio + microphone + webcam Smoothed synthetic cursor with click ripples & bounce Hardware-accelerated (VideoToolbox)
High-frequency cursor & click telemetry Backgrounds, padding, shadows, motion blur Studio Sound voice enhancement
Trim, crop, per-segment speed, annotations Constant 60 fps retiming
On-device Whisper captions (13 UI languages)

The editor

Load a recording and the timeline is already working for you — zoom regions are auto-suggested at the exact positions you clicked during the recording (dwell detection fills in click-free stretches):

Editor with auto-suggested zoom regions on the timeline at each click position

Exports re-render the synthetic cursor with click ripples, and the camera zooms to where you clicked:

Exported frame showing the zoomed camera and a click ripple next to the rendered cursor

Export options

Choose H.264 for compatibility or HEVC for smaller files at the same quality (hardware-encoded via VideoToolbox), and flip on Studio Sound to denoise and de-reverb your voiceover — a local DeepFilterNet model, roughly 25× faster than realtime on Apple Silicon, measured at ~37 dB of noise reduction with speech preserved:

Export panel with H.264/HEVC codec selector and the Studio Sound toggle

Audio cleanup

One click on the timeline's audio-cleanup button (Remove silences & filler words) detects long silences — and filler words, when the transcript surfaces them — and cuts them as ordinary, undoable trim regions: the same delete-the-span mechanics a transcript editor uses.


What this fork adds

Compared to upstream OpenScreen:

  • Click-driven auto-zoom — every click becomes a zoom target (Screen Studio behavior); dwell detection remains as the fallback for click-free spans.
  • Cursor click ripples — an expanding, fading ring anchored at each click's true position, identical in the live preview and the exported file.
  • Studio Sound — on-device AI voice enhancement (DeepFilterNet) applied to MP4 exports, off by default, nothing leaves your machine.
  • Silence & filler-word removal — one-click timeline cleanup built on the existing on-device Whisper stack.
  • HEVC export — hardware hvc1 encoding when the platform supports it, at 65% of the H.264 bitrate.
  • Assorted fixes (standalone diagnostic tool schema, etc.).

Setup

Requirements: macOS on Apple Silicon, Node 22 (see .nvmrc), npm 10, and Xcode (for the Swift capture helpers).

git clone https://github.com/AlanRoybal/openscreen-studio.git
cd openscreen-studio
npm install

# Native ScreenCaptureKit + cursor helpers (Swift)
npm run build:native:mac

# On-device Whisper model for captions & audio cleanup
node scripts/fetch-caption-model.mjs

# Optional: DeepFilterNet CLI for Studio Sound (sha256-pinned download)
npm run fetch:deep-filter

# Launch
npm run dev

On first recording, grant Screen Recording and Accessibility (for click capture) in System Settings → Privacy & Security, plus Microphone if you record voice.

Tip

If Electron's binary fails to download during npm install (an npm allowScripts policy can block its postinstall), run node node_modules/electron/install.js once.

How to use

  1. Record — pick a display or window in the recorder HUD, toggle mic/system audio/webcam, hit record. ⌘⇧O opens the app from anywhere.
  2. Edit — the editor opens with auto-zoom suggestions already on the timeline. Drag to adjust zoom regions, press T/A/S for trims, annotations, and speed ramps, tweak the cursor (size, smoothing, click effects), pick a background, generate captions.
  3. Clean up — the waveform button removes long silences and filler words as undoable trims.
  4. Export — choose MP4 (H.264 or HEVC) or GIF, pick a resolution, optionally enable Studio Sound, and export. Encoding is hardware-accelerated end to end.

Development

npm run dev            # Vite dev server + Electron with hot reload
npx tsc --noEmit       # typecheck
npm run test           # unit tests (Vitest)
npm run test:browser   # Pixi/canvas rendering tests (Playwright)
npm run test:e2e       # end-to-end export tests (build with `npm run build-vite` first)
npm run lint           # Biome

Layout: src/ is the React/Pixi editor, electron/ the main process and IPC, electron/native/ the Swift (macOS) and C++ (Windows) capture helpers, src/lib/exporter/ the WebCodecs export pipeline, src/lib/captioning/ the on-device Whisper stack.

Architecture in one paragraph

The recorder writes three artifacts per session: the screen video (native resolution, cursor hidden), a cursor telemetry file (position, clicks, cursor type — captured via a CGEventTap), and a session manifest. The editor and exporter treat the video as just one layer: the synthetic cursor, zoom camera, ripples, backgrounds, and annotations are all composited from metadata at render time (Pixi/WebGL for preview, canvas + WebCodecs for export), which is why everything stays adjustable after recording and why exports match the preview deterministically.

License & credits

MIT — free for personal and commercial use, no paywalls, no premium tiers.

Built on OpenScreen, continued from the original work of Siddharth Vaddem. Voice enhancement uses DeepFilterNet (MIT/Apache-2.0); captions use Whisper via Transformers.js.

About

Open-source screen recorder & editor with Screen-Studio-style auto-zoom, cursor effects, on-device AI voice enhancement, and hardware HEVC export (macOS)

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages