| Piece | What it is | Released as |
|---|---|---|
| Syni Flutter SDK | Dart/Flutter consumer SDK — agent, install lifecycle, persona binding, streaming chat | package:syni on pub.dev |
| Syni Runtime | Native inference engine with a stable C ABI (FFI). The native artifact every SDK calls. | dist.synheart.ai/syni-runtime/ |
| Syni Spec | Canonical persona / safety / schema / grammar contracts | dist.synheart.ai/syni-spec/ |
| Syni Cloud Gateway | HTTP + SSE chat endpoint for cloud-fallback inference, persona-aware | api.synheart.ai |
What “adaptive” means
Syni adapts its output to the user’s current physiological and behavioral state. The runtime’sPromptBuilder reads an opaque conditioning map
passed in via the hsi: parameter on every request, and shapes the
prompt — system context, persona modulation, and decoded structured fields —
based on what’s in it.
Synheart-stack apps populate that map with HSI, Synheart’s
unified Human State Index derived from biosignal SDKs (wear, behavior,
session) via synheart_core. Non-Synheart apps
can pass any Map<String, dynamic> — an ad-hoc context dict, a stress
score from another source, or null for unconditioned inference — and
the same persona will resolve to a coherent response.
In short: Syni is the LLM substrate; HSI is the differentiator that makes it
adapt rather than just respond.
Install
The Synheart CLI handles the runtime + spec on disk:synheart/vendor/syni-runtime/ and
synheart/vendor/syni-spec/. The verb shape is product + component:
product nouns (syni, core) install every component you’re entitled
to; component nouns (runtime, spec) fan out across products; two-arg
forms pin to one canonical package.
The Flutter SDK is added separately via pub:
synheart/vendor/syni-runtime/ tree.
Why Syni is split this way
- Runtime ≠ SDK. The native runtime + C ABI is the slow-changing artifact. SDKs in three languages (Dart, Swift, Kotlin) layer over the same ABI.
- Spec ≠ code. Persona behavior, safety rails, output schemas, and grammars are versioned contracts that can ship independently of any inference change. Same spec id → same behavior on local + cloud.
- Cloud is opt-in. Every persona declares an
execution_policy(local/cloud/hybrid). Apps can run fully offline, or fall back to cloud per call.
Persona model
Personas are JSON contracts insyni-spec. Each one
declares:
- a stable id (e.g.
focus.coach.v1) output_schema_id— the JSON Schema the response must satisfysafety_rule_ids— global policies that constrain outputexecution_policy— local / cloud / hybridcapability_tier(optional) — preferred cloud-model lane:fast/standard/deep. The cloud gateway uses it to pick a route when the caller hasn’t pinned a model. Omit (or setstandard) for the default lane; pickfastfor conversational personas that don’t need deep reasoning; pickdeepfor long-range analytical personas that do. Unknown values fall back to the default lane.privacy— what data may leave the devicebudget— token / request limits
focus.coach.v1stress.coach.v1cognitive.companion.v1performance.coach.v1wellness.guide.v1
Related
- Syni Flutter SDK — getting started in a Flutter app
- Syni Runtime FFI — the C ABI for SDK authors
- Syni Spec — persona / safety / schema contracts
- Install via CLI —
synheart install syni