Getting started

What you need

1. Run a receiver

The quickest correct one is an example receiver: one file, no dependencies, samples into SQLite. With Node 22.13 or later, from examples/receiver-node, run HOST=0.0.0.0 node server.mjs; with Python 3.11 or later, from examples/receiver-python, run HOST=0.0.0.0 python3 receiver.py. Both listen on port 8080. HOST=0.0.0.0 makes them reachable from the phone rather than only from the computer they run on.

2. Point the app at it

In the app, open Destination and enter:

Then tap Test connection. The app sends a probe — the same request with no samples in it — over the same method, headers and credential a real export uses. The example receivers answer 200 and record nothing.

3. Choose what leaves the phone

Open Metrics and turn on the groups you want: activity, heart, body, sleep, vitals, workouts. Health asks for read access per group, when you turn that group on. Only enabled groups are read.

4. Export

Tap Export Now and pick a time range. If your receiver is on your local network, the first export is where the app explains why it needs to reach devices on your network and iOS asks for that permission; answer it once and it is remembered.

Your receiver now holds the samples. The example receivers report counts at GET /stats.

Next