🐾 Latch ?

Guide β€Ί Start here

The spirit of the game

Why Latch is built the way it is β€” self-improvement through play and fantasy, honesty in the log, a Handler who wants you better every day, consent and safety first, and privacy as the axiom everything else follows from.

Latch is a game about getting better, and being held to it, played alone, in the register of pup headspace. The lock is the frame. The Handler is the voice. The work β€” writing, being honest, the training, the workout, the stretch, the instrument β€” is the game. This page is the intent behind the mechanics. Read it once; it explains every rule that looks strict.

What this is for

Self-improvement and transformation, through play and fantasy. Not a to-do list with a cage bolted on, and not denial for its own sake. The fantasy β€” good boy, kennel, Handler, training β€” is a way of wanting the structure instead of resenting it. You do the thing because you are a good boy and your Handler wants you to be the best boy you can be. Getting better every day. That sentence is the whole design, and everything below serves it.

So the game asks three things of you, and holds you to them:

  1. You write. A reflection every day you are locked. Where your head went, what brought it back, what you noticed. This is introspection with a frame around it.
  2. You are honest. The log cannot be quietly rewritten, so neither can you. Late is marked late; undone is struck through, not erased.
  3. You do the work. Training with proof. The habits you said you wanted β€” the practice, the yoga, the walk β€” logged, timed, watched. Your body's own numbers, if you let health in.

The clock gives the day an edge. The Handler gives it a voice. Training and habits give it work. The log gives it a memory. That is the whole machine.

Headspace is the point

The cage is the least important part. What Latch is really for is the pup headspace: the calm that comes from a clear rule, a Handler who notices, and a day with a shape. Locked, patient, present β€” and working.

That is why the app talks the way it does. Good boy on a saved reflection or a finished practice is not a joke and not decoration β€” it is the game acknowledging that you did the thing. If the register is not yours, change the words (Customise) and keep the mechanics.

The Handler is a structure, not a person

The Handler is the thing that asks, and the thing that notices. Today it is rule-based: seeded prompts, a cadence, a penalty for a missed reflection, a line on the habits board when nothing has been logged by evening. Later it will be a local AI persona that writes its own prompts and reads what you wrote (Roadmap). Either way the Handler has exactly one power: it can only act by emitting events into your log, through the same doors you use. It cannot see anything that is not on your box, and it cannot post anything anywhere.

You name it. You set how strict it is. You edit every line it says. The Handler is a mirror with a firm voice β€” and it is on your side. It wants you better, not smaller.

You have to write. You have to talk.

Reflection is required, not optional, and that is deliberate. A daily reflection of at least a paragraph (or thirty seconds spoken), check-ins every few hours while locked, a mantra said out loud. Missing the daily reflection is an event with a cost.

The reason: denial without reflection is just waiting. Writing down where your head went and what brought it back is what turns a locked day into training. It is also what makes the quantified side worth anything β€” headspace over time, honestly reported, by you.

You have to do the work

A reflection that says I should practise more is a sentence. A logged forty minutes of practice is a fact. The game wants both, and it treats them differently: the reflection is yours and never leaves; the practice is a number the Handler can count, chart and praise.

This is why habits can be read from the apps you already use β€” a practice tracker's calendar, a habit app's export. The point was never to make you log things twice. The point is that the game sees the work you are already doing, and holds you to the work you said you would do: praise and time off the clock for consistency, a stern word β€” and, if you ask for it, minutes on β€” when you slack. The Handler judges the rhythm you declared, not the calendar, and says nothing about a habit in its first week.

The log is honest, so you can be

Three rules keep the record trustworthy:

  • Nothing is ever deleted. Undo appends an undo event and strikes the target through. The struck row stays visible. A voided event stops counting everywhere β€” clock, XP, stats β€” but it does not stop existing. A calendar entry that changed upstream gets the same treatment: old row struck, new row written.
  • Late is marked late. You can log anything for the time it actually happened β€” a lock that started before you opened the app, a task you finished on the train, a practice a calendar told us about a day later. Anything recorded more than two minutes after its time carries a logged later badge, forever. Anything more than two days late still counts and earns no XP: rewards are for showing up today.
  • The clock is derived. Time remaining is computed from the log every time you look. There is no field to edit. To change the clock you emit an adjustment, and the adjustment is in the log with your reason.

A record that cannot be quietly rewritten is one you can look back at without flinching β€” and one that shows you, honestly, whether you are getting better.

The physical part is real

  • Always have a backup key for any physical lock, within reach, before you start.
  • Pain, numbness, swelling, colour change, or a device that has shifted: it comes off. No timer is worth an injury. The app cannot see your body; you can.
  • Hygiene is not optional. Neither is sleep.
  • Latch is not medical advice, and nothing in it should override a doctor.

The emergency key in the app ends a session before its time. It costs the clean-unlock XP and the session is marked early. That is all. It is not hidden, not throttled, not shamed, and it will never be. A game that made stopping harder than continuing would be a bad game. Use it when you need it and cage up again when you are ready.

Consent here is with yourself, and it is renewable. A hidden timer, a dice roll, a strict Handler β€” you chose them, you can change them at /settings, and the record will show you did. That is fine. Choosing is part of the play.

Privacy is the axiom

Everything else follows from this: your words never leave your box. Not to us β€” there is no us, no server, no account. Not to a CDN, not to an analytics endpoint, not to an AI in the cloud. The core makes zero outbound calls and there is a test in the repository that fails if a served page ever references one. A module that does reach the network β€” today, only the one that fetches a calendar feed you added β€” says so on its settings page before you switch it on, and fetches nothing until you do. See Privacy.

Where something can leave β€” a stamped photo you share, a recap card, an export β€” it leaves because you tapped a button, and it leaves re-encoded with location and camera metadata stripped. Your reflections and check-ins are never on a share card and never on the API's event feed. Facts (how long, how many, which day) are shareable; prose is yours.

What winning means

Not the streak. Not the level. Those are there because they feel good and because a heatmap with a hole in it is honest. Winning is a day where you were locked, you did the training, you practised, you wrote the reflection, and you can read it back a month later and recognise yourself β€” a little better than the month before. Best boy is a rank you reach by showing up, again.

Pace

Energy varies. Some weeks are a four-hour lock and a mantra; some are a week with a hidden timer and a Handler at full strictness. Both are the game. The roadmap is a direction, not a deadline, and so is your play. Cage up when you are ready. Then do the work.

This page is docs/spirit.md in the repo. Spotted a mistake? Tell us how to report it β†’