Compare camera previews
Four cameras share the workspace. A CLI command changes exposure on one camera while the other previews continue.
Free, open-source camera app
Connect supported cameras and network streams. Preview images, adjust settings and save files with desktop controls, scripts or AI agents.
Free and open source (MIT). macOS, Windows and Linux.
App and CLI in one download.

Camera support depends on the device, connection and operating system. Read the connection guide →
See the controls and the result
These short clips show the desktop app with simulator cameras. Each clip plays in a loop without sound. Use the controls to pause it.
Four cameras share the workspace. A CLI command changes exposure on one camera while the other previews continue.
A CLI command saves three frames, then one PNG image. The desktop app shows the saved result.
Examine before you capture
Use camera features, image scopes and capture settings in the same app.

Read feature names, values and limits. If the camera supports the controls, set exposure, gain and image dimensions.
Camera features →
Save one image or a sequence. Select the format, frame count and storage limits before capture.
Capture settings →
Use the focus metric and histogram to examine changes in the live image.
Preview and image scopes →Screenshots show the actual development interface with simulator data. Features can differ from the published release.
People, scripts and agents can share a camera session. The preview and Activity log let you review actions and take control.
Use Claude Code, Codex, Antigravity or another agent that runs CLI commands. Capturefab supplies camera tools and JSON results.
Your agent manages its model access. Capturefab provider settings are unnecessary for this method.
Set up an external agentDownload agent instructionsChoose a provider in Settings → AI assistant. Supported Macs can use Apple Intelligence for local text assistance.
Review a plan before execution, or run a task with limits. Image sharing and dataset sharing have separate permissions.
Set up the AI assistantUse Apple IntelligenceConnect a camera and capture directly. Use the preview, image scopes and settings to guide or take over the work.
Start with sim:0 before connecting hardware. Provider credentials are unnecessary for direct capture.
Desktop and CLI in one session
Pin a named session and camera. Give the agent a recognizable name. Activity shows its actions, saved files and errors.
# Open a named desktop session
capturefab gui --name bench
# Use another terminal for these commands
capturefab --session bench --actor capture-agent --actor-kind agent connect sim:0 --json
capturefab --session bench --actor capture-agent --actor-kind agent --camera sim:0 capture -o 'shot-{seq}.png' --json
capturefab --session bench status --jsonCapture, store and analyze
Save capture times and tags with each cataloged image. Use saved destinations to save files on your disk, removable drives or mounted network folders.
Catalog images, recordings, timestamps and tags in DuckDB. Export Parquet or CSV tables with a manifest for analysis tools.
Catalog capturesExport camera dataSchedule image captures, record video files or forward a live stream to an existing server.
Schedule capturesRecord videoForward a streamSave a Home Assistant, Frigate, go2rtc or UniFi Protect server. Its cameras then open as usual sources.
Open hub camerasSave to folders on your disk, removable drives or mounted network drives.
Set up destinationsTry it without a camera
The built-in simulator supplies test images. Use it to learn the app or test a script.
Extract the desktop download. Open the app. Select Try a simulated camera on the welcome screen.
Select a simulator camera. Start its stream. Select the preview to open its settings.
Open Capture. Set an output name and image format. Capture a frame.
# Find available cameras
capturefab discover
# Save a simulator image
capturefab --camera sim:0 capture -o first.png
# Read camera features
capturefab --camera sim:0 featuresGet Capturefab
Free. No account. One download includes the app and the CLI.
Latest release: see all downloads
Choose your operating system and processor. Every download includes the app and the CLI.
Published downloads
Select a build, or open all downloads below.
Compare this command's result with the SHA-256 checksum.
Capture with clear limits
Each camera runs in a separate process. Live previews use the newest frame. Capture and recording use storage limits.
Read about the architecture →Built-in S3, FTP and SFTP uploads and industrial signal sources were removed. Local folders, mounted network drives and stream forwarding remain available. Legacy transfers do not resume. Read the upgrade notes before replacing an existing installation.
Capturefab supports GigE Vision, USB3 Vision, host cameras, network streams and other sources. Support depends on the device and operating system. This is an initial implementation with less feature coverage than some vendor SDKs. Read the connection guide and camera compatibility notes for device requirements.
No. Published downloads include FFmpeg for host cameras, streams and video encoding. You must supply the operating system's graphics, USB and camera drivers. USB3 Vision cameras on Windows must have WinUSB. Read the installation instructions.
Yes. Capturefab uses the MIT license. The separate FFmpeg executable uses GPLv3. Each release includes the corresponding source and license notices. Read the licensing details before redistribution.
Capture saves images to files. Stream forwarding sends video to the receiver you configure. The assistant sends prompts and session details to the selected provider. Apple Intelligence runs locally and accepts text only. Other providers share images and dataset rows only with separate permission.
Prompt-driven video analytics sends sampled images when you start collection. External agents control their own data sharing. Read about the assistant, destinations and video analytics.
Yes. Camera commands automatically use the only desktop or headless session that is open. Use capturefab sessions to list sessions. Use --session NAME to select one when several sessions are open. Read about sessions and automation.
Capturefab stops capture or recording. It returns exit code 6 and a message that identifies the limit. Capturefab disables automatic deletion by default. --delete-oldest permits deletion of unchanged Capturefab files.
The download selector shows a SHA-256 command and the correct checksum. Run the command for the downloaded file. Compare its result with the correct checksum. The full download list also includes checksums. You can verify GitHub build provenance with gh attestation verify FILE --repo capturefab/capturefab.
Use a stable Rust toolchain, a C compiler and CMake. For x86 builds, NASM is also necessary for libjpeg-turbo. FFmpeg is necessary for webcams, streams and recording. Read the build guide for configuration.
git clone https://github.com/capturefab/capturefab
cd capturefab
# Desktop app and CLI
cargo build --release
# Headless CLI
cargo build --release --no-default-features --features usb,jpeg
target/release/capturefab --camera sim:0 capture -o first.png