Skip to content

Attention Model

Zlatko Lakisic edited this page Aug 3, 2026 · 1 revision

Attention Model

"Always on" is not a boolean. COMSTAR climbs a ladder of attention states, each with a different cost and a different tolerance for false positives.

Attention state ladder


States

State Trigger in What's running What's captured
Ambient idle wake word model, low-rate presence polling nothing persisted
Noticed YOLO person class in frame presence tracking nothing persisted
Engaged face match returns a known userid AO session opened under that identity greeting emitted
Listening wake word · follow-up window · face-attention VAD; utterance sent to STT after silence utterance only
Responding end of speech, ~700ms+ silence orchestration → TTS → avatar response + transcript to session
Sleeping terminal MCP sleep_enter wake word armed; vision/speech ignored dormant (not OS suspend)

Formal machine: Contracts — Attention State Machine.


Transitions worth understanding

Ambient → Noticed

Fires on the YOLO person class, never on motion. Motion triggers on curtains and pets.

Ambient to Noticed

Noticed → Engaged

The moment that carries the whole product. You walked into frame and it addressed you by name without being summoned.

Requires recognize_votes consecutive matches above face_confidence. Identity is cached with a TTL bound to continuous presence — recognition runs on transition, not per frame.

Engaged → Listening — three doors

  1. Wake wordhey comstar (four syllables → lower false-accept rate than two-syllable words).
  2. Follow-up window — 8–25 s (config) after any response; no wake word needed.
  3. Face-attention (feature flag) — matched face looking at the screen while speaking counts as being addressed. Behind a flag because it is the difference between magic and an assistant that answers your phone calls.

Three doors into listening

Responding → Engaged → Ambient

Follow-up opens on kiosk speak.ended (not when TTS finished generating). After the window closes and the person leaves frame, state decays to Ambient and the AO session stops.

Sleep

Sleep is not OS suspend. Processes keep running. Only WakeWord exits sleep. See Terminal Control.


Invariants (summary)

  1. AO session exists iff state ∈ {engaged, listening, responding} (may remain open while sleeping until teardown).
  2. Wake word armed unless listening / half-duplex playback (always armed in sleeping).
  3. At most one in-flight directAgent call.
  4. turn_id non-null iff listening or responding.
  5. Identity TTL refreshed only by positive FaceRecognized.
  6. No transition awaits I/O inside the machine — effects are dispatched.

Full table: Contracts — Attention State Machine.

State machine overview


Stranger modes

Mode Behaviour
restricted (default) Stay Noticed; wake still armed; no personal session
greet Open guest session with restricted overlay
ignore No engagement path for unknowns

Related pages

Clone this wiki locally