Browse desktop and browser topics

Documentation / Reference

Desktop and browser controls

Find an action, understand its effect and read its limits. Use the task guides for step-by-step capture workflows.

Open cameras in separate windows

Each desktop window shows one camera. All windows in the same app share the capture session.

  1. Choose File → Connect to Camera… to open the camera picker.
  2. Select a discovered camera, or enter its address.
  3. For another camera, choose File → Connect to Camera… again.

If a window already shows that camera, Capturefab brings the window forward. A camera connected by an agent also gets a window.

The picker keeps up to six recent cameras. Move the pointer over a recent camera to show Forget. Forgetting removes the shortcut.

Closing a camera window disconnects that camera. Capturefab asks for confirmation if it is recording. Closing the last window quits the app.

Quitting with an active assistant task opens a separate decision. Review that decision before stopping the app.

Appearance, interface size, recent cameras and output settings are shared. Each window keeps its own layout and open panels.

Camera connections, schedules and session history belong to the running session. Saved files remain after exit. See session control.

Change desktop preferences

Open Settings from the camera picker, the macOS application menu, or with ⌘, or Ctrl+,. Preferences apply immediately, except API keys.

Settings and their effects
SettingChoices and behavior
AI assistantConfigure the provider, model, credentials and assistant defaults. Apple Intelligence uses the local system model and no API key.
AppearanceSystem follows the computer's appearance. Light and Dark keep the selected appearance.
Interface sizeStandard uses normal text and controls. Large increases both by 15%. Larger increases both by 30%.
PerformanceChoose Automatic, Smooth or Efficient. See performance behavior.
Resource usage & limitsOpen CPU, memory and disk measurements. See resource limits.
Include simulated camerasInclude built-in simulators in discovery so you can practise without hardware.
Start the live view when a camera connectsStart preview automatically for supported cameras. A document scanner always waits for an explicit scan.
UpdatesCheck for new versions automatically, at most once a day; Check Now checks immediately. See update checks.
Prompt measurement keysSave or remove provider keys used by prompt measurements. Select Save key to store a new key.

On macOS, Settings opens in a separate window. The app opens only one Settings window at a time.

A saved API key uses the operating system's credential store. Ordinary preferences do not contain API keys.

Apple Intelligence displays local model availability and a Test local AI button. It has no model picker, server field or image-sharing control.

The local model can use text, numeric observations and permitted data results. It cannot view camera images. See requirements and troubleshooting.

Check for new versions

The desktop app reads the public release list at most once a day. It never downloads or installs anything itself.

The check is one request for https://capturefab.com/releases.json. It sends no account, device, usage or version information and sets no cookies; the server sees your IP address, as for any website visit. The first check runs shortly after launch.

Choose Check for Updates… to check now. The Software Update sheet shows the new version's highlights, Download for this computer, Release Notes and the file's SHA-256 to compare with SHA256SUMS. Skip This Version stops the notice and menu title for that version. Install a download the same way you installed this version; recordings and schedules keep running until you quit.

In Settings › Updates, turn off Check for new versions automatically, or use Check Now. The line below shows when the last check ran and what it found.

Managed installs can turn off every check with CAPTUREFAB_UPDATE_CHECK=off or a policy file; see update checks.

Connect, configure and examine cameras

The camera supplies its available controls, allowed values and access rules. Capturefab displays those controls in the inspector.

  1. Use Discover Cameras to refresh available sources.
  2. Select a source, or enter a supported camera or stream address.
  3. Open Camera Features to examine its controls.
  4. Search by feature name or an ordinary term, such as “exposure” or “image size”.
  5. Enter a supported value, then apply the edit.

Common controls include exposure, gain, image size, pixel format, frame rate, triggers and device commands. Availability depends on the camera.

Read-only controls show their values. Locked controls cannot change in the current camera state. Stop acquisition when the camera demands it.

Refresh Features reloads the camera's current values and access rules. A selector change can alter the controls available under that selector.

Save Setup… saves the camera's settings by name. Restore Setup… compares a saved setup with the camera and restores it as one change that Undo reverts. See saved setups.

