Parallax
Live vehicle data and many remote commands in the Rivian app use Parallax: protobuf payloads keyed by RVM (remote vehicle message) strings, delivered over GraphQL WebSocket or sent via gateway mutations.
Transport
| Direction | Endpoint | Mechanism |
|---|---|---|
| Subscribe (read) | wss://api.rivian.com/gql-consumer-subscriptions/graphql | ParallaxMessages |
| Command status | same WebSocket URL | vehicleCommandStatePx |
| Write / commands | POST https://rivian.com/api/gql/gateway/graphql | sendParallaxPayload |
Every read update looks like { rvm, payload, timestamp } where payload is base64 protobuf.
Feature flags
| Flag / feature | Effect |
|---|---|
parallaxVehicleState + PX_STATE_ALL | Adds vehicle-state RVMs to the subscription |
parallaxCommand + PVS_*_CMD | Routes remote commands through sendParallaxPayload |
Full gating model and flag catalogs: Feature flags.
When flags are off, the app falls back to Legacy APIs (vehicleState, sendVehicleCommand, etc.).
Documentation map
Core
- Subscription (
ParallaxMessages) — connect, subscribe, RVM selection rules - Decoding payloads — protobuf recovery from the APK
- Commands —
sendParallaxPayloadand command status
Domains
Each page lists RVMs, known protobuf classes, fields, and legacy JSON correlates where known.
- Domains overview — full RVM catalog
- Energy — HV/LV battery, edge-compute graphs
- Charging session — session status, graphs, schedule
- Body — locks, closures, windows, trailer
- Dynamics — gear, range, odometer, location, tires
- Comfort — HVAC, seats, climate hold, pet mode
- Security — alarm, immobilizer, Gear Guard video, BTM
- Access — passive entry
- OTA — schedule, state, deployment
- Navigation — trip info and progress
- Geofence — favorite geofences
- Gear Guard streaming — consent and daily limits
- Vehicle meta — wheels, power mode, network
- Devices — phone key table
Example script
examples/parallax-subscribe.py — minimal WebSocket subscriber; prints JSON lines { rvm, timestamp, payload_b64 }.