Open-source Screen Studio for Windows.
Record your screen. Dolly re-renders your cursor with spring physics, auto-zooms on your clicks, and exports something that looks like a human camera operator was following the action. Local-only. No subscription. No watermark.
🎥 A dolly is the rig that makes film camera movement smooth. That's the whole product: a virtual dolly operator for your screen.
Screen Studio made recordings look cinematic and became the default for indie devs and product people — on macOS only, with no Windows version announced. Windows users get closed-source clones: version-locked lifetime licenses, subscriptions, watermarked free tiers, mixed reliability. The one open-source player in the space centers on Loom-style cloud sharing, not the render pipeline.
Nobody has shipped the thing itself: an open, local, Windows-first recorder where the output quality is the product.
The polished look isn't a filter. It's an architecture:
- Capture the screen with the cursor excluded (Windows.Graphics.Capture supports this natively).
- Log raw input — mouse positions at hardware rate, clicks, scrolls, keypress timing (never key identities).
- Re-render in post: a synthetic vector cursor glides on a critically damped spring; a virtual camera pushes in on click clusters, holds, and pulls back when you go idle.
Because the cursor is synthetic, you can resize it, restyle it, motion-blur it, or hide it after recording. Because the camera is solved from the event log, every zoom is editable data, not baked pixels. Recordings stay raw + non-destructive edits forever.
🚧 Early — engine-first development.
| Piece | Status |
|---|---|
dolly-core — spring physics, cursor solver, auto-zoom clustering, camera solver, project format |
✅ implemented + unit-tested |
dolly-capture — capture/input traits + deterministic mock backend |
✅ implemented |
| Windows capture backend (windows-capture / Graphics Capture API + LL input hooks → events.jsonl) | ✅ implemented |
Editor app (dolly-app, Tauri): live preview, zoom-block timeline, style sidebar, record button |
✅ first cut |
| GPU renderer + exporter (crop → cursor composite → style frame → encode) | 🔜 next |
| Webcam / mic / system audio | planned |
| AI layer (auto-docs from recordings, à la Clueso) | someday |
The engine is deliberately platform-independent and test-driven: camera feel gets tuned in unit tests with synthetic sessions, not record-render-squint loops.
crates/
├── dolly-core # the brain: events → render plan (cursor + camera per frame)
├── dolly-capture # capture behind traits; mock backend + real Windows backend
└── dolly-app # Tauri editor: preview canvas, zoom timeline, style sidebar
docs/
├── RESEARCH.md # competitive + technical research that shaped the design
└── ARCHITECTURE.md # system design and key decisions
cargo test # runs everywhere — core is platform-independent
cargo run -p dolly-capture --example record_monitor --features win-capture # headless capture check (Windows)
cd crates/dolly-app && cargo run # the editor app (no npm needed — static frontend)The editor opens with a synthetic mock session on any OS; on Windows the ⏺ Record button captures the primary monitor for real. Windows-specific capture code is feature-gated (win-capture) and built on windows-latest CI runners; dolly-app is excluded from the workspace so plain cargo test --workspace never needs a webview toolchain.
MIT