Use Auto Exposure lets Capturefab adjust supported exposure controls. Use Manual Exposure stops those adjustments.

Auto exposure includes rate constraints and optional white-balance controls where supported. See auto exposure and frame rate.

GigE network report

After a GigE camera is found or attempted, the picker offers Scan network. Before that, use Check network in Help.

  1. Stop recording, forwarding and schedules on the cameras you will tune.
  2. Select Scan network.
  3. Read the interface, reachability and camera results.
  4. Use Report to reopen the latest results.

The scan distinguishes discovery, control access and observed streaming. It reports link speed, MTU, packet tests and unsupported settings.

Connected GigE cameras receive supported packet and bandwidth settings. Preview can pause briefly during tuning. Host addresses, routes and MTUs stay unchanged.

Camera types change the order of relevant controls. They do not add capabilities missing from the source.

See camera hubs and document scanners for their connection and acquisition procedures.

Read the image view

The preview helps you frame and focus the image. Saved raw data preserves the camera's measurement values.

Image view controls
ControlEffect
Start/Stop StreamStart or stop continuous preview acquisition for the selected camera.
Zoom to FitFit the full preview within the available area.
Actual PixelsShow the preview at 1:1 scale.
Zoom In / Zoom OutChange the display magnification.
Image OnlyHide panels to give the image more room.
Full ScreenUse the screen for the current window.
Show HistogramShow the distribution of intensity values, including shadow and highlight information.
Show Focus RegionShow a movable measurement region and its sharpness scores for supported intensity images.

Focus scores compare images from the same scene and settings. They are not a calibrated distance measurement. See histogram and focus.

Line-scan previews show recent received rows. Gaps mark skipped blocks in that display. The focus-region control is unavailable for line-scan sources.

Depth previews use scalar colors. Thermal previews use a heatmap. Their color range adjusts to available raw values.

Display colors are not physical units. Save raw data and use the camera's calibration for numeric measurements.

The frame-rate display describes the preview. See Frame delivery to distinguish skipped previews from lost camera frames.

Save and review desktop output

The Capture panel controls image files and schedules. The Video panel controls recording and forwarding.

Output tasks and detailed instructions
TaskProcedure and limits
Save one image or a sequenceSelect the destination, filename, format and count. Use capture instructions.
Construct filenamesSelect a naming preset or edit the template. Choose collision handling. See filenames and tags.
Add capture contextAdd tags such as line, station, part or lot. Review the next filename preview before capture.
Schedule a sequenceSet the interval, count and start time. Examine progress or cancel from scheduled captures.
Catalog capturesUse Catalog captures automatically, or open a dataset. Review its summary and export it with dataset controls.
Configure destinationsCreate, edit or remove a folder destination. See destination setup.
Limit storageSet file budgets and retention policies. See storage and retention.
Record videoSelect a local file and explicit bounds. Start or stop the recording. See video recording.
Forward videoEnter the target and encoding options. Start or stop forwarding. See stream forwarding.

Expand optional controls when you must change defaults. If validation fails, the app reveals the affected field and its error.

Activity shows requests, errors and saved paths. Copy paths or select Show in Finder, Show in Explorer or Show in folder to find local output.

The shared activity view identifies people and agents. It retains commands and job progress when you switch cameras.

Raw logs provide diagnostic messages with timestamps. Copy log includes dates and time-zone offsets for reports.

Undo and Redo follow the focused editor or reversible camera change. Read the action label before using them.

Undo does not remove saved files or reverse schedules or recordings. See undo limits.

Control preview performance

The Performance preference controls preview work. Capture and recording continue to receive their acquired frames.

Performance choices
ChoiceBehavior
AutomaticChoose Efficient for a small or low-power computer, software rendering, sustained preview lag or device pressure. Otherwise choose Smooth.
SmoothDraw camera frames as often as the display refreshes.
EfficientDraw up to 15 preview frames per second, limit scaled previews to 1280 pixels and skip animations. New recordings use faster encoding settings.

