🐾 Latch ?

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

  1. Cage up. Choose a sentence (or roll dice for one, or hide it from yourself) and lock.
  2. 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.
  3. 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.
  4. 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.
  5. 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 β†’