Project
Free and open source
Latch is free to use and its source is open. What that means here, what it is built on, and the licence it ships under.
On this page
Latch is free to use and its source is open. There is no paid tier, no hosted version, no telemetry, no account, and no plan for any of those. You run it, you own it, you can read every line of what it does with your data.
What "open source" means here
- You can read it. The whole app is about five and a half thousand lines of Python, HTML, CSS and JavaScript, with no build pipeline and no framework beyond FastAPI and Jinja. The privacy claims on the privacy page are checkable by anyone who can read code, and several of them are tests.
- You can run it anywhere. One container. No dependency on anything the maintainer runs. If the repository vanished tomorrow your instance would keep working, including this guide.
- You can change it. Rename it, retheme it, rewrite every prompt, add a module, fork it.
- You can contribute back. Feedback, issues and contributing.
The licence
Latch is AGPL-3.0-or-later. The full text is in LICENSE; copyright is held
by Lockedtrainee, the maintainer.
AGPL keeps every derivative โ including one somebody hosts as a service โ open, which is the property that matters most for an app whose whole argument is that you can see what it does with your data. A permissive licence (MIT/Apache-2.0) would have allowed closed forks; that is the one outcome worth guarding against here, so it was ruled out. Selling merch, art, hardware or curated content is untouched by the choice โ the AGPL governs the code, not what you build around it.
What it is built on
| Licence | Role | |
|---|---|---|
| Python 3.12 | PSF | the language |
| FastAPI + Starlette + Uvicorn | MIT / BSD | the web layer |
| SQLite | public domain | the database, in WAL mode |
| Jinja2 | BSD | templates |
| Pillow | MIT-CMU | stamped photos, thumbnails, recap cards |
| Python-Markdown | BSD | this guide |
| python-multipart | Apache-2.0 | uploads |
That is the complete dependency list. There is no JavaScript dependency: the wheel, the timer,
the recorder and the search are a few hundred lines of plain JS in app/latch/web/static/.
Credit where it is due
The game's shape borrows openly from chastity-keyholding apps such as chaster.app โ timer, wheel, tasks, verification โ reimagined for solo play, pup headspace, and a box you own. The habit-tracker feel (streaks, heatmap, XP) is the common language of a dozen apps. None of their code is here.
The name
Latch is the code name and the public project name. The display name is yours to change
(LATCH_APP_NAME). The project is maintained under the pseudonym Lockedtrainee; that is
the author line in the licence, the badge issuer identity, and the handle to reach for feedback.
No strings
There is nothing to buy, subscribe to, or sign up for, and there never will be a version that needs a server we run. If you want to give something back, the useful things are a good bug report, a clear suggestion, a module, or a page in this guide.
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.