A local-first Rust desktop app for instant game clips: record a replay buffer, save the moment with a hotkey, then play, search, trim and export your clips. It works fully offline. There is no account, server, telemetry, upload or share-link service, and everything you record stays on your computer.
Status: early release. Version 0.2.1 is the latest published release. The current source has Windows/AMD and Linux/X11 generated-capture evidence, while real games, other devices and Wayland remain incompletely tested. macOS capture is not implemented. See
docs/gaps.mdfor current evidence and limits.
Automated checks run on Linux and Windows; they do not replace testing on real capture hardware.
Download ClipCraft 0.2.1 as a Windows ClipCraft-Setup installer or a Linux x86_64 tarball. The command-line tool is available as a separate download. The Windows installer works for the current user and needs no administrator rights or account.
Check a download against SHA256SUMS.txt if you like. Downloads are not code-signed, so Windows
SmartScreen may warn: choose More info, then Run anyway. ClipCraft can tell you when a newer
version is published and install it for you (Settings → About); turn the automatic check off under
Settings → General and it never goes online. See CHANGELOG.md for each release.
New profiles get a short setup for storage, capture, audio and shortcuts. Each hotkey action
supports up to five shortcuts: use + in Settings → Hotkeys. Clip-length shortcuts give
keys their own clip length, for example Shift + F8 for the last 2 minutes next to F8 for the
whole replay.
On Wayland, ClipCraft asks the desktop's Global Shortcuts portal to register keys. Settings →
Hotkeys shows the desktop's assigned keys and offers an explicit, default-off keyboard-device
fallback; see docs/linux.md for limitations and permissions.
- Record and replay: capture a screen or game window into a bounded replay buffer and save the last moments with a global hotkey. Game-only mode waits until a recognized game is running and follows it to the window it actually draws in, even when a launcher starts the game process; if no window can be found it records the screen until one appears. The capture bar shows the available replay against the requested clip length and reports when buffered footage is cleared by a source or recording-stream change. Hover over it for the encoder, frame counts, output size, and audio-source status.
- Encoding: hardware H.264 and H.265 on supported GPUs (Windows), or a built-in software H.264 encoder tuned for screen recording (desktop clips are about a third smaller than before). If the graphics-card encoder fails or is busy, recording continues on the processor and the card is tried again every 20 s or longer.
- Audio: system sound and microphone, mixed or on separate tracks, with optional offline microphone noise suppression and a mic test.
- Library: a searchable local clip library with favorites, collections and game labels. Rename a clip (F2) without losing its favorite, collections or game, and delete clips to the Recycle Bin from a right-click menu. A focused card opens with Enter and favorites with F.
- Playback and editing: smooth playback, quick trims, small-file and GIF export, loudness evening, and a small sequence editor with text, fades and colour effects.
- Desktop: searchable, categorized Settings; system tray (Windows); a "clip saved" pop-up that never takes focus from your game; optional Discord Rich Presence.
- Bug reports: Settings → About lets you prepare and review a report locally, optionally add basic recording settings, and copy it. Open the GitHub form separately if you choose to share it.
- Command line:
clipcraft-cliruns the same commands as the app.
For a bug report without the desktop UI, pass JSON such as
{"observed":"Clipping stopped","steps":"Press F8","include_settings":false} to
clipcraft-cli bug-report on standard input. It prints the report locally and does not submit it.
Details and known limits for every feature are in docs/features.md.
ClipCraft 0.2.0 on Linux, shown with generated sample clips.
Clip library — browse, search, and send a clip to the editor.
Editor — arrange clips, split them on the timeline, and export the result.
Capture settings — choose a game or desktop source and configure recording.
Windows/Linux/macOS game-only capture evidence, a low-copy GPU capture path, opt-in client-side encrypted backups, controller shortcuts and overlays. Voice/video calls, social feeds and sharing links are not planned. See the roadmap and backlog.
The app, engine, capture, playback, CLI and tooling are Rust workspace crates, using pinned
open-source FilmCraft crates for media. Captured media,
settings, thumbnails and the library index stay on the device, and source clips are never
overwritten by trim or export. FFmpeg is used only as an external test tool. Source boundaries are
in docs/upstream-ports.md.
To recognize games, ClipCraft reads the list of running programs and Steam's local game-list files on your computer; nothing from them leaves the device. Steam's files are re-read only when a game is installed or removed (or on Refresh, or every 30 minutes). On Windows it finds Steam's folder from the registry, so Steam installed on another drive works too. Turn off Switch recording automatically in Settings → Games to stop both.
Install the pinned Rust toolchain with rustfmt and clippy, then install the license checker:
cargo install cargo-deny --version 0.20.2 --locked
cargo xtask ci
cargo run --package clipcraftcargo xtask ci runs the same checks as GitHub Actions on Linux and Windows; tests clean their scratch
folders with a retry so a finishing capture worker cannot make them flaky, and timing checks are tied
to the behaviour they test (for example the post-roll length) instead of a tight wall clock, so a busy
CI machine does not fail them. Run the Windows lint from Linux before pushing:
cargo clippy --workspace --target x86_64-pc-windows-gnu --all-targets -- -D warnings.
Useful local CLI commands:
cargo run --package clipcraft-cli -- help
cargo run --package clipcraft-cli -- capture targets
cargo run --package clipcraft-cli -- capture record --seconds 30
cargo run --package clipcraft-cli -- library scan /path/to/clips
cargo run --package clipcraft-cli -- library probe /path/to/clip.mp4
cargo run --package clipcraft-cli -- library rename /path/to/clip.mp4 "Ace clutch"
cargo run --package clipcraft-cli -- clip trim input.mp4 output.mp4 2 8
cargo run --package clipcraft-cli -- clip export input.mp4 smaller.mp4 2 8 10
cargo run --package clipcraft-cli -- clip gif input.mp4 clip.gif 2 8
cargo run --package clipcraft-cli -- clip normalize input.mp4 even.mp4 0 30 -16
cargo run --package clipcraft-cli -- diagnoseThe desktop app needs a graphical session and an available capture provider for recording. See
docs/testing.md for focused test commands and platform evidence requirements.
For compression, the last CLI argument is the estimated target in decimal MB. In the player, open
Trim (T), choose an Export option, and save the new file beside the original. If the first encode
comes out bigger than the target, it is encoded once more at a lower bitrate (and, for a big
overshoot, a smaller picture) before anything is saved; the completion message and CLI JSON report
the actual bytes and whether it was re-encoded (retried).
CHANGELOG.md— what each release contains.docs/features.md— detailed features and platform limits.ROADMAP.md— milestone status and release gates.PLAN.md— product direction, architecture choices, and intended MVP.docs/gaps.md— ranked limitations and the evidence behind each status.docs/backlog.md— stable work IDs, requirements, and acceptance evidence.AGENTS.md,CLAUDE.md, andCONTRIBUTING.md— contributor rules and workflow.docs/architecture.md,docs/testing.md, anddocs/issue-requirements.md— implementation boundaries and verification requirements.ATTRIBUTION.md— shipped assets and licenses.docs/upstream-ports.md— the scope, source, and revisions of Rust ports from reference projects.
Documentation is part of every implementation change. The PR gate requires changes under apps/,
crates/, or tools/ to update both this README and docs/gaps.md; update the
roadmap, backlog, architecture, and testing docs when their status or guidance changes.


