Three acts
Models got minds. Interfaces stayed mute — spinners and “thinking…” that nobody trusts.
Give the UI a public mind: idle, listening, thinking, talking — one API, many bodies.
Download a file. Open it offline. Wire say() to your model. Presence without theatre.
Manifesto (short)
Don’t decorate waiting. Share state. If you can’t say it honestly, stay quiet.
Audience — four problems
| Layer | Problem |
|---|---|
| External | Demo feels dead while the model works; stakeholders ask why. |
| Internal | Builder is embarrassed by the spinner they shipped. |
| Identity | They want a product that feels alive — not a chatbot skin. |
| Philosophical | Opaque systems erode trust; readable presence is respect. |
From → to
| From | To |
|---|---|
| Looping spinner | Four-state companion |
| Fake progress | Honest local/live status |
| Custom 3D face (weeks) | mount() this afternoon |
| Dead corner | Presence you can read |
| Signup wall | File on disk |
Voice
Personality: attentive, spare, warm, precise, unshowy.
Patterns: short sentences; verbs; outcomes; name the limit in the same breath as the claim.
Owned: presence, companion, four-state mind, offline starter, waitlist, menagerie.
Forbidden: revolutionary, unlock the future, empower, fake proof, buy buttons that don’t buy.
Microcopy
Activation = a file on your machine. Starter opens offline.
Checkout isn’t live yet. Couldn’t reach the model — using a local reply.
Success measures
- North star: starter /
glim.jsdownloads - Inputs: feedback yes-rate; Pro notify emails; demo asks
- Kill: after 50 honest taps, yes < 20% → stop creature polish, rethink job
- Check-in: 30 days after quiet release begins
derived — launch.html. Vanity metrics = context only.