
Garmin Claude Code Tracker
github.com/thejens/garmin-claude- Category
- Developer Tools
- Rank
- No. 1678Tools index
Previous survey · No. 1653 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- thejens
- GitHub
- 15 stars
- Date
About
Records your Claude Code AI coding sessions as Garmin fitness activities, displaying real-time metrics like tokens/second, tools/minute, and estimated server watts alongside your heart rate. Syncs to Garmin Connect like any other workout.
What it does
A local Node service watches Claude Code session logs, derives activity signals, and serves them to a sideloaded Garmin app through a Cloudflare tunnel. The watch polls every two seconds, while bearer-key checks protect the activity feed. No Anthropic credentials or API proxying are involved.
Why it's ranked here
The concept has real technical substance, not just novelty. It combines local log processing, authenticated polling, reconnecting tunnels, FIT-compatible activity capture, and Garmin graphs. The catch is substantial setup: users must trust an internet-facing tunnel, build for their device, and sideload an unpublished watch app.
What's good
The service reads existing local logs, so it avoids handling Anthropic credentials. It binds locally, rejects failed authentication as an unknown route, stores configuration with restricted permissions, and supports quick or stable tunnels. Rolling windows produce understandable throughput and tool-use signals, while cursor-based buffering lets lagging watches resynchronize.
Tradeoffs
Estimated server watts are illustrative calculations from assumed joules per token, not measurements. Installation has no manual path and depends on a Claude Code skill. The watch app requires device-specific compilation and sideloading. Windows needs WSL2, stable tunnel addresses need a Cloudflare account, and every session depends on the local daemon and tunnel remaining available.
How to use it well
This suits Garmin-owning Claude Code users who enjoy instrumenting focused coding sessions and accept a hands-on installation. Start with mock data to check the watch interface, then pair a device and switch to local log tailing. Treat the resulting activity as a personal telemetry artifact, not an energy audit, productivity benchmark, or health assessment.
Technical notes+
daemon/src/index.ts defines the Commander CLI with start, stop, status, pair, print-build-config, upgrade-tunnel, and doctor commands. daemon/src/commands/start.ts selects JsonlTailSource or mock generation, feeds daemon/src/ringbuffer.ts, starts the Express service, and manages TunnelManager lifecycle. daemon/src/server.ts exposes unauthenticated /health plus bearer-protected /poll and /ack routes, returning 404 for invalid authentication. daemon/src/metrics/derive.ts parses assistant and user JSONL events, uses 10-second token and 60-second tool windows, hashes file paths with SHA-256, and counts Write and Edit lines. daemon/src/models.ts explicitly labels watt conversion factors as order-of-magnitude estimates. Makefile supplies npm, TypeScript, Vitest, Connect IQ build, simulator, signing-key, and cleanup targets.
Observed
- License
- MIT
- Languages
- TypeScript for the Node daemon; Monkey C for the Garmin Connect IQ watch app
- Interface
- Command-line daemon plus an HTTP polling service for the watch
- Installation surface
- Clone the repository, run its Claude Code installation skill, compile for a specific Garmin device, and sideload the watch app
- Platform support
- macOS and Linux; Windows requires WSL2
- Network boundary
- The daemon binds to localhost and reaches the watch through a Cloudflare Tunnel
- Authentication
- Generated bearer keys protect polling and acknowledgement endpoints
- Watch distribution
- Sideloaded only; not submitted to the Connect IQ Store
Read from README.md, Makefile, daemon/src/auth.ts, daemon/src/index.ts, daemon/src/types.ts, daemon/src/server.ts, daemon/src/config.ts, daemon/src/models.ts, daemon/src/tunnel.ts, daemon/src/ringbuffer.ts, daemon/src/mock-source.ts, daemon/src/commands/pair.ts, daemon/src/commands/stop.ts, daemon/src/commands/start.ts, daemon/src/metrics/derive.ts.
What it can do
Record Claude AI coding sessions as Garmin fitness activities
Claude Code AI coding session data → Garmin fitness activity record
Display real-time coding metrics during sessions
Live Claude coding session → Real-time tokens/second, tools/minute, and estimated server watts on Garmin watch
Monitor heart rate during coding sessions
Garmin watch heart rate sensor data → Heart rate metrics integrated with coding activity
Sync coding workout data to Garmin Connect
Completed Claude coding session activity → Workout data uploaded to Garmin Connect platform
Read Claude session files from local system
Claude's local session files → Parsed coding session data
Connect to Garmin watch via Cloudflare Tunnel
Local daemon and Garmin watch → Secure connection between app and watch
Tags
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.