ebs · earthian biosense · research instrument

HRV as a research instrument. Not a wellness score.

Heart-rate variability from a Polar H10 chest strap, processed on-device, tracked as a 3D trajectory through phase space rather than collapsed to a single number. Optional. Consent-scoped. Used only when the research scope warrants it.

Polar H10 BLE · macOS / iOS / Python RMSSD · SDNN · pNN50 · entrainment · phase trajectory ESL-A · on-device · session JSONL stays yours

Some engagements go deeper. Most don't.

Anuna's default is decision traces and working notes — recorded with consent. Biosignal sensing runs only when a research question explicitly names it as in-scope. EBS exists for those engagements, and only those.

What this isn't

A wellness score. Single-number HRV apps train you to perform on the metric and miss what the metric is actually measuring.

An always-on sensor. EBS doesn't run in the background. It runs when you start a session, ends when you end it, and writes nothing else.

Productivity instrumentation. Anuna's working agreements explicitly preclude using somatic data to manage performance.

What this is

A trajectory in phase space. Entrainment, breath, amplitude — three axes, with velocity, curvature, and stability tracked as you move.

On-device computation. HRV processing happens on your phone or laptop. The session is yours, in a JSONL file, on your disk.

Consent-scoped research infrastructure. Used in engagements where the participants have agreed it's part of the inquiry — not before, not otherwise.

From a chest strap to a movement signature you can replay.

Five stages of a typical session: pair the strap, capture, watch the phase trajectory live, classify the soft mode, export the JSONL.

01
Pair the strap
BLE to Polar H10. macOS, iOS, or Python desktop.
02
Capture HRV
RR intervals → RMSSD, SDNN, pNN50, entrainment.
03
Phase trajectory
Position, velocity, curvature, stability through 3D space.
04
Soft mode classification
Six modes with membership, never one-hot.
05
Export the session
JSONL schema 1.1.0, joinable with vibe harness.
ebs · session
$ ebs connect

[ble]      scanning for Polar H10 …          ✓ found Polar H10 A1B2C3
[ble]      heart rate service              ✓ 0000180d
[ble]      subscribing to RR notifications  

connected:  Polar H10 A1B2C3
mode:       diagnostic — no recording
stream:     live   HR · RR intervals

   HR  74 bpm     RR [812, 798, 805, 821, 793, 816]
   HR  73 bpm     RR [811, 797, 803, 818, 791, 812, 825]

# BLE only. No cloud, no app account, no telemetry.
# Strap requires skin contact to activate.
$ ebs record --session "meditation 20m"

[buffer]   rolling window 150 samples
[hrv]      computing every 5s …

04:32     RMSSD 42.9   SDNN 56.1   pNN50 28%
04:32     amplitude 164    entrainment 0.18    breath 5.8 br/min

15:21     RMSSD 51.7   SDNN 64.0   pNN50 35%
15:21     amplitude 180    entrainment 0.43    breath 5.2 br/min

# Classic clinical metrics + custom HRV (amplitude, entrainment, breath).
# Computed on-device. Not a single score; a multivariate signal.
$ # live phase-space trajectory

phase position:   [0.576, 0.500, 0.820]
velocity:         [0.041, 0.000, 0.033]   |v| = 0.053
curvature:        0.047
stability:        0.867       (low velocity, low curvature)
history sig:      0.229       trajectory is opening up

phase label:      settling into coherence
coherence:        0.55        trajectory integrity over time

# Coherence (global) and entrainment (local) are different:
# meditation shows high coherence with low entrainment.
# Each moment is a point on a trajectory, not a dot on a line.
$ # soft-mode classification (6-mode system)

soft mode membership:

   heightened alertness               0.02
   subtle alertness      ▏▎            0.08
   transitional          ▏▏▏           0.15
   settling              ▏▏▏▏▏▏▏▏▏     0.45     primary
   rhythmic settling     ▏▏▏▏▏         0.25     secondary
   settled presence                   0.05

ambiguity:            0.23      primary not dominant
movement:             settled
movement-aware:       settling

# Soft, not one-hot. You're never fully "in" one mode —
# you have membership across all six, and that distribution is data.
$ ebs export --session meditation-20m.jsonl

[schema]   1.1.0 · movement-preserving classification
[merge]    iOS metrics + processed phase + soft modes      

written:   sessions/meditation-20m.jsonl   14.2 MB

   {
     "ts": "2026-04-30T07:14:21.748Z",
     "hr": 73, "rr": [811],
     "metrics": { "amp": 178, "ent": 0.418, "breath": 5.2,
                  "mode": "settling", "mode_score": 0.543 },
     "phase":   { "position": [0.576, 0.5, 0.82],
                  "coherence": 0.55, "stability": 0.867,
                  "soft_mode": { "primary": "settling", ... } }
   }

# Schema 1.1.0 across macOS, iOS, and Python — sessions are portable.
# When paired with vibe harness, share session ID for joinable analysis.

Three commitments no consumer HRV tool holds together.

01 · Movement, not score

A trajectory through phase space.

HRV reduced to a single number trains you to perform on the metric. EBS tracks position, velocity, curvature, and stability — the geometry of how your autonomic state moves, not where it lands.

  • 3D phase space: entrainment · breath · amplitude
  • Velocity, curvature, stability per sample
  • Coherence (global) distinct from entrainment (local)
  • Six-mode soft classification with hysteresis
02 · On-device, local

Your session, on your disk.

