Telemetry Signing
Overview
Telemetry signing provides cryptographic proof that data originated from a specific device and was not modified in transit. Every data point can be independently verified.
Submit signed telemetry
When the device signs data locally:
const result = await sentinel.telemetry.submit({
robotId: 'clx1a2b3c...',
eventType: 'sensor',
payload: {
position: { x: 24.551, y: -12.003 },
battery: 87.2,
velocity: 1.204,
},
signature: deviceSignature,
});
Server-side signing
For devices that cannot sign locally, Sentinel signs on their behalf:
const result = await sentinel.telemetry.submit({
robotId: 'clx1a2b3c...',
eventType: 'heartbeat',
payload: { status: 'active', uptime: 3600 },
});
Note: Server-signed telemetry incurs a -5 trust score penalty. Device-signed data has no penalty.
Event types
| Type | Use case |
|------|----------|
| heartbeat | Periodic availability signal |
| sensor | Environmental or operational readings |
| location | GPS or indoor positioning data |
| battery | Power level and charging state |
| error | Fault or anomaly report |
Trust score impact
| Scenario | Effect |
|----------|--------|
| Valid device signature | No change |
| Server-signed (no device signature) | -5 points |
| Signature verification failure | -10 points + alert |
| Trust score below 20 | Device marked COMPROMISED |
Real-time streaming
Telemetry events are broadcast via WebSocket for live dashboard updates:
import { useRealtimeTelemetry } from '@/hooks/use-realtime';
const { events, connected } = useRealtimeTelemetry(robotId);
Events arrive within milliseconds of submission.