The preference includes a reason when Automatic chooses Efficient. Sustained recovery allows Automatic to return to Smooth.

A slow-preview badge can offer Use Efficient mode. Select it to reduce preview work.

--efficiency or CAPTUREFAB_EFFICIENCY can override the desktop preference. The app displays the override.

Changing the preference does not restart active recordings. The effective CPU limit also depends on resource safeguards.

Measure resource use and set limits

Open Resources from the toolbar or Settings → Resource usage & limits. It shows current capacity and work limits.

  1. Read Frame delivery and the resource summaries.
  2. Select Adjust beside the resource you want to change.
  3. Select an explicit limit or Automatic.
  4. Read the effective limit and messages after the change applies.

Limits apply automatically across Capturefab processes using the same saved settings. Active recordings are not restarted.

Resource measurements and limits
ResourceWhat the panel measuresWhat its limit controls
CPUTotal device CPU load and idle capacity.Image-processing threads and new software encoders. It is not an operating-system CPU quota.
MemoryReserved shared camera buffers, their budget and available system memory.New shared camera buffer allocations. It does not cap total app memory or remove existing buffers.
DiskCapture storage use and capacity remaining within the storage policy.The capture storage budget and retention policy.

Automatic limits

Automatic CPU work leaves one core free where possible, with at most eight image-processing threads. Device pressure can reduce that count.

Automatic camera buffers use one quarter of total memory, within 512 MiB to 2 GiB. Unknown memory size uses 512 MiB.

Explicit settings remain upper bounds. Safeguards can lower effective CPU limits under device pressure.

Automatic work limits resets CPU and camera-buffer limits. It does not reset the disk storage policy.

An older resource settings file can contain a retired upload limit. Capturefab ignores that field and retains CPU and camera-buffer settings.

Frame delivery

The panel reports the last ten seconds. Camera frames lost means loss on the camera link or inside its worker.

Preview frames skipped means a newer preview replaced an older one. Efficient mode can intentionally skip previews.

Skipped previews do not mean captured or recorded frames were lost. Investigate reported camera loss separately.

Encoder counters report frames lost or delayed by recording and stream output. Investigate these separately from camera-link loss and skipped previews.

Unavailable or stale measurements are labelled. They must not be read as zero usage.

Read session acquisition analytics

Open Analytics in the toolbar, then select Acquisition. This view measures all cameras in the current session.

Charts show frame rate, acquired payload rate, missed frames and data volume by camera. Summaries refresh every five seconds.

Payload means acquired image data before encoding. It is separate from saved file size.

Missed frames count camera-link and worker loss. Skipped previews are separate. Session totals continue across camera reconnects.

  1. Select Show history data to open the current data snapshot.
  2. Use its page controls to move through the rows.
  3. Select Update history to load the latest charted report.

The chart retains at most 24 hours. The history contains one-second samples for all cameras, within 250,000 rows.

Session totals can include earlier activity outside the chart's retained period. Time with no connected camera appears idle.

History rows show time-bucket averages and observed totals. The horizontal axis starts at the first retained sample, which can differ from session start.

Camera data-volume bars compare up to five of the largest session totals. The lines connect observations; missing samples do not become new measurements.

The analytics database stays in memory. Closing the session clears it. A dataset is the separate feature for retained capture records.

On a remote server, Capture insights shows the same acquisition measurements. See monitoring endpoints.

Collect numeric measurements with a model

Prompt measurements send sampled camera images to a model. The model returns numbers, confidence values and notes.

  1. Open Settings → Prompt measurement keys.
  2. Select OpenAI, Gemini or Claude.
  3. Enter the provider key.
  4. Select Save key.
  5. Connect a camera and start its stream.
  6. Open Analytics → Prompt measurements.
  7. Select the provider and enter a vision model that supports structured JSON.
  8. Select Add measurement.
  9. Enter a name, a numeric question and an optional unit.
  10. Set Sample every between 5 and 3,600 seconds.
  11. Select Start collection.