HRV pipelines run natively on macOS (Rust), iOS (Swift), or your laptop (Python). Sessions write to JSONL on local storage. Nothing is sent off-device. The strap is the only thing on a network.

  • Native macOS app (Tauri + Rust, ~11MB, ~0.4% CPU)
  • Native iOS app (SwiftUI, on-device HRV)
  • Python pipeline for desktop & post-hoc processing
  • JSONL schema 1.1.0 across all three
03 · Consent-scoped

ESL-A. No manipulation, no surveillance.

Earthian Stewardship License: respect somatic sovereignty, no manipulation or surveillance, no entrainment without consent, non-commercial by default. EBS exists for research engagements where the question warrants it — not to be embedded in productivity stacks.

  • Earthian Stewardship License (ESL-A) v0.1
  • No background sensing, no telemetry, no third-party share
  • Used in engagements that name biosignals as in-scope
  • Commercial use requires explicit permission

BLE strap. Local pipeline. Joinable with sense and vibe harness.

The Polar H10 streams RR intervals over BLE. The on-device pipeline buffers, computes HRV, projects to phase space, and classifies soft modes. The session is written to JSONL with a shared schema. Optional pairing with vibe harness aligns biosignal trajectories to mode transitions post-hoc; sense can take the live mode estimate as one signal among many.

┌──────────────────┐ │ Polar H10 │ │ chest strap │ │ HR · RR │ BLE └────────┬─────────┘ │ ▼ ┌────────────────────────────────────────────────────────────────────┐ │ capture layer (one of three — pick by context) │ ├────────────────────┬────────────────────┬──────────────────────────┤ │ macOS desktopiOS EBSCapturePython terminal │ │ Tauri / Rust │ SwiftUI │ asyncio / WebSocket │ │ long-duration BG │ mobile · gauges │ desktop · ASCII viz │ └─────────┬──────────┴─────────┬──────────┴─────────┬────────────────┘ │ │ │ └─────────────┬──────┴────────────────────┘ ▼ ┌─────────────────────────────────┐ │ processing pipeline │ │ buffer → HRV → phase → │ │ classify (soft mode + hysteresis) │ └─────────────────┬───────────────┘ │ ▼ ┌─────────────────────────────────┐ │ JSONL · schema 1.1.0 │ │ yours · local · portable │ └─────────────────┬───────────────┘ │ optional │ shared session ID ▼ ┌─────────────────────────────────┐ │ pair with vibe harness │ │ join biosignal ↔ mode │ │ pair with sense │ │ biosignal as retrieval input │ └─────────────────────────────────┘

Coherence ≠ entrainment

Entrainment is breath–heart phase coupling — local sync. Coherence is trajectory integrity — global movement. Meditation shows high coherence with low entrainment; rhythmic activity reverses it.

Soft mode, not one-hot

The six-mode system reports membership across all six, with hysteresis to prevent jitter. Ambiguity itself is a signal — when no mode dominates, that's data about the moment.

Movement-preserving classification

Schema 1.1.0 distinguishes holding (alertness doing work) from settling (resting in attractor) via movement annotation, so static labels don't mask trajectory dynamics.

Joinable session IDs

EBS sessions can share an ID with a vibe harness session. Post-hoc, biosignal trajectories align to mode transitions — letting you ask whether the somatic and named states actually agree.

Active research, not a product

EBS is the substrate for an active preprint on coupling-mode transitions in human-AI interaction. Sessions feed the research; findings feed back into classifier calibration.

Pre-production. Read the README.

The processing pipelines are validated against ~91 unit tests, but classifier thresholds are still being calibrated against real sessions. Use as a research instrument; not a clinical one.

Frequently asked questions.

Is this clinical?
No. The metrics it computes (RMSSD, SDNN, pNN50) have clinical literature behind them, but EBS is not a medical device and isn't validated for any clinical use. It exists for research and reflective practice.
What is "phase space" in plain language?
A way of plotting state as a position in a multi-dimensional space rather than a single number. A heart with high RMSSD, slow steady breath, and moderate amplitude lives somewhere; a different state lives somewhere else. Movement between those positions is what the trajectory captures.
Why six modes, not three or twelve?
The six emerged from the feature space (entrainment, breath steadiness, amplitude, volatility) as the smallest set that distinguishes meaningful autonomic regimes. Soft membership across all six prevents the count from becoming a constraint.
Does it pair with sense or vibe harness?
Yes. EBS sessions can share an ID with a vibe harness session, allowing biosignal trajectories to be joined to named mode transitions post-hoc. Sense can read the live mode estimate as one signal among many. Each is opt-in.
Is the data sent anywhere?
No. All processing is on-device. JSONL sessions stay on your disk. There is no cloud sync, no telemetry, no analytics ping. The Polar H10 itself is BLE-only and doesn't connect to the internet.
What is ESL-A?
Earthian Stewardship License v0.1. Core commitments: respect somatic sovereignty; no manipulation, surveillance, or entrainment without consent; non-commercial by default; share-back safety improvements to the commons. Commercial use requires explicit permission.
Where's the source?
Open source on GitHub at m3data/earthian-biosense. Polar H10 chest strap (~AUD$90) is the only hardware. Native macOS and iOS apps, plus a Python pipeline for desktop and processing.

A movement signature. Yours.

Heart-rate variability as research instrument, not a wellness number. On-device, ESL-A licensed, opt-in by design.

clone: git clone https://github.com/m3data/earthian-biosense
Scope discipline. EBS is research infrastructure used in engagements where biosignal sensing is named as in-scope. It is not a productivity tool, not always-on, and not part of Anuna's default stack. Some engagements go deeper. Most don't.