Guide βΊ 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 |
| 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 one module that can β calendar feeds β says so on its settings page and fetches nothing until you give it a URL.
- 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 your key. There is no other person in the loop unless you build one (see Packs, a proposal).
- Not a device controller. It never talks to a lock. Your physical key is yours.
- Not social. It posts nothing anywhere. Sharing is a file you exported and chose to send.
- Not multi-user. One principal per instance. Every event records who did it
(
user,system, a module,api,ai) so roles can come later without rewriting the log.
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 is docs/what-is-latch.md in the repo. Spotted a mistake? Tell us how to report it β