experiment
my watch thinks i was resting
7 October 2026
TLDRI put my Garmin heart rate and sleep over every coding agent session I have on record: 168 million tokens. With agents writing my average heart rate was 64.6, without them 66.2. Sleep after the heaviest days was 11 minutes shorter, which is noise. One person, 81 days, and three numbers I got wrong first.
Check it yourself
I put my Garmin heart rate and sleep over every coding agent session I have on record. My agents have written 168 million tokens this year that I can count, 162 million of them between 16 July and 5 October 2026, the 81 days where all three of my tools left a record. In the hours they were writing, my average heart rate was 64.6. In the hours they were not, it was 66.2. Sleep after the heaviest days was 11 minutes shorter than after the lightest, which is noise. One person, one watch, 81 days. Below is how it was done, and the three numbers I got wrong first.
it started as a typo
This is what I typed to my coding agent on 7 October:
would we be able to make a meme about putting Gartner data int omy agentic coding thing?
I meant Garmin. The agent came back with three ideas for a Gartner hype cycle. I tried again:
fun project, garming, health data and agentic enginereing
The meme it pitched was a marathon summary for sitting at a desk. Four hours, fourteen terminals, peak stress 92. The peak stress number was invented, so we went to get the real one.
I wear my watch for runs. To keep track of it, and then you just get used to it. For running, for health and for my love of data.
I also think a lot about the study where people were told they had slept badly. They did worse on a thinking test, whatever their night had really been. And I get told that every day.
getting the data out
Garmin has no API for your own data. We tried a Python library that logs in as you. Garmin answered with an error twice and that was the end of that.
surely there must be services that can fetch garmin data? to my personal stuff at least?
The answer was already on my phone. The Garmin app writes to Apple Health, and Apple Health exports everything it has as one file. Mine is 385 MB. It holds 144,902 heart rate readings for 2026, one every two minutes.
The other half was easier than it sounds. Coding agents keep a transcript of every session on disk, and every message in it has a timestamp and a token count. I had three sources: Claude Code from 16 July (older transcripts are gone), Codex from 8 March, and Cursor from its usage export.
Then you line the two up on the clock. That is the whole method.
what the watch says
Average heart rate, 16 July to 5 October 2026, awake readings under 100 beats per minute:
Asleep: 50.9 (495 hours)
Awake, no agents: 66.2 (279 hours)
Agents writing: 64.6 (639 hours)
"Agents writing" means an hour in which the three tools wrote 5,000 tokens or more between them. "No agents" means an hour in which they wrote none.

So the hours I spend running agents are, to my watch, slightly calmer than the rest of my day. Garmin files it under rest.
The five heaviest sessions tell the same story. Each wrote between 2.4 and 4.6 million tokens. My average heart rate during their active hours was between 62 and 69.
My favourite day is Saturday 15 August. The agents wrote 6.4 million tokens that day. Around 17:30 my heart rate goes to 156. That is a 26 minute run, logged by the watch at 17:39. The token bars under it do not stop.

The agents did the work. I went for a run.
the three numbers i got wrong first
The first version of the film said 91 million tokens. That count missed files. Claude Code alone is 102 million once every transcript is read.
It also exposed a bug in a token counter I built last week. A message is written to the transcript several times while it streams. The first copy carries a placeholder count, 5 in the case I looked at. The last copy carries the real one, 1,220. My counter read the first copy. It reported 73.5 million tokens where the files hold about 101 million.
The second one I liked. The first cut said I slept an hour less after heavy days. That used a count of my own turns, and a large share of those records turned out to be machine-written, not typed by me. Counted by tokens across all three tools, the lightest quarter of days is followed by 7.47 hours of sleep and the heaviest by 7.28. Eleven minutes, 68 nights, correlation -0.05.
It was a better story. It is not in the film.
The third one is in the film, and I found it while writing this. The film opens on 168 million tokens and then compares 81 days of heart rate. Those are two different windows. 168 million is everything on record in 2026: Cursor from January, Codex from March, Claude Code from 16 July. Inside the 81 days it is 162 million (161,588,126). The heart rate numbers already used only the 81 days, so they stand.
what this does not show
It is one person. Heart rate is a blunt signal, and a flat pulse can hide other things. Heart rate variability is the more sensitive measure and Apple Health does not carry Garmin's. A "no agents" hour can still be an hour of other screen work. Nothing here measures attention or mood.
I did not invent the idea of putting sensors on developers. A 2025 study in Brain Sciences gave 58 design students with no programming experience a two-day coding task, and the group with an AI code generator showed reduced parasympathetic activity during it. A doctoral project at ICSE 2025, by Charlotte Brandebusemeyer at the Hasso Plattner Institute, proposes wearables to measure developers' cognitive load with generative AI tools in daily work. I have read the abstracts, not the papers. Mine is the other kind of data: no lab, one person, 81 ordinary days and a token count for every hour of them.
My resting heart rate also went down, from 47.7 (1 April to 15 July) to 45.5 (16 July on). I would love to credit the agents. I keep an average of 2 runs, 3 gym sessions, tennis, and then runs with my agents. The first three are the likelier cause.
The file holds more than heart rate. Before opening the rest, I wrote down six predictions: steps, bedtime, deep sleep, heart rate variability, stress and morning energy, each against tokens per day, each with a pass line. All six get published, whether they hold or not.
the prompt
No tool to install. Export your Apple Health data from the Health app (your profile picture, then Export All Health Data), put the zip next to your agent, and give it this:
Unzip my Apple Health export. From export.xml take every heart rate record and every sleep record for this year. Then read my coding agent transcripts on this machine and sum the output tokens per hour, in local time. Count each message once, at the value in its last record, because the first record is a placeholder.
Join the two on the hour. Give me my average heart rate asleep, awake in hours with no tokens, and awake in hours with 5,000 tokens or more. Leave out readings of 100 and over. Then give me sleep that night against tokens that day, with the correlation and the number of nights.
Show the hours behind every average. Tell me where the data starts for each tool, and use only the window where all of them overlap.
That last paragraph is the one I needed and did not have.
How this was made. A coding agent ran the analysis, built the film and wrote the first draft of these sentences. The quoted lines are mine, typos included. Four claims died on the way: the invented stress peak, the 91 million, the hour of lost sleep, and 168 million as the number for the 81 days.