Piston Labs Privacy-First Architecture

Source of Truth Document Last Updated: January 2026 Classification: Public (Consumer + Technical Audience)


Executive Summary

Piston Labs takes a fundamentally different approach to vehicle telematics: we minimize data collection by design. While competitors store everything and promise to protect it, we recognize that the most secure data is data that doesn't exist.

Our core principle: Can't steal what doesn't exist.


Part 1: The Problem with Traditional Telematics

Industry-Wide Security Failures

The vehicle telematics industry has a systemic security problem. Companies collect massive amounts of sensitive location data, store it indefinitely, and routinely fail to protect it.

Real-World Breaches (2023-2025)

Company Year Records Exposed Data Type Root Cause
Spireon 2023 15.5 million vehicles Real-time GPS, VINs, user data Exposed admin portal, hardcoded credentials
Gravy Analytics 2025 Billions of location points Historical location data from 30+ apps Data broker aggregation vulnerability
Tracelo 2024 1.4 million users Phone tracking, location history Database misconfiguration
Hapn GPS 2024 8,600 devices Live tracker locations, owner info No authentication on API
SiriusXM 2022 Unknown Vehicle locations, commands API authorization flaw

OBD-II Device Vulnerabilities

Academic security research on consumer OBD-II dongles reveals systemic issues:

Source: Argus Cyber Security, University of Michigan Transportation Research Institute

The Real Risk: Location Data as a Weapon

Location data isn't just privacy-sensitive—it's dangerous:

When a telematics company is breached, every user's historical movements become public.


Part 2: Our Technical Architecture

Design Principle: Ephemeral by Default

┌─────────────────────────────────────────────────────────────────┐
│                     PISTON LABS DATA FLOW                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  [Otto Device] ──TCP──> [Cloudflare Worker] ──> [Durable Object]│
│                              │                        │         │
│                              │                        │         │
│                    ┌─────────┴─────────┐              │         │
│                    │                   │              │         │
│                    ▼                   ▼              ▼         │
│             [GPS: WebSocket]    [Non-GPS: Supabase]  [State]    │
│             (Ephemeral)         (Persisted)          (Temp)     │
│                    │                   │                        │
│                    │                   │                        │
│                    ▼                   ▼                        │
│              [User's App]        [Service Records]              │
│              (Real-time)         [Mileage History]              │
│                                  [Trip Summaries]               │
│                                                                 │
│  ─────────────────────────────────────────────────────────────  │
│  GPS flows through the system but is NOT stored by default.     │
│  Users must explicitly opt-in to location history storage.      │
└─────────────────────────────────────────────────────────────────┘

What We Store vs. What We Don't

Data Type Stored? Justification
Current Odometer Yes Required for service reminders
Trip Distance Yes Fuel/efficiency calculations
Engine Diagnostics (DTCs) Yes Core product value
Battery/Voltage Yes Vehicle health monitoring
GPS Coordinates No Not needed for core functionality
Location History No Opt-in only
Movement Patterns No Never stored

Real-Time GPS via WebSocket (Ephemeral Streaming)

For users who want "Find My Car" functionality, we provide real-time location via WebSocket:

// Cloudflare Durable Object - GPS never touches disk
export class VehicleState extends DurableObject {
  private sessions: Map<WebSocketSession, string> = new Map();

  async processGPS(latitude: number, longitude: number) {
    // Stream to connected clients
    for (const [session] of this.sessions) {
      session.send(JSON.stringify({
        type: 'location',
        lat: latitude,
        lng: longitude,
        timestamp: Date.now()
      }));
    }
    // GPS is NOT written to storage
    // When WebSocket closes, data is gone
  }
}

Security Properties:

Opt-In Location History

Users who explicitly want location history can enable it:

// Only if user has opted in
if (user.locationHistoryEnabled) {
  await supabase.from('location_history').insert({
    vehicle_id: vehicleId,
    latitude: coords.lat,
    longitude: coords.lng,
    recorded_at: new Date()
  });
}

Opt-In Requirements:

  1. Explicit toggle in app settings (default: OFF)
  2. Clear explanation of what's stored
  3. Data retention limit (90 days default)
  4. One-tap full deletion

Binary Data: Stripping GPS at Ingestion

Our devices use Teltonika Codec 8 Extended binary protocol. GPS data sits at fixed byte offsets:

AVL Record Structure (per record):
┌──────────────────────────────────────────────────────────────┐
│ Timestamp │ Priority │ Longitude │ Latitude │ Alt │ ... │ IO │
│  8 bytes  │  1 byte  │  4 bytes  │  4 bytes │ 2B  │     │    │
│           │          │  ◄─────── GPS Block (15 bytes) ──────►│
└──────────────────────────────────────────────────────────────┘

We can zero out GPS fields while preserving all diagnostic data:

function stripGPSFromCodec8(buffer: ArrayBuffer): ArrayBuffer {
  const view = new DataView(buffer);
  let offset = 10; // Skip preamble + length + codec + count

  const recordCount = view.getUint8(9);
  for (let i = 0; i < recordCount; i++) {
    offset += 8; // Skip timestamp
    offset += 1; // Skip priority

    // Zero out GPS block (15 bytes)
    for (let j = 0; j < 15; j++) {
      view.setUint8(offset + j, 0);
    }
    offset += 15;

    // Skip IO elements (variable length)
    offset += parseIOLength(view, offset);
  }

  return buffer;
}

Result: Raw binary archives for debugging contain zero location data.


Part 3: Security Analysis

Attack Surface Comparison

Attack Vector Traditional Telematics Piston Labs
Database breach All historical GPS exposed No GPS to expose
Backup theft Location history in backups No location in backups
Insider threat Employee access to all data GPS never reaches backend
SQL injection Query returns GPS history GPS field doesn't exist
API abuse Enumerate user locations No location endpoint
Legal subpoena Must provide all stored data No GPS data to provide
Data broker sale Monetize location data Nothing to sell

Quantified Risk Reduction

Using standard risk calculation: Risk = Probability × Impact

Scenario: Database Breach

Traditional Approach:

Piston Labs Approach:

Risk Reduction: 80%

Scenario: Targeted Attack (Stalker/Abuser)

Traditional Approach:

Piston Labs Approach:

What Remains Exposed in a Breach

If Piston Labs is breached, attackers could access:

Data Sensitivity Mitigation
Email addresses Medium Industry standard
Vehicle VIN Low Already semi-public
Odometer readings Low No privacy impact
Service history Low No location correlation
Diagnostic codes Low Technical data only

Notably absent: Location history, movement patterns, home/work addresses, daily routines.


Regulatory Alignment

Regulation Requirement Our Compliance
GDPR Data minimization Collect only what's necessary
CCPA Right to deletion No GPS to delete (by default)
CPRA Limit sensitive data GPS is opt-in only
State privacy laws Reasonable security Reduced attack surface

Law Enforcement Requests

When law enforcement requests location data:

Traditional Company Response:

"Here are 18 months of GPS coordinates for this vehicle..."

Piston Labs Response:

"We do not store location data. Real-time GPS is ephemeral and not logged."

We cannot provide what we don't have. This isn't obstruction—it's architecture.

Insurance & Liability

Our architecture provides liability protection:

  1. Reduced breach notification scope: GPS isn't PII if it's not stored
  2. Lower damages in litigation: No location data = no location-based harm claims
  3. Simplified compliance audits: Fewer data categories to document

Part 5: Consumer-Facing Communication

How We Talk About Privacy

Wrong approach (competitor-style):

"We take your privacy seriously. Your data is encrypted and protected by enterprise-grade security."

Our approach:

"We don't store your location. Period. Your car's GPS flows through our system to your phone, but we don't keep it. Can't leak what we don't have."

Key Messages for Marketing

  1. "Your location, your control."

    • Real-time GPS goes to your phone, not our servers
    • Enable history only if you want it
    • Delete everything with one tap
  2. "We built it this way on purpose."

    • Not a privacy policy—a privacy architecture
    • Other companies promise to protect your data; we chose not to collect it
  3. "Car diagnostics without surveillance."

    • Know your battery voltage without us knowing your home address
    • Get service reminders without location tracking

FAQ Responses

Q: How do you provide real-time location without storing it?

A: We use WebSocket streaming through Cloudflare's edge network. When you open the app, your car's GPS coordinates flow directly to your phone. When you close the app, the connection ends and the data is gone. It's like a phone call—the conversation happens, but we're not recording it.

Q: What if I want location history?

A: You can opt in. We'll store up to 90 days of location data, and you can delete it anytime. But we think most people don't actually need a permanent record of everywhere their car has been.

Q: What do you actually store?

A: Odometer readings, engine diagnostic codes, battery voltage, fuel efficiency data. The stuff that helps you maintain your car, not track your movements.

Q: What happens if you get hacked?

A: Attackers would get diagnostic data—the same information your mechanic sees. They wouldn't get location history because we don't have it.


Part 6: Technical Implementation Checklist

Current State ✓

Planned Enhancements

Architecture Invariants

These rules must never be violated:

  1. GPS coordinates SHALL NOT be written to persistent storage without explicit user opt-in
  2. WebSocket GPS streams SHALL NOT be logged or recorded
  3. Raw Codec 8 binaries MAY be stored only with GPS bytes zeroed
  4. Location history opt-in SHALL default to OFF
  5. Any location data stored SHALL have automatic expiration

Part 7: Competitive Differentiation

How We Compare

Feature Bouncie Zubie Hum Piston Labs
GPS tracking Always on Always on Always on Opt-in only
Location history Stored indefinitely 1 year Stored Not stored (default)
Data monetization Yes (anonymized) Yes Yes Never
Breach exposure Full history Full history Full history Diagnostics only
Monthly cost $8/mo $10/mo $10/mo TBD

Our Moat

Privacy-first isn't a feature—it's an architectural decision that's hard to reverse. Competitors would need to:

  1. Redesign their data pipeline
  2. Delete existing location databases
  3. Rebuild real-time streaming infrastructure
  4. Change their business model (no data monetization)

By the time they catch up, we'll have the privacy-conscious market.


Appendix A: Breach Case Studies

Spireon (2023)

What happened: Security researcher found exposed admin portal with hardcoded credentials. Could access 15.5 million vehicles across multiple fleet management brands (GoldStar, LoJack, FleetLocate).

Data exposed: Real-time GPS, historical locations, VINs, customer data, ability to remotely disable vehicles.

Root cause: Credential management failure, no authentication on admin API.

Piston Labs difference: Even with similar vulnerability, attacker gets diagnostic data only.

Gravy Analytics (2025)

What happened: Location data broker (aggregates from 30+ apps) suffered massive breach. Billions of location data points exposed including sensitive locations (clinics, government buildings, religious sites).

Impact: Location data traced back to individual devices, revealing daily patterns and sensitive visits.

Root cause: Centralized aggregation of location data creates high-value target.

Piston Labs difference: We don't aggregate or sell data. No data broker relationship.

SiriusXM Connected Vehicle (2022)

What happened: API vulnerability allowed attackers to locate vehicles, unlock doors, start engines using only VIN number.

Root cause: Authorization bypass—API didn't verify requestor owned the vehicle.

Piston Labs difference: Our WebSocket requires authenticated session. No remote commands.


Appendix B: Security Architecture Details

Data Flow Security

[Device] ──TLS/TCP──> [Cloudflare Edge] ──Internal──> [Durable Object]
                           │
                           │ (GPS)
                           ▼
                      [WebSocket]
                           │
                           ▼
                    [User's Device]

    GPS never touches: Database, Logs, Backups, Analytics

Encryption

Layer Method Key Management
Device → Edge TLS 1.3 Cloudflare managed
Edge → DO Internal (Cloudflare backbone) N/A
DO → User WSS (TLS) Cloudflare managed
Database AES-256 at rest Supabase managed

Access Controls

Role GPS Access Diagnostic Access
End User Real-time (own vehicle) Yes
Support Staff None Read-only
Engineering None Anonymized
Database Admin None (doesn't exist) Encrypted

Document Control

Version Date Author Changes
1.0 Jan 2026 Engineering Initial document

Review Schedule: Quarterly or after any security incident

Owner: Engineering Team

Approval: Tyler (CEO)