Theora HUD emulator
What the agent pushes to the glasses display. One page, because the format is small on purpose.
Shape
A card is three lines of text. Nothing else. No colour, no icons, no graphics, no animation.
| Field | Type | Rule |
|---|---|---|
lines | list of strings | Up to 3. Fewer is fine; the rest blank |
| line length | n/a | 24 characters. Longer is cut, never wrapped |
| whitespace | n/a | Runs of spaces collapse to one |
There is no title, no priority, no timestamp field. If the time matters, put it on a line.
Update semantics
- A push replaces the whole card. There is no partial update.
- The display holds the last card indefinitely. Cards do not expire on their own; push a blank card to clear.
- Pushes are last-write-wins. No queue, no history, no stacking.
- Pushing an identical card is a no-op and does not redraw.
Why it is this small
The display is monochrome, single-eye, and read in a glance while the wearer is doing something else. A card that needs a second look has already failed. Three lines is roughly what someone takes in without stopping.
Design for the glance, not the screen: the first line should be readable alone.
Examples
Time and next event
09:41
Standup in 8 min
Room 2
Heart-rate trend: a trend, not a diagnosis
Resting HR
trending down 4 days
since Tuesday
A notification
Sam
"are we still on for 6?"
reply / dismiss
Pushing one
Command line:
python3 hud.py --push "09:41|Standup in 8 min|Room 2"
From Python:
from hud import push
push(["09:41", "Standup in 8 min", "Room 2"])
From the agent: the glance tool in tools/glance.py exposes a show_glance action, so FERAL can push a card the same way it calls any other tool.
Health language
Cards describe what a sensor measured and how it is trending. They do not name conditions, do not advise, and do not warn. "Resting HR trending down 4 days" is a card. Anything that reads as a finding is not.
Theora is a general wellness product. It is not a medical device, and it does not diagnose, treat, cure or prevent any disease.