Free, open-source camera app

Capture camera images
and video.

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.

  • Published downloads include FFmpeg. Supported connections use no vendor SDK.
  • The CLI returns JSON for scripts and coding agents.
  • Simulator cameras let you start without hardware.
Capturefab desktop with a simulator camera preview, focus and exposure scopes and the camera's Features inspector
Actual desktop interface from a development build with simulator cameras. Select the image to enlarge it.
GigE VisionUSB3 VisionWebcamsONVIF / RTSP / SRTHome Assistant / Frigate / UniFi ProtectVideo filesDocument scanners

Camera support depends on the device, connection and operating system. Read the connection guide →

See the controls and the result

See Capturefab in action.

These short clips show the desktop app with simulator cameras. Each clip plays in a loop without sound. Use the controls to pause it.

01 / Live images

Compare camera previews

Four cameras share the workspace. A CLI command changes exposure on one camera while the other previews continue.

8-second loop at the recorded speed. Four simulator cameras in a development build. Read about live previews →

Examine before you capture

Keep the image and its controls together.

Use camera features, image scopes and capture settings in the same app.

Features inspector with Quick controls for exposure, gain and frame rate, plus collapsed groups for additional camera settings

Adjust camera settings

Read feature names, values and limits. If the camera supports the controls, set exposure, gain and image dimensions.

Camera features →
Capture inspector with manual capture controls first, followed by options, scheduling, storage and shell access

Set the output

Save one image or a sequence. Select the format, frame count and storage limits before capture.

Capture settings →

Screenshots show the actual development interface with simulator data. Features can differ from the published release.

Choose how to control the cameras.

People, scripts and agents can share a camera session. The preview and Activity log let you review actions and take control.

Your coding agent

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 instructions

The built-in assistant

Choose 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 Intelligence

You, at the controls

Connect 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.

Try a manual capture

Desktop and CLI in one session

See what your agent does.

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 --json
Capturefab terminal commands for simulator discovery, feature changes and image capture with JSON results
Actual command output from the simulator. The CLI supplies JSON results and exit codes for scripts.

Capture, store and analyze

Keep files and capture data together.

Save capture times and tags with each cataloged image. Use saved destinations to save files on your disk, removable drives or mounted network folders.

Datasets and exports

Catalog images, recordings, timestamps and tags in DuckDB. Export Parquet or CSV tables with a manifest for analysis tools.

Catalog capturesExport camera data

Camera hubs

Save a Home Assistant, Frigate, go2rtc or UniFi Protect server. Its cameras then open as usual sources.

Open hub cameras

Folders and drives

Save to folders on your disk, removable drives or mounted network drives.

Set up destinations

Try it without a camera

Capture your first simulator image.

The built-in simulator supplies test images. Use it to learn the app or test a script.

  1. 1

    Open Capturefab

    Extract the desktop download. Open the app. Select Try a simulated camera on the welcome screen.

  2. 2

    Connect a Pattern camera

    Select a simulator camera. Start its stream. Select the preview to open its settings.

  3. 3

    Capture an image

    Open Capture. Set an output name and image format. Capture a frame.

Capture from the terminalCLI
# Find available cameras
capturefab discover

# Save a simulator image
capturefab --camera sim:0 capture -o first.png

# Read camera features
capturefab --camera sim:0 features

Read the quickstart →

Get Capturefab

Download 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.

Capture with clear limits

Keep control of files and storage.

Each camera runs in a separate process. Live previews use the newest frame. Capture and recording use storage limits.

Read about the architecture →
Protect existing files
Capturefab does not replace an existing file when its name matches the output name.
Set storage limits
The default storage budget is 10 GiB and 10,000 files. Capture stops at the limit. Deleting eligible old files is optional.
Run locally
Capturefab has no telemetry or automatic update requests. You can capture camera images without a cloud account.

Before you download

What changed in version 0.4.0?

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.

Which cameras can I connect?

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.

Do I need a vendor SDK or FFmpeg?

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.

Can I use Capturefab for commercial work?

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.

Does Capturefab send my images to a cloud service?

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.

Can a script control an open desktop session?

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.

What happens at the storage limit?

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.

How do I verify a download?

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.

Start with the simulator

Capture your first frame.

Download the app. Try a simulator camera. Then connect your own source.

Build Capturefab from source

Build requirements

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