CameraManager is the entry point for the Client SDK. It replaces the manualDocumentation Index
Fetch the complete documentation index at: https://crsdk.app/llms.txt
Use this file to discover all available pages before exploring further.
ServerManager + CameraClient + EventStream workflow — one class handles binary management, camera discovery, connection lifecycle, SSE events, and reconnection.
Server (Node.js)
Import fromcamera-remote-web-api/server. This variant spawns and manages the native binary.
Browser
Import fromcamera-remote-web-api (the default export). Connects to an already-running server — no binary management.
Use
manager.camera(cameraId) to get a bound camera object with all methods pre-bound — no need to pass the camera ID to every call. For direct access, manager.client is also available as a full CameraClient instance. See Properties & Actions.Options
| Option | Default | Description |
|---|---|---|
port | 8080 | Server port (server only) |
autoPort | false | Find next available port if busy (server only) |
binaryPath | auto-detected | Explicit binary path (server only, required in Next.js) |
baseUrl | http://localhost:8080 | Server URL (browser only) |
autoConnect | true | Connect cameras automatically on discovery |
connectionMode | 'remote' | Default connection mode for auto-connect |
autoReconnect | true | Reconnect on unexpected disconnect |
maxReconnectAttempts | 5 | Max reconnect attempts before giving up |
pollInterval | 5000 | Camera discovery polling interval (ms) |
Connection Modes
The connection mode determines what operations are available on a connected camera.| Mode | Description |
|---|---|
remote | Full camera control. Photos auto-transfer to host PC. |
remote-transfer | Full camera control + explicit SD card file download. |
contents | SD card browsing and file download only — no shooting or settings. |
Choosing a mode
I want to shoot and auto-save photos to my computer
I want to shoot and auto-save photos to my computer
Use
remote. Set still-image-store-destination to 0x1 (Host PC) or 0x3 (Both) for auto-transfer. Listen for downloadComplete events to know when files are saved.I want to shoot AND browse the SD card
I want to shoot AND browse the SD card
Use
remote-transfer. You get full shooting control plus explicit file listing and download from the SD card. This is the most flexible mode.I only need to download files from the SD card
I only need to download files from the SD card
Use
contents. No shooting or settings control — just file browsing and download.Lifecycle
Discovery & batch connection
Server-only methods
These are only available on the server variant (camera-remote-web-api/server):
Camera Access
Bound Camera Accessor
manager.camera(id) returns a BoundCamera object with all CameraClient methods pre-bound with the camera ID. This is the recommended way to interact with cameras — it eliminates the need to thread the camera ID through every call.
Available methods
AllCameraClient methods are available without the camera ID parameter:
| Category | Methods |
|---|---|
| Connection | connect(), disconnect(), getConnectionStatus() |
| Properties | getProperty(), setProperty(), getAllProperties(), getPriorityKey(), setPriorityKey() |
| Actions | triggerShutter(), halfPress(), afShutter(), controlZoom(), stopZoom(), focusNearFar() |
| Live View | enableLiveView(), disableLiveView(), getLiveViewStatus(), startLiveViewStream(), stopLiveViewStream(), getLiveViewFrame() |
| OSD | enableOSD(), disableOSD(), getOSDStatus(), getOSDFrame() |
| SD Card | listSDCardFiles(), downloadSDCardFile() |
| Settings | getSaveInfo(), setSaveInfo(), downloadCameraSettings(), uploadCameraSettings(), listSettingsFiles() |
Per-camera events
Theevents property returns a CameraEventStream — a typed SSE client scoped to that camera.
| Method | Description |
|---|---|
on(event, callback) | Subscribe to events |
off(event, callback?) | Unsubscribe |
once(event, callback) | One-shot listener — auto-removed after first fire |
close() | Close SSE connection |
connected | Whether SSE is connected (read-only) |
Manual Connection Control
For full manual control over connection lifecycle — connecting specific cameras, managing state transitions, and handling reconnection yourself — use the stateful API classes directly instead of CameraManager.Stateful API Access
Direct access to CameraClient, EventStream, and ServerManager without CameraManager automation