The default interval is 30 seconds. Configure up to 16 measurements. Each request sends the sampled image and the measurement prompts.

Example measurements
NamePromptUnit
TubesCount the visible tubes.tubes
Ribbon lengthEstimate ribbon length in meters using the visible ruler.m
Occupied spacesCount marked spaces that contain a box.spaces

For physical dimensions, give scale or calibration information in the prompt. Treat model values as estimates. Unsupported measurements are recorded as unknown.

Collection behavior

Collection stays attached to the camera selected at start. Changing cameras in the workspace does not retarget that collection.

Editing the configuration pauses collection. Select Start collection again to apply the edited settings.

Only one request runs at a time. The next interval starts after the response. Repeated frames are skipped.

Stop collection prevents new calls and discards an unfinished response. The network request might still finish at the provider.

A provider, validation or database error pauses collection. Stopping the stream or disconnecting the camera also ends collection.

History, privacy and keys

Results record camera, frame, prompt, provider, model, value, confidence and note. Unknown values appear as gaps, not zero.

History retains at most 24 hours and 10,000 rows in memory. Charts show up to 24 separate series panels.

Closing the app clears measurement history. Provider, model, prompts and interval remain saved. A new app session starts with collection paused.

Raw images and keys are not stored in the measurement database. Images are sent to the selected provider using your API account.

Environment keys override saved keys: OPENAI_API_KEY, GOOGLE_API_KEY, GEMINI_API_KEY and ANTHROPIC_API_KEY.

For Gemini, a nonempty GOOGLE_API_KEY takes priority over GEMINI_API_KEY. Restart the app after changing its environment.

Refresh reloads credential status without showing the key.

Remove saved key removes the credential-store entry. It does not remove an environment variable.

These keys are shared with matching assistant providers. Saving or removing one affects both features.

Prompt measurements collect configured numbers. The assistant is a separate interface for planning or carrying out camera tasks.

Use keyboard controls

Use Tab and Shift+Tab to move through controls. The focused control receives typing and its normal activation keys.

Letter shortcuts such as H, R and F work when a text field is not using the keyboard.

Enter applies the focused field or activates its control. In Quick Command, Enter sends a request or commits an edit; it never runs a plan.

Escape closes the current panel. On macOS, Command+Period also closes a panel.

Desktop shortcuts
ActionmacOSWindows / Linux
Connect another camera⌘NCtrl+N
Enter camera address⌘LCtrl+L
Discover cameras⌘RCtrl+R or F5
Start or stop streamSpaceSpace
Capture / Capture All⌘S / ⇧⌘SCtrl+S / Ctrl+Shift+S
Start or stop recording⇧⌘RCtrl+Shift+R
Switch auto/manual⇧⌘ACtrl+Shift+A
Search features⌘FCtrl+F
Features / Capture / Video⌘1 / ⌘2 / ⌘3Ctrl+1 / Ctrl+2 / Ctrl+3
Zoom in / out⌘+ / ⌘−Ctrl+= / Ctrl+−
Fit / Actual pixels⌘0 / ⌥⌘0Ctrl+0 / Ctrl+Alt+0
Activity / Inspector⌘J / ⌘ICtrl+J / Ctrl+I
Show or hide sidebar⌥⌘SCtrl+Alt+S
Image only / Histogram / Focus regionF / H / RF / H / R
Copy session command⇧⌘CCtrl+Shift+C
Full screen⌃⌘FF11
Quick Command⌘KCtrl+Shift+K
Settings⌘,Ctrl+,
Help⌘? or F1F1 or Ctrl+/
Undo⌘ZCtrl+Z
Redo⇧⌘ZCtrl+Shift+Z or Ctrl+Y
Close window⌘WAlt+F4 on Windows; Ctrl+W on Linux
Quit⌘QFile → Exit on Windows; Ctrl+Q on Linux

Keyboard focus scrolls hidden controls into view. An invalid field is revealed so you can correct it.

Screen-reader labels identify controls and current values. Availability depends on the platform's accessibility support and the selected source.

Control a server from a browser

