Browser Not Supported
Please use a modern browser such as Chrome or Edge.

Phone App

Record ECG from Polar H10

Why direct APK? Due to Google Play's policy restrictions on pre-user testing and medical-related apps, I distribute directly. This APK is cryptographically signed and verified.

Download APK (65 MB)
Optional: Verify the APK Yourself

Google Play Protect already scans the APK on install. If you want a second opinion, you can independently scan it first using free online services:

  1. Go to virustotal.com and create a free account
  2. Click Upload and select the downloaded APK file
  3. Wait for the scan to complete (usually under a minute)
  4. Review the results — a clean file shows 0 detections from 70+ antivirus engines

Alternative scanners: MetaDefender · HybridAnalysis

Installation Guide

  1. Download the APK file above
  2. Open the file on your Android phone
  3. If prompted, tap Settings and enable "Install from unknown sources" for your browser
  4. Tap Install and wait for completion
  5. Open the app and connect your Polar H10

Note: After tapping Install, Google Play Protect may scan the APK before allowing installation. This is normal for any app installed outside the Play Store and can take 30–60 seconds. The scan only happens on first install — updates are faster. If Play Protect shows a warning, tap "Install anyway" or "More details" → "Install anyway".

About permissions: The app will ask for several permissions on first launch. All are required for it to function:

  • Bluetooth — connect to the Polar H10 sensor
  • Location — Android requires this for Bluetooth scanning on older versions. The app does not track or store your location.
  • Body sensors — read ECG and heart rate data from the chest strap
  • Notifications — show the recording status while the app is in the background
  • Storage — save and serve session CSV files over Wi-Fi
  • Battery optimisation — keep recording alive when the screen is off

Dashboard

Analyze sessions on desktop, Android tablet, or Chromebook

All your ECG recordings stay on the phone. The dashboard reads them directly from the phone app over Wi-Fi — no local folder, no file copying, no setup required.

Connect from PC

The phone app serves the dashboard directly to a PC, tablet, or Chromebook on the same Wi-Fi and supplies the complete address to use.

Licence required first: the Dashboard URL option only appears once your licence is activated on the phone. If it isn't showing, tap Get Web Dashboard in the same CONNECTIONS card to purchase, then Activate Licence and paste the key from your email.

  1. Make sure your phone and viewing device are on the same Wi-Fi network
  2. Open the YourRhythm app on your phone and tap the More tab
  3. In the CONNECTIONS card, switch Wi-Fi Server ON
  4. Tap Dashboard URL, then tap Copy — or tap Email to send the link to yourself (easiest for Chromebooks and tablets)
  5. Paste the copied URL into the browser on your PC, tablet, or Chromebook
  6. The dashboard loads with sessions ready — no further setup needed

Add a Desktop Icon

Because the dashboard is served from the phone over plain Wi-Fi (not HTTPS), Chrome's usual "Install app" prompt won't appear. Use the Desktop Icon button in the dashboard sidebar instead — it works around this automatically:

  1. Windows: click Desktop Icon in the sidebar. A small installer file downloads — open it from your Downloads folder and click Run anyway if Windows shows a security warning. A shortcut appears on your Desktop that opens the dashboard in its own window.
  2. Chromebook: click Desktop Icon for step-by-step instructions using Chrome's built-in "Create shortcut" feature.
  3. Android tablet: click Desktop Icon for instructions to "Add to Home screen" from the Chrome menu.

Note: the icon points at the phone's current Wi-Fi address. If your router assigns the phone a new address later, recreate the icon the same way.

Access from an Android Tablet

The dashboard works the same way on an Android tablet as on a PC — same URL, same phone-backed data, same licence. The only differences are how you interact with it:

  1. Open Chrome on the tablet and paste the same phone URL (e.g. http://192.168.1.120:8080/)
  2. If Chrome shows a "Connection not private" warning, tap Advanced → Proceed — this is expected for plain HTTP on a local network
  3. The dashboard loads with sessions ready — touch interaction works the same as on PC
  4. To add a home-screen icon, tap the Desktop Icon button in the sidebar, then follow the "Add to Home screen" instructions

Note: the File System Access API (folder selection for archiving sessions) is not available in most mobile browsers. The archive feature falls back to individual CSV downloads on tablets.

That's it — no other setup required

The dashboard auto-connects to the phone over Wi-Fi. Sessions appear in the sidebar automatically — no IP address to enter, no panels to configure, no files to copy.

How the Phone Server Works (Technical)

The YourRhythm Android app embeds a lightweight HTTP server (NanoHTTPD) called the LocalFileServer, bound to 0.0.0.0:8080. Once the phone holds a valid licence it starts automatically when the app launches (configurable in Settings → ON APP START) and stops when the app is killed or force-closed. No root or special permissions are required beyond the INTERNET and ACCESS_NETWORK_STATE permissions declared in the manifest.

What it serves:

  • Static dashboard files — the entire Cardio Dashboard SPA (HTML, JS, CSS, icons) is bundled in the app's assets/web/ directory and served at /dashboard.html, /help.html, /licence.html, etc.
  • REST API endpoints — the server exposes a small API for the dashboard to read phone data:
EndpointMethodPurpose
/api/phone-infoGETReturns device name, app version, session count, Wi-Fi IP.
/api/sessionsGETLists all session CSVs on the phone, cross-referenced with the app's Room database to filter orphan files.
/api/sessions/{filename}/downloadGETDownloads a session CSV so the dashboard can load it directly.
/api/sessions/{filename}DELETEDeletes a session from the phone.
/api/sessions/{filename}POSTUploads a re-classified CSV (saved with _RC suffix).
/api/licenseGET/POSTReads or stores the licence key on the phone (SharedPreferences). Any device connecting to a licensed phone inherits the licence.
/api/trendsGET/POST/PUTReads, appends to, or replaces the trends log (session_trends.csv).

Phone-served operation: The dashboard is always served from the phone's LocalFileServer. When the dashboard loads, it calls the same-origin /api/phone-info endpoint to confirm the phone is reachable, then uses relative /api/... URLs for all session and license requests. There is no separate "hosted" mode — the phone is the only data source. Netlify is used solely for the public marketing pages and as the license-signing backend (the private signing key must not ship in the APK).

Networking & security: The server binds to 0.0.0.0, so it is reachable from any device on the same Wi-Fi network. It is HTTP, not HTTPS — this means the dashboard cannot use secure-context-only browser APIs (such as the File System Access API for folder selection) when loaded from the phone. The archive feature falls back to individual file downloads in this case. CORS headers are added to API responses so the Netlify-hosted dashboard can also call the phone API cross-origin.

Session discovery: Sessions are stored as CSV files in Documents/YourRhythm-Data/ on the phone's external storage. The server queries Android's MediaStore for these files and cross-references them with the app's Room database to ensure only valid sessions are returned — this prevents orphan CSVs from appearing in the dashboard.

Ready!

Open the YourRhythm app on your phone and start a session.
Redirecting to Your Rhythm Studio…

Free app. £8 dashboard.

Everything on the phone is free — live ECG recording, heart rate, arrhythmia detection, breathing guidance. No account, no ads, no catches.

The desktop dashboard — full ECG review, 99 health metrics, HRV, PDF reports, and export — needs a one-time £8 licence. No subscription, nothing recurring.

One licence covers everything: it's stored on your phone, so any device on your Wi-Fi inherits it automatically. To activate, open the app → More tab → CONNECTIONS → Activate Licence, and paste the key from your purchase email.

Learn about the licence