The Human State Interface (HSI) is the canonical interchange format for human-state outputs. It is a separate, language-agnostic specification (github.com/synheart-ai/hsi, currently version 1.3) that is not owned by this SDK. In the Synheart engine pipeline, HSI is the wire format that flux produces from HSV (the typed inference output of the Synheart Runtime). The SDK is a consumer of HSI: it receives HSI JSON from the Synheart runtime (which embeds the engine pipeline) and exposes it as typed events. For the canonical contract, see the HSI overview on this site or the hsi repository.Documentation Index
Fetch the complete documentation index at: https://docs.synheart.ai/llms.txt
Use this file to discover all available pages before exploring further.
Pipeline, recap
Where HSI enters Synheart Core
Typed view: HSIState
HSIState.fromJson(json) extracts:
timestampMsfromtimestamp_msorobserved_at_ms.subjectIdfromsubject_id.hsifrommap['hsi'](or the top-level when the engine wraps differently).modalitiesderived frommeta.provenance.sources[*].signalsper the Synheart signal-modality mapping contract.tiersderived from per-sourcesource_tier(physiological) andmeta.synheart.tiers.{kinematic, digital}.
rawJson is preserved on every state so apps that need full payload access can read it directly.
Axes (HSIAxes)
The current SDK emits four axis-shaped accessors:
HSI axis (HSIAxes field) | HSV head (HsvType) |
|---|---|
focus | Focus |
arousal | Emotion.arousal (one component of the Multiscalar value) |
capacity | Capacity |
sleep | Sleep |
physiological / kinematic / digital / cognitive / affective — those describe the modalities that produced a reading, not the head identity. Head names (focus, capacity, etc.) appear as axis_reading.axis strings under those domains.
Missing axes are null (not zero).
Modalities
physiological == false.
Tiers
Hsv.tiers (TierBundle); flux carries them into the HSI envelope.
Modality / tier derivation in the SDK
Signal-name → modality mapping (used byHSIState.fromJson when reading flux output):
| Signal name | Modality |
|---|---|
hr, hrv, rr, ecg, spo2, respiration, temperature, eda | physiological |
accel, gyro, motion, posture, step | kinematic |
tap, scroll, swipe, key, notification, app, screen | digital |
Validation
The SDK does not enforce HSI schema validation — that lives with the producer (flux) and any cloud consumer. Apps that need strict validation can cross-checkrawJson against hsi-1.3.schema.json before consuming.
The HSI repo defines two validation levels:
- HSI-VALIDATE-BASIC — structural + range checks against the JSON Schema for the claimed
hsi_version. - HSI-VALIDATE-STRICT — cross-field integrity (references, time ordering, dimension checks).
Embedding presence
The 64D Johnson-Lindenstrauss embedding from the inference engine is forwarded intoembeddings[] on the HSI envelope when capability level and HSI version permit. The SDK’s typed HSIState does not surface the embedding directly — apps that need it parse rawJson.
Subscribing
BehaviorSubject-backed: late subscribers receive the latest value. Synheart.currentHSIState is also exposed for synchronous access.
Privacy posture
HSI by design carries no PII (privacy.contains_pii = false). The runtime hashes subject_id before emit; cloud-bound HSI carries subject_hash, not the SDK-supplied subjectId.
The 64D JL embedding is privacy-preserving by construction — the random projection is non-invertible, so the original HSVs cannot be reconstructed from the embedding alone.
Related
- HSV Specification — the typed upstream shape produced by the inference engine.
- HSI overview — canonical contract, schemas, RFCs HSI-0008/0010/0011.
- Architecture — full data flow.
- Cloud Protocol — what HSI actually carries upstream.