Skip to main content

Record Manager

Record, segment, and upload video or sensor data.

nimbus record <command>
CommandDescription
recorders-statusShow status of managed recorders
cli-recorders-statusShow CLI-created recorders
start-recordStart a one-off CLI recorder
stop-record <id>Stop and remove CLI recorder
start-segment <id>Begin DVR segment (managed recorder) by id or alias
stop-segment <id> [--file-name <name>]End DVR segment (managed recorder) by id or alias, with optional export base name
discard-segment <id>Discard current active or pending DVR segment (managed recorder) by id or alias without finalizing a recording artifact
report-recording-event [--video-alias <alias>] [--snapshot-alias <alias>] [--name <name>] [--tag <tag>] [--description <text>]Report an event with explicit recording and snapshot selections; each alias option can be repeated.
query-recordingsQuery local recording metadata
get-recording <file-id>Show one recording by stable file id
syncRun the shared storage maintenance cycle for files and recordings
export-recording-profile <path>Export current RecordingProfile to a JSON file
import-recording-profile <path>Import RecordingProfile from a JSON file and apply it
resources-storage-statusShow current resources storage configuration
export-resources-storage-config <path>Export resources storage config to a JSON file
import-resources-storage-config <path>Import resources storage config from a JSON file and apply it

Synchronization​

nimbus record sync runs the same maintenance cycle as nimbus file sync: local expiry, quota cleanup, recording metadata repair, a combined data-directory scan when connected, resources-folder preparation, and managed Files synchronization. It processes ordinary files as well as finalized recordings. Queued recording and AWS uploads can continue after the command returns; its progress describes managed Files synchronization.

Use nimbus file upload-file /path/to/file for a one-off upload that keeps the source. See File Manager for destinations, folder handling, waiting times, and file status.

Usage

nimbus record start-record <topic|url|device> <id> <type> [--ros1] [--file-name <name>] [--audio <src>]
  • <type>: raw | compressed | rtsp | onvif | device
  • --audio: rtsp, onvif, or device path
  • CLI recorders write directly to disk; start-segment/stop-segment apply only to managed recorders.
  • For managed DVR recorders, recorders-status reflects logical segmenting state, not the background continuous capture pipeline. Seeing stopped before the first start-segment is valid.

Examples

# ROS2 topic
nimbus record start-record /camera/image frontcam raw --file-name run1

# RTSP source
nimbus record start-record rtsp://user:pass@10.0.0.12/stream lobby rtsp

# Local device with audio
nimbus record start-record /dev/video0 deskcam device --audio plughw:1,0

# Managed recorder
nimbus record start-segment cam01
nimbus record stop-segment cam01

# Discard the current managed DVR segment without exporting it
nimbus record discard-segment cam01

# Report a general event
nimbus event report --name "red car"

# Link available recordings and request an image from the same profile
nimbus event report --video-alias cam01 --snapshot-alias cam01 --tag "white van"

# Query the whole local recording repository
nimbus record query-recordings

# Query by alias
nimbus record query-recordings --alias cam01

# Query by tag
nimbus record query-recordings --tag "red car"

# Inspect one recording
nimbus record get-recording <file-id>

get-recording prints the recording fields (including VideoSource) and, when available, an attached-events table with EventId, Tag, and Offset. query-recordings prints EventIds in the list view; get-recording shows both EventIds and the attached-events table. discard-segment cancels the current active or post-roll-pending managed DVR window. It does not delete recording files that were already finalized, including running chunks from a long active recording.

Event reports​

nimbus event report and nimbus record report-recording-event report the same event. Agent assigns its timestamp when accepting it. A successful response means the event was saved locally; cloud delivery can follow later.

nimbus event report --name inspection \
--video-alias front-camera --video-alias rear-camera \
--snapshot-alias front-camera --snapshot-alias cloud-snapshot \
--description "Obstacle detected" --attribute location=loading-bay
  • --video-alias selects video or CSV recording profiles for links to available recorded segments.
  • --snapshot-alias selects video recording profiles or enabled payload profiles. CSV recording profiles do not provide snapshots. Prepared images are internal objects saved with the event; other payload types become separately saved resources with independently delivered links.
  • Repeat either option to select several profiles. Each list must contain distinct aliases, with at most 16 selections across both lists. The same alias can appear once in each list.
  • With no aliases, the event has no profile attachments. Reporting does not start a recorder.
  • --name, --tag, --description, --source-id, and repeatable --attribute key=value provide event metadata. The default name is recording-event.

ROS video snapshots reuse a recently cached JPEG from the recorder. RTSP/device snapshots use the first frame of the latest completed segment, with an estimated sample time no more than 30 seconds old. Images share one second of preparation time, including queue time, and a 1 MiB combined internal-data limit. Missing, stale, slow, or oversized images have explicit omission outcomes. Saved events retry when cloud connectivity returns; external resource uploads never delay the event. Prepared images travel inside the event in every storage mode, including “Locally on the Robot.” Their private files use the recording quota. Cloud acknowledgement and recording prune preserve them. Quota cleanup may remove old internal images while keeping the event. Missing images are marked FileUnavailable; if capacity cannot be reserved, new captures have an omission outcome.

The storage setting controls recordings and external payload files. Local captures are reported to cloud as stored locally; external-store captures are reported after upload acknowledgement, without a Nimbus download link. Switching local storage to cloud later uploads retained external files and adds their links to the existing events without reporting those events again. Event list/watch show metadata and outcomes rather than raw captured contents.

Local events, recordings and external payloads expire after three calendar months plus one day of grace, whether uploaded or not. Cleanup removes their local files, metadata and relationships while preserving newer linked items and cloud copies. Uploads and relationship updates do not extend retention. Cleanup runs in bounded maintenance batches and defers items in active use.

nimbus event also provides local history commands:

  • nimbus event list [--page <n>] [--items <n>] lists saved events and is the default event command. Pages start at 0; page size defaults to 50, with a maximum of 500.
  • nimbus event watch streams newly committed events. After reconnecting, start watch before refreshing list and deduplicate by event ID.
  • nimbus event export prints a URL for a bounded CSV export.
  • nimbus event add-history --message <text> [--robot-id <id>] [--fleet-id <id>] adds a durable operator note without triggering live automation. Optional robot/fleet IDs are descriptive context.

list, watch, and export accept --text, --from, --to, --managers, and --levels. Times use ISO-8601 UTC; managers are comma-separated ManagerType values, and levels are comma-separated info, warning, error, or debug.

RecordingProfile import / export​

# Export current RecordingProfile
nimbus record export-recording-profile /tmp/recording-profile.json

# Import RecordingProfile from disk
nimbus record import-recording-profile /tmp/recording-profile.json
  • Export writes the effective agent-owned RecordingProfile.
  • Import applies the profile via agent SoT and propagates it to recorders.