Start here
What Latch is
A self-hosted, single-player game of self-improvement through play and fantasy โ a lock, a Handler, training, habits and a quantified log that holds you to getting better every day, in the register of pup headspace.
Latch is a solo lock game about getting better. You lock, the clock runs, and the game โ through its Handler, its wheel, its training and the habits you said you wanted โ shapes what happens to that clock and to your head while it does. You write. You are honest. You do the work: the workout, the stretch, the instrument. Everything is written to a log that becomes your timeline, your stats, your streaks and your stamped photos. Self-improvement through play and fantasy โ quantified, but a game.
It borrows its shape from chastity-keyholding apps like chaster.app and its soul from pup play: the good boy, the kennel, the Handler, training, headspace. The copy in the app is written in that register โ firm and affirming. If that is not your register, the words are yours to change (Customise); the mechanics work either way.
The loop
- Cage up. Choose a sentence (or roll dice for one, or hide it from yourself) and lock.
- Live locked. The Handler asks for a daily reflection and periodic check-ins. Training gets assigned โ some of it wants a verification photo. The wheel adds time, removes time, freezes the clock or hands you a task.
- Do the work, and log it. Training with proof. The habits you are building โ practice, yoga, a walk โ with one tap, a timer, or read straight out of the calendar your practice app already keeps. Photos, notes, voice memos, mantras, headspace sessions. Every one of them is an event with a timestamp โ and a when field, if it happened earlier.
- Time served. Unlock clean for the XP, or use the emergency key early. Either way the session is a record: a recap card, stamped photos, a row in your stats.
- Look back. Streaks, heatmap, rates per week, headspace over time. Then cage up again.
The parts
| Part | What it does | Page |
|---|---|---|
| The clock | Server-authoritative timer derived from the event log. Add, remove, freeze, undo, hidden mode, dice. | Playing |
| The Handler ๐พ | Daily reflection (typed or spoken), check-in surveys, mantras, affirmations, headspace sessions, a missed-reflection audit. | Handler |
| Wheel of Fortune ๐ก | Weighted segments: time added, time removed, a freeze, a random task, or nothing. Cooldown between spins. | Wheel |
| Training ๐ | A task library with rewards, penalties, deadlines and photo verification. Overdue training fails on its own. | Training |
| Habits ๐ฏ | The things you want to be better at, logged with one tap, a timer, a Shortcut โ or read from a calendar another app writes. Your Handler judges each one: praise and time off for consistency, a word when you slack. | Habits |
| Health ๐ | Sleep, steps, mood and workouts steer the game; a bad night makes the Handler ease off. | Health |
| Kit ๐ฆด | Gear, toys and consumables โ what you own, what is on, what got used. | Kit |
| Photo check-in ๐ธ | One tap from the dashboard: the picture is the entry. | Playing |
| Gallery, stamps, recap cards | Photos overlaid with the stats as they were at the shutter; a session recap you can share. EXIF stripped. | Photos |
| Progress | XP, levels, ranks, streaks, 26-week heatmap, per-week rates. | Progress |
| Export | JSON, CSV, a zip with your media. Yours, restorable, never automatic. | Export |
| Pup ID and packs ๐ชช ๐บ | Optional. A key that is you and moves with you to a new box; a pack of pups โ with a Handler, or just friends โ that sees only what you tick. | Pup ID and packs, explained |
| API | Bearer-token JSON for Shortcuts and bots. Off until you turn it on. | API |
What makes it different
- The timer cannot lie.
end = started + sentence + adjustments + frozen time, computed from an append-only log every time it is read. Undo voids an event; it never deletes one. A lock you log after the fact is marked logged later forever. The record stays honest about when you told it. - Reflection is enforced. You have to write. You have to talk. Skipping it is an event the Handler notices. That is the immersion mechanism, not a nag.
- It watches the work you already do. A practice tracker, a habit app, a time tracker โ if it publishes a calendar, Latch can read it, and the game sees the work without asking you to log it twice. See Habits.
- It is entirely yours. One binary, one SQLite file, one media folder, on your hardware. No account, no server of ours, no telemetry, no CDN. The API is off until you set a token. The core makes zero outbound calls; the modules that can โ calendar feeds, your AI Handler, packs โ say so on their settings page and call nothing until you set them up.
- Modules are plugins. The Handler, the wheel and training are packages dropped into a directory. So is anything you write. See How modules work.
- Free and open source. See Free and open source.
What Latch is not
- Not a keyholder service. Nobody else holds the key to your lock. There is no other person in the loop unless you invite one โ a Handler, through a pack you choose to join โ and even then they only ask; your box decides. See Pup ID and packs, explained.
- Not a device controller. It never talks to a lock. Your physical key is yours.
- Not social. It posts nothing publicly. Sharing is a file you exported and chose to send โ or, in a pack you joined, a card carrying only what you ticked.
- Not multi-user. One pup per instance. Every event records who did it (
user,system, a module,api,ai, a Handler), so the log always says whose hand it was.
Who it is for
A pup who wants structure and a record. A curious person who wants a lock game they can trust with their own words. A self-hoster who wants one more thing that runs on the box in the closet and never phones home. If you are one of those, start here.
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.