-
Notifications
You must be signed in to change notification settings - Fork 1
Kiosk and Avatar
The avatar renderer. Chromium in kiosk mode on the Pi, driven entirely by bridge messages (Contracts — Bridge ↔ Kiosk).
Phase 1 ships a 2D renderer: the ComStar starburst as live inline SVG on a dark field. No background image, no WebGL required, no GLB, nothing fetched from the internet. The mark is the avatar.
![]()
terminal/kiosk/
├── index.html production entry
├── debug.html standalone harness, no bridge
├── avatar.js renderer
├── presets.js swappable emblem designs
└── bridge_client.js envelope + reconnect
Production is typically served by the bridge at http://127.0.0.1:8776/kiosk/. Dev: make kiosk-dev → :5173.
| Channel | Driven by |
|---|---|
| Ring rotation, brightness, scale | attention state (~300 ms damp) |
| Halo swell and meter arc |
listening message level
|
| Core pulse | speech amplitude from AnalyserNode on the audio element |
| Emblem drift |
setGazeFromBox() with CPAI face bounding box |
| Counter-rotation |
thinking message |
Amplitude is read from the waveform actually being played — it cannot drift. Audio sink: ADR 0001.
![]()
| Preset | Character |
|---|---|
starburst |
The ComStar mark — default |
reactor |
Hexagonal containment rings — industrial |
sentinel |
Vertical sensor slit — watchful, minimal |
spectrum |
Radial waveform — most reactive to speech |
instrument |
Navigational dial — precise and quiet |
![]()
| Option | Default | Failure mode |
|---|---|---|
emblemScale |
0.62 |
Too high → star points leave the edges |
bloom |
9 |
Too high → halo becomes a white mass |
Also available as query params ?scale= and ?bloom=. Bloom is SVG feGaussianBlur in user units (not CSS blur), so it is invariant to panel size.
Demo mode: ?demo overlays state / fps / gaze / amplitude.
When avatar.model (.glb) is present and WebGL is healthy, load TalkingHead into #avatar with the same public API (setState, speak, …). On WebGL context loss, fall back to HTMLAudioElement and keep speak.* events. The avatar must never take down the voice assistant.
Render path decision: ADR 0002.
cd terminal/kiosk
python3 -m http.server 5173
# open http://localhost:5173/debug.htmlMust be served over HTTP (ES module CORS).
- ADR 0001
- ADR 0002
- Contracts — Bridge ↔ Kiosk
- Dev Loop — Loop A hot reload
COMSTAR AI — Not a mystical AI. A tool you engineered — transparent, hackable, fast.
Home · Architecture · Admin Console · Runbook · Contracts
Apache-2.0 · Pre-alpha · Raspberry Pi 4 terminal + local AI server
COMSTAR AI
Start here
Product
Build & configure
Interfaces
- Contracts Overview
- Bridge ↔ Kiosk
- Bridge ↔ Audio
- CodeProject.AI
- AO Reach
- MCP Tools
- Attention State Machine
Features
- Speech (STT/TTS)
- Vision & Face Enrollment
- Directory Identity
- Wake Word
- MCP Topology
- Terminal Control
- Google Workspace
Decisions (ADRs)
- ADR Index
- 0001 Audio Routing
- 0002 Render Path
- 0003 Speech on Ada
- 0004 Terminal Control
- 0005 LDAP Identity
- 0006 House Presence
- 0007 Full-Duplex AEC
- 0008 TTS Engine
- 0009 Proactivity
- 0010 Text Channel
- 0011 Road VPN
- 0012 Admin Network
- 0013 AO mTLS
- 0014 Fallback Hotspot
Operate
Plan
Meta