The browser controls a running Capturefab server. Cameras, jobs and files remain on that server.

  1. Start the server with an explicit listening address.
  2. Open the reported URL from a computer that can reach that address.
  3. Select Discover or use More connection options.
  4. Connect a camera.
  5. Select Start stream to see its preview.
capturefab serve --name remote --listen 127.0.0.1:8787

This example accepts connections from the same computer. Use the server's private network address for another computer.

Anyone who can reach the listener can control the session. Configure host firewall and network access accordingly.

For tailnet setup, HTTPS and service operation, use the remote control guide.

Browser controls
AreaActions and behavior
CamerasDiscover, include simulators, connect by address, select a connected camera and disconnect it.
Camera settingsSearch advertised features, edit supported values, run device commands, reload features and select auto or manual exposure.
Live previewStart or stop the stream. Preview updates at up to four frames per second and fits within 1280×720.
Save capturesChoose a server destination, output filename, format, frame count, byte limit and file limit. Select Save frame or Save frames.
Timelapse scheduleUse the capture settings with an interval and optional local start time. Select Schedule timelapse.
Capture jobsRead count, progress, next frame, saved file and errors. Refresh the list or cancel an active job.
Capture insightsRead acquisition rates, frame loss, data totals and charts for all cameras.
Session activitySet your participant name. Read actions and progress from people and agents.
Server logRead recent connection and diagnostic messages with timestamps.

The browser lists destinations already configured on the server. Use the desktop or CLI to create or change them.

The browser does not include desktop recording, forwarding, dataset, assistant, focus-region or resource-setting controls.

Use the CLI against the same server session for those operations. They remain subject to the installed build's capabilities.

Files are never overwritten by browser capture. Relative paths use the server's working directory, not the browser's downloads folder.

Multiple-frame captures run as background jobs. Jobs continue after the tab closes while the server keeps running.

Server restart ends connections and schedules. Browser tabs keep separate camera selections, participant identities and input drafts.

Hidden tabs pause their preview and status requests. Showing the tab resumes updates. This does not stop server acquisition.

Read server monitoring endpoints

An enabled HTTP listener exposes read-only status and monitoring endpoints alongside the browser interface.

Monitoring endpoints
PathResult
/healthReadiness, version, uptime, camera counts and analytics health. Returns HTTP 503 while stopping or when analytics is unavailable.
/metricsPrometheus session and camera counters, including acquired frames, lost frames and skipped previews.
/api/analyticsSession totals, per-camera summaries and retained time-series samples.
/api/analytics.svgAcquisition dashboard image. Optional ?width=900 selects width within 180–2048 logical pixels.
/api/resourcesCPU, shared camera-buffer and disk measurements with their effective limits.
/api/measurementsRetained prompt-measurement rows when the server build includes AI support.
/api/measurements.svgPrompt-measurement chart when the server build includes AI support.

These monitoring routes accept GET and HEAD. Browser API requests must match the server's origin.

Session control routes

HTTP control endpoints
Method and pathResult
GET /api/sessionConnected cameras, their current state and shared activity.
GET /api/activityActivity revision and retained history. Add ?after=12&timeout_ms=20000 to wait for changes after revision 12.
GET /api/destinationsSaved destination names, kinds and locations, without credentials.
GET /api/storageServer storage policy and usage.
GET /api/preview?camera=sim:0&format=jpegLatest scaled preview. Returns 204 when unavailable, or 304 when its ETag matches If-None-Match.
POST /api/commandSend a versioned session command. Files and jobs remain on the server.

POST requests use a JSON body with version: 1, an optional camera and a command object.

For example, send {"version":1,"command":{"op":"connect","camera":"sim:0","timeout_ms":2000}} to connect a simulator.

Responses use {version, ok, result}, or an error when ok is false. Actor names identify participants; they do not authenticate them.

Measurement routes expose history only. They do not configure provider credentials or start collection.

An idle server with no cameras can be ready. A previous camera command error does not by itself fail readiness.

See the HTTP automation contract for session commands, activity and preview headers.