Skip to content

Add starting a Gear Guard live stream - #250

Open
walthowd wants to merge 2 commits into
bretterer:mainfrom
walthowd:feat/gear-guard-live
Open

walthowd wants to merge 2 commits into
bretterer:mainfrom
walthowd:feat/gear-guard-live

Conversation

@walthowd

@walthowd walthowd commented Nov 14, 2026 •

Copy link
Copy Markdown

Builds on #249.

start_gear_guard_live_stream starts a live camera stream like the app and returns the Kinesis Video WebRTC config (signaling endpoint, ICE servers, role) for a viewer to join.

  • Subscribes to gearGuardLiveConfig, then sends the signed start_live_streaming command with the same command id
  • parallax.encode_live_streaming (new LiveStreamingRequest schema), GEAR_GUARD_CAMERAS
  • A refused start raises right away, through on_error

Needs Gear Guard video monitoring on and a paired phone. The vehicle allows one session at a time, about 3 minutes each and an hour a day.

Tested

2026 R1S (Gen 2), 2026.36.01: front and right cameras streamed in a WebRTC viewer.

Not tested: rear, left and bed cameras, R2 cabin camera

walthowd and others added 2 commits November 14, 2026 22:51
The server ends a subscription with an `error` message when it fails, for
example when the vehicle refuses a command the subscription waits on. The
web socket only logged those at debug, so a caller waiting on the
subscription could only time out. Subscriptions can now take an `on_error`
callback that gets the error message; existing callers are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxWHBTrHU6eTPotwMWgtJF
`start_gear_guard_live_stream` starts a live camera stream the way the
Rivian app does and returns its Kinesis Video WebRTC config (signaling
endpoint, ICE servers and role), for a viewer to join:

- It subscribes to `gearGuardLiveConfig` with a fresh command id, then sends
  the signed `security.video_monitoring.start_live_streaming` command with
  that same id; the cloud routes the config by it.
- `parallax.encode_live_streaming` builds the command's payload from a new
  `LiveStreamingRequest` schema; `GEAR_GUARD_CAMERAS` names the cameras.
- A refused start (e.g. a camera the vehicle doesn't have) raises
  RivianApiException straight away, through the subscription's `on_error`.

It needs Gear Guard video monitoring on and a paired phone. The vehicle
serves one session at a time, about 3 minutes each and an hour a day.

Builds on bretterer#249.

Verified against a 2026 R1S (Gen 2) running 2026.36.01: the config arrived
within seconds of the start when the vehicle was awake, and the front and
right cameras streamed in a WebRTC viewer. A sleeping vehicle can take
longer to wake than the default 40 second timeout. Not tested: the rear,
left and bed cameras, the R2's cabin camera.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxWHBTrHU6eTPotwMWgtJF
@walthowd
walthowd force-pushed the feat/gear-guard-live branch from 98129f0 to 8e4438b Compare November 14, 2026 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant