Specter

Privacy-first fitness tracking
Garmin Connect IQ

Setup

The Specter Garmin app is a Connect IQ data field and widget. It runs alongside Garmin's native activity recording.

⚙️
Screenshot: Garmin Connect IQ App Store Listing
  1. Install the Specter data field from the Connect IQ store (or sideload the .prg file)
  2. On your Garmin watch, go to Settings > Data Fields and add Specter to an activity profile
  3. Open the Specter app on your phone and sign in
  4. The phone app sends your auth token to the watch via Garmin Connect Mobile
How Auth Works

Unlike Apple Watch and Wear OS, Garmin watches communicate through the Garmin Connect Mobile app on your phone. Your auth token is sent from the Specter phone app to the watch via this bridge. The token is stored on the watch in persistent device storage.

Live Data Field

During an activity, the Specter data field shows a 3x2 grid of real-time stats.

📊
Screenshot: Live Data Field During Activity
PositionStatDetails
Top leftPACEmin:sec /km for running, km/h for cycling
Top rightHRHeart rate in bpm (red text)
Middle leftDISTDistance in km
Middle rightTIMEElapsed time
Bottom leftELEVElevation gain in meters
Bottom rightCADCadence in steps/min
Specter Green

Primary stats are displayed in Specter green (#00C853). Heart rate is in red (#FF4444). The layout updates every second during your activity.

Recording an Activity

🏃
Screenshot: Garmin Activity Recording with Specter Field
  1. Start an activity on your Garmin as you normally would (press the start button)
  2. The Specter data field displays your live stats alongside any other data fields you've configured
  3. Garmin's native GPS and sensor recording handles all data capture
  4. When you stop and save the activity, Specter extracts the final stats
  5. Stats are uploaded to your Specter account via the Garmin Connect Mobile bridge

The activity is created on the backend with these stats:

FieldSource
Activity typeMapped from Garmin sport type (RUNNING → RUN, etc.)
DurationFrom Activity.Info elapsed time
DistanceFrom Activity.Info distance
Heart rate (avg/max)From Activity.Info heart rate stats
Elevation gainFrom Activity.Info altitude
PaceCalculated from distance and duration
CaloriesFrom Activity.Info energy expenditure
Device source"garmin_connectiq"
GPS Route Handling

The Specter Garmin app uploads stats only — not GPS data. The GPS track is handled separately through Garmin Connect's webhook integration. When you sync your watch with Garmin Connect, a webhook notifies the Specter backend, which downloads and processes the FIT file automatically.

Widget (Glance)

The Specter widget shows your most recent activity at a glance. No network calls on render — it reads from on-device storage.

👁️
Screenshot: Specter Widget / Glance

The widget displays:

  1. Title — activity name (e.g. "RUN - Garmin")
  2. Distance — in km
  3. Duration — formatted time
  4. Pace — min:sec per km
  5. Heart rate — average bpm
Syncing the Widget

The widget data updates after each activity upload. You can also trigger a sync from the Garmin Connect Mobile app, which fetches the latest activity from the backend and updates the on-device storage.

Garmin Connect Webhook Sync

GPS route data flows through Garmin's webhook system, separate from the on-watch stats upload.

🔄
Diagram: Garmin Webhook Flow
  1. You finish an activity and sync your Garmin watch with the Garmin Connect app
  2. Garmin Connect sends a webhook notification to the Specter backend
  3. The backend queues an async task to download the FIT file from Garmin's servers
  4. The FIT file is processed through the ingestion pipeline:
    • Device serial numbers stripped
    • Sensor calibration data removed
    • Timestamps rounded to nearest minute
    • GPS track encrypted with AES-256
    • Start/end coordinates jittered by 500m
  5. The encrypted route is stored and linked to your activity
Two-Path Upload

Stats come directly from the watch (fast, immediate). GPS comes via Garmin Connect webhook (async, after phone sync). This means your activity stats appear immediately, and the route appears shortly after you sync with Garmin Connect.

Supported Devices

SeriesModels
Forerunner245, 255, 265, 955, 965
Fenix7, 7S, 7X
Venu2, 2S, 3, 3S
Enduro2
EpixGen 2
Requirements

Connect IQ SDK 4.0+. The watch needs to be paired with the Garmin Connect Mobile app on your phone for communication and webhook sync.