Latch

Modules

The Handler

The module that asks โ€” daily reflection, check-in surveys, mantras, affirmations, headspace sessions, and the audit that notices a missed day. Rule-based today, a local AI persona later, same module.

On this page

๐Ÿพ The Handler is the voice of the game. It sets the day's prompt, asks how your head is on a cadence, hands you a mantra, sits with you through a headspace session, and notices when you skipped the one thing it required. Everything it does is an entry in your journal and an event in the log, so the stats see it.

You name it (What you call them โ€” the default is "Handler"). The name is in every line it says. You also set how strict it is; every rule below is a field on /settings.

The daily rhythm

The Handler card on the dashboard shows one line at a time โ€” the most important thing it wants โ€” and lights the ๐Ÿพ button with due or overdue:

  1. Not locked โ†’ "The kennel is quiet. When you're ready, cage up."
  2. Check-in overdue โ†’ "You've gone quiet. Check in. Now."
  3. No reflection today โ†’ "Write today's reflection before the day ends."
  4. Check-in due โ†’ "Good boy. Now check in."
  5. Mantra not yet recited โ†’ "Recite today's mantra and mean it."
  6. Everything logged โ†’ "Stay in your headspace."

Reflection (required)

One per local day while locked. The prompt is chosen from the library deterministically per day, so reloading never changes the question. Two ways to answer:

Either way: +15 XP, Good boy. Reflection logged. The due by hour (default 22:00) only changes the nag text; the day is the unit.

The microphone needs HTTPS

Browsers refuse the recorder on an insecure origin. Use your https:// address through the reverse proxy, never the raw port. See Install.

Check-in survey

While locked, every Check-in every N hours (default 4; 0 turns it off). Five scores from 1 to 10 โ€” headspace ยท obedience ยท mood ยท denial ยท energy โ€” plus a prompt ("What does your Handler need to know right now?") and a free line. At twice the interval it becomes overdue and jumps to the top of the Handler's list. +5 XP.

The scores are the raw material for headspace-over-time charts (on the roadmap) and are exported as their own CSV columns. They are prose-adjacent: they never appear on a share card or on the API's event feed (Privacy).

Mantras and affirmations

A mantra of the day (deterministic per day, like the prompt), meant to be said out loud before you log it โ€” +3 XP. The whole mantra list is one fold away. Affirmations are the Handler's lines to you, one tap each, +2 XP. Both are journal entries.

Headspace sessions

A timed sit โ€” meditation now, hypno scripts later. Pick minutes (at least one), optionally a script from the library, add a note after. XP = minutes, capped at 20. The duration is logged as part of the entry.

The audit: a missed reflection costs

Once per local day, at the first tick after midnight, the Handler looks at yesterday:

then it emits a reflection missed event and adds Penalty for a missed daily reflection (default 30 minutes) to the active clock. If there is no active lock at audit time, the event is recorded with the penalty marked not applied.

It looks exactly one day back, once. It never stacks, and the very first run only starts the clock โ€” there is no retroactive penalty for days before you installed it. A missed-reflection penalty is undoable within the undo window if it was wrong.

The journal

The Handler page ends with the journal: the last forty entries of every kind, with prompt, body, scores, duration and the voice player where there is a memo. The Log page shows the same things as events with an excerpt.

The library: your Handler's voice

Settings โ†’ ๐Ÿพ Handler holds the prompt library, one table, five kinds:

Kind Used for Seeded with
reflection the daily prompt 12
checkin the check-in question 4
mantra mantra of the day 8
affirmation the affirmation buttons 8
meditation headspace scripts 3

Each line has a weight (probability in the daily draw; 0 never draws) and an enabled switch. Add your own; rewrite the seeded ones; disable what does not land. The register is yours: firm, gentle, explicit, clinical โ€” the mechanics do not care.

Settings

Key Meaning Default
handler.name What you call them Handler
handler.reflection_min_chars Minimum typed reflection 120
handler.reflection_due_hour Due-by hour for the nag text 22
handler.checkin_hours Check-in cadence while locked (0 = off) 4
handler.missed_penalty_minutes Cost of a missed daily reflection 30
handler.voice_min_seconds Minimum spoken reflection (0 = no minimum) 30

What the Handler never does

It never leaves the box, never reads anything that is not in your log, never posts, and only ever acts by writing events through the same doors you use. When the AI persona arrives (Roadmap) it inherits exactly those limits: a local model, acting as actor=ai, rate-limited, every action an event, your words never leaving the LAN.


This page also ships inside the app, at /guide โ€” so your own instance always serves the guide for the version you are running, with the internet unplugged. Get Latch ยท Something wrong here? Tell me.