From aria-ark
Use when working with the Aria Client SDK — device pairing, recording, streaming, CLI commands (aria_gen2), Python SDK (aria.sdk_gen2), streaming visualization, multi-device time domain mapping, and device management. Use whenever the user mentions aria_gen2 CLI, aria.sdk_gen2, device pairing, recording start/stop, streaming from Aria glasses, or asks about controlling Aria Gen2 devices programmatically.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aria-ark:client-sdkThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The Client SDK lets you control Aria Gen2 glasses from a host PC — pair devices, manage recordings, stream live sensor data, and configure multi-device setups. It ships as a pip package with both a CLI (`aria_gen2`) and a Python SDK (`aria.sdk_gen2`).
The Client SDK lets you control Aria Gen2 glasses from a host PC — pair devices, manage recordings, stream live sensor data, and configure multi-device setups. It ships as a pip package with both a CLI (aria_gen2) and a Python SDK (aria.sdk_gen2).
This skill teaches the concepts and capabilities. For exact API details:
aria_gen2 <subcommand> --helpsdk_gen2.pyi in the installed package (site-packages/aria/), or run help(aria.sdk_gen2)python -m aria.extract_sdk_samples --output ~/Downloads/pip install projectaria-client-sdk (in a virtual environment, Python 3.10–3.12)aria_doctor — configures system ports and verifies connectivityaria_gen2 auth pair (requires approval in Companion App)The SDK exposes five capability areas through both CLI and Python SDK:
One-time device-PC pairing. The PC generates a client hash, the user approves in the Companion App, and subsequent connections are automatic. Use aria_doctor to verify system readiness before pairing.
Start/stop recordings on the device, list recordings, download as VRS files, delete. Recordings use configurable profiles that define which sensors are active and at what rate — predefined profiles (e.g. general-purpose, high-res RGB, streaming-optimized) are available on-device, plus custom profiles via JSON. Downloaded VRS files are processed with ProjectAriaTools (PAT).
Stream live sensor data from the device to the host PC in real-time. Three streaming interfaces with different tradeoffs:
Available sensor streams include: RGB camera, SLAM cameras, eye tracking cameras, IMU, magnetometer, barometer, GPS, audio, eye gaze, hand tracking, VIO (visual-inertial odometry), and more.
In the Python SDK, streaming uses a callback pattern: create a StreamDataInterface, register per-sensor callbacks (e.g. register_rgb_callback, register_imu_callback, register_eye_gaze_callback), then start streaming. Each callback fires when data arrives for that sensor. StreamDataInterface also supports record_to_vrs() to capture streamed data into a local VRS file on the host — this is the only way to save data during streaming, since on-device recording and streaming cannot run simultaneously.
Query device status (battery, temperature, WiFi, recording state), connect to WiFi networks, start the on-device hotspot, send text-to-speech, list available recording/streaming profiles, and retrieve device calibration.
Temporal alignment across multiple Aria Gen2 devices using sub-GHz radio hardware. One device is configured as broadcaster, others as receivers. The broadcaster transmits its timestamps; receivers record timestamp pairs enabling clock conversion. Configure via TimeDomainMappingConfig (Python) or --all (CLI) on recording or streaming configs. Post-processing uses PAT's TimeDomain.SUBGHZ to query receiver data in the broadcaster's time domain.
Pick by intent:
aria_gen2): One-shot operations, inspection, or chaining a few sequential actions.import aria.sdk_gen2 as sdk_gen2): Streaming with per-sensor callbacks, conditional logic during streaming, host-side VRS capture, or integration into a Python pipeline.The SDK follows a client → device → operation model:
DeviceClient — discovers and connects to devices. Supports multi-device via usb_network_devices() and connecting to specific DeviceTargets.Device — represents a connected device. All operations (recording, streaming, device management) go through this object.StreamDataInterface — handles streaming data reception. Register per-sensor callbacks, set queue sizes, and optionally record to local VRS.RecordingConfig, HttpStreamingConfig, TimeDomainMappingConfig — set on the device before starting operations.Default to aria_streaming_viewer — more polished and actively maintained. aria_rerun_viewer is for playback of downloaded VRS files, not live streaming.
aria_streaming_viewer is a persistent GUI window — it displays live sensor data for as long as the streaming session lasts. It does NOT exit after launch. When launching it:
aria_gen2 streaming start), then launch the viewer.run_in_background or &) — it blocks the terminal indefinitely.Streaming between device and host uses TLS with self-signed certificates. Two cert types exist:
~/.aria/streaming-certs/persistent/, survive across sessions, installed via aria_gen2 streaming install-certificates or auto-generated on first aria_gen2 streaming start~/.aria/streaming-certs/ephemeral/, regenerated each sessionThe CLI aria_gen2 streaming start auto-installs a persistent cert if none exists — no manual cert setup needed for the typical workflow.
Viewer only loads persistent certs. Both aria_streaming_viewer and the multi-device streaming viewer hardcode to ~/.aria/streaming-certs/persistent/. If streaming was started with ephemeral certs (e.g. via Python SDK with StreamingSecurityOptions.use_ephemeral_certs = True), the viewer's TLS handshake will silently fail — the viewer appears to start but shows no data. There is no error message indicating a cert mismatch.
Rule: When using the viewer, always ensure streaming uses persistent certs (the default). If you must use ephemeral certs for a custom Python SDK workflow, do not use aria_streaming_viewer — handle stream data via SDK callbacks instead.
aria_gen2 auth pair.record_to_vrs() for host-side capture during streaming.~/.aria/streaming-certs/persistent/. Streaming with ephemeral certs will silently fail to display in the viewer.The pip package includes both. Gen1 uses aria CLI and import aria.sdk. Gen2 uses aria_gen2 CLI and import aria.sdk_gen2. Type stubs: sdk.pyi (Gen1), sdk_gen2.pyi (Gen2). Gen1 and Gen2 SDK are NOT interchangeable.
When any Client SDK command fails or returns unexpected output, you MUST consult this section and the official troubleshooting page BEFORE attempting your own diagnosis. This is not optional. Aria failures have Aria-specific root causes (sandbox blocks, cert mismatches, thermal shutdowns, mDNS issues) that generic debugging will misdiagnose.
Anti-patterns:
Resources:
aria_doctor — configures ports and diagnoses connectivity.| Symptom | Action |
|---|---|
| Device not detected | Run aria_doctor. Try different USB 3.0+ port/cable. Disable VPN. |
auth pair hangs | Open Companion App, navigate to pairing screen. Check phone internet. |
| Streaming disconnects | USB: use quality cable, avoid hubs. WiFi: check signal/firewall. |
| Device overheating | Shuts down at ~44°C. Cool 5-10 min. Limit hotspot streaming to ~20 min. |
| Viewer starts but no data | Cert mismatch: streaming used ephemeral certs but the viewer only loads persistent certs. Restart streaming without use_ephemeral_certs, or run aria_gen2 streaming install-certificates then restart streaming. |
GLIBCXX_3.4.31 not found (Ubuntu 22) | sudo apt install g++-13 |
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub facebookresearch/projectaria-plugins --plugin aria-ark