Core Principle
Capabilities define what apps CAN access. Consent defines what users ALLOW. Data access requires BOTH.
Capability Tiers
Synheart Core defines three capability tiers:1. Core (External Apps)
Available To:- Third-party applications
- External developers
- Public SDK users
- Basic HSI axes and indices
- Standard time windows (30s, 5m, 1h, 24h)
- Limited embedding access (normalized only)
- Standard cloud ingestion
- Basic interpretation modules (if enabled)
- Derived biosignals only (no raw signals)
- Standard frequency windows (no high-frequency streams)
- Derived metrics only (no fusion internals)
- Standard endpoints (no research-specific APIs)
2. Extended
Available To:- Enterprise customers and approved partners on a signed agreement (case-by-case)
- Full HSI axes and indices
- Full 64D state embeddings
- Higher-frequency updates
- Advanced app context
- Extended behavior metrics
- Extended cloud endpoints
- Advanced interpretation modules
- Derived biosignals only (no raw signal streams)
- Derived metrics (no internal fusion vectors)
- Extended endpoints (no research-specific APIs)
3. Research
Available To:- Research partners with a signed agreement (case-by-case)
- Full HSI access
- Raw signal streams (with consent)
- Internal fusion vectors
- Event-level behavior data
- Full app context (unhashed)
- Research cloud endpoints
- Unrestricted time windows
- All access requires explicit user consent
- All access respects privacy boundaries and data protection policies
Module-Level Capabilities
Each module has tier-specific access levels:Wear Module
Example:
Phone Module
Example:
Behavior Module
Example:
HSI Runtime
Tier gating controls exposure of HSI fields, not internal pipeline structure. The on-device pipeline runs the same modules at every tier; capability tier is a server-and-SDK contract about which fields the upload payload (and the SDK’s typed projections) may include.
Internally the Synheart Runtime emits one unified state vector and
one 64D embedding regardless of tier — tiers do not introduce new
vector kinds, they only control which fields the SDK and upload
payload expose. See HSI specification.
Cloud Connector
All tiers POST to the same
/ingest/v1/hsi endpoint; tier differentiation happens server-side based on the capability token, not by URL.
Capability Enforcement
1. Capability Tokens
Apps receive a capability token from the Synheart Platform during registration. Token Structure (CapabilityToken):CapabilityToken; capabilities is a HashMap<String, String> keyed by ModuleId (Wear, Phone, Behavior, Hsi, Cloud) with values "none", "core", "extended", or "research".
Token Verification:
- SDK validates token signature on initialization
- SDK caches capabilities locally
- SDK checks capabilities before each module operation
- Expired tokens require re-authentication
2. Runtime Enforcement
Each module checks the capability tier before returning data. The sketch below is illustrative pseudo-code for the gating shape — the actual API isSynheart.activate(...) plus the runtime’s
internal capability checks; there is no public WearModule.getBiosignals(tier)
surface to call from app code.
- Module initialization
- Data collection
- HSI computation
- Cloud upload
- API responses
3. Server-Side Validation
Synheart Platform validates capabilities for cloud operations: Server-side validation flow:- Read
X-Consent-TokenandX-Synheart-Prooffrom the request. - Verify the
X-Synheart-Proofsignature using the device’s registered ECDSA public key (hardware-backed via Secure Enclave / Android Keystore — see Cloud Protocol). - Decode the consent token; verify capability tier and module-level grants.
- Reject with
403if the requested operation exceeds the tier or if a required consent type is missing for the payload.
Capability Upgrades
Developer Applications
External developers start with Core capabilities. To request Extended capabilities:- Apply via Synheart Platform console
- Provide use case justification
- Undergo security review
- Sign extended data usage agreement
- Established developer account
- Clear product use case
- Privacy & security review
- User benefit justification
- Research tier not available to external developers
- Raw biosignals not available outside Synheart
Capability-Consent Interaction
Capabilities and consent work together:Example Scenarios
Scenario 1: External App, Full Consent- App capability: Core
- User consent: All modules granted
- Result: App gets Core-level HSI (basic axes)
- App capability: Extended
- User consent: All modules granted
- Result: App gets Extended-level HSI (full embeddings)
- App capability: Core
- User consent: Biosignals denied, behavior granted
- Result: App gets Core HSI with
affectaxes =null
- App capability: Research
- User consent: All modules denied
- Result: No data (consent required regardless of capability)
Capability Auditing
SDK Logging
SDK logs capability checks:Platform Analytics
Synheart Platform tracks capability usage:- Endpoint access patterns
- Capability tier distribution
- Upgrade requests
- Violations and errors
Security Considerations
Tampering Prevention
SDK Protection:- Capability tokens signed by Synheart Platform
- Code obfuscation (release builds)
- Runtime integrity checks
- Certificate pinning
- Token replay: Prevented by expiry
- Token forgery: Prevented by signature verification
- Module bypass: Prevented by enforcement at multiple layers
- Man-in-the-middle: Prevented by TLS + cert pinning
Violation Handling
If capability violation detected:- SDK logs error
- Operation denied
- Error reported to Synheart Platform
- Repeated violations → token revoked
API surface
The capability tier is set server-side in the consent token and is not exposed to host code as a programmatic field. The SDK enforces tier caps internally — when you call a metric or stream that exceeds your tier, the SDK either downgrades the response (e.g. coarser embeddings) or returnsnull / a permission error, rather than emitting elevated
data.
To inspect what the SDK is currently doing, use the existing diagnostic
hooks:
Testing
Mock Capabilities
For unit tests, setallowUnsignedCapabilities: true in SynheartConfig. This bypasses signature verification on the capability token so you can hand-roll a token with the tier you want to test:
allowUnsignedCapabilities in production builds.
Capability Test Matrix
Migration Guide
From Core to Extended
When upgrading from Core to Extended:- Request upgrade via Synheart Platform console
- Update SDK to handle Extended data:
- Test thoroughly with Extended data
- Update privacy policy to reflect Extended data access
- Deploy with new capability token
Related Documentation
- Architecture - Module system and HSI Runtime
- HSV Specification - State representation
- Consent System - User permission model
- Cloud Protocol - Cloud upload specification
Last Updated: 2026-05-05 Version: 1.1.0