Modules
Kit
Everything you own, what it is made of, when it was actually used — and the badges your toys earn for it. Gear, toys and consumables, each measured the way it is actually used.
On this page
🦴 Kit is the inventory. What you own, what you want, what you've retired, what it is made of, what it cost — and, because the app is already watching the clock, when you actually used it and what happened.
It is the part of Latch that answers questions you cannot answer today: which hood you actually reach for, whether the expensive plug earned its price, how much lube a month really costs, and which toy your body has learned to trust.
Three kinds, because they are measured three different ways
| Kind | What it is | How it is measured |
|---|---|---|
| 🦴 Toy | plugs, dildos, vibes, strokers, e-stim, pumps | bouts of time, and what happened at the end |
| 🐶 Gear | hoods, collars, harnesses, paws, tails, the cage, restraints, attire | time worn |
| 🧴 Consumable | lube, treats, supplements, cleaner, batteries | what's left |
This is not cosmetic. Asking "how much lube is left" of a plug is meaningless, and so is "how many hours did you wear the lube". Each kind is only ever asked the question it can answer.
Categories carry their own fields
A plug has an insertable length, a maximum diameter and a base type. A hood has a size, a closure and a vision type. A lube has a base — water, silicone, oil or hybrid. A cage has a ring, a gap and a cage length. Pick the category and the right fields appear.
Two things follow from the app knowing what everything is made of:
- Care notes. A porous material (TPE, PVC, latex, rubber) cannot be fully sterilised however well you wash it, and the item page says so. Silicone toys say "water-based lube only". A numbing lube says what a numbing lube is actually doing.
- Compatibility. Start a bout pairing a silicone lube with a silicone toy and Latch stops you — that pairing wrecks the toy. Oil with latex, likewise. If either side has no recorded material the app says nothing, because a warning invented out of a blank field teaches you to ignore warnings.
Lengths
Every length is stored in millimetres and shown in both units. Insertables are entered in inches because that is what the box says; rings and gaps in millimetres because that is how they are sold. You never do the conversion yourself, which is where the mistake would actually happen.
Bouts: putting something on and taking it off
Pick one or several things — a hood and a collar and a plug is one bout, not three — say whether it's play or wear, and start. The dashboard then shows what is on and a one-tap way to finish.
When you finish, Latch asks:
- How did it end? nothing · edged · ruined · came.
- Three sliders — intensity, headspace, enjoyment. Each one is optional and each can be switched off in settings.
- Anything used? log the lube against the bout, so the level stays honest.
Everything you answer feeds the calendar, the heat strips and the progress page. Play, gear, coming and edging are each their own activity, which means each gets its own colour on the calendar and its own streak — see Progress.
Whether you were caged is not a question
Latch already knows whether the lock was on, so it never asks and it cannot be told otherwise. That is what makes a caged orgasm a real achievement rather than a self-report.
A slider you don't move records nothing
Not a zero — nothing. The scale starts at 1, so a stored 0 could only ever be invented, and once it is written nobody can tell it from an answer. The same rule runs through the whole app: an unmeasured thing is blank, never zero. See Privacy and Export.
If you forget to take something off
Latch will tell you a play bout has been open a long time. It will not close it for you, because it does not know when you took it off — and a guessed end time becomes a duration, which becomes a total, which becomes a badge. Finish it with the real time, or discard the bout entirely. Discarding records nothing at all; it does not log a zero-second use.
Wear bouts are exempt: a cage legitimately runs for weeks. That is the game.
The cage
Name your cage in settings and every lock opens a wear bout for it automatically, closing when you unlock. Its worn hours simply are your locked hours — there is no second thing to remember and no separate number to reconcile.
Consumables
Give a bottle an opening amount, a unit and a reorder level. Log what you use — from the end-of-bout form, or from the item page. The level is derived from that log, never stored as a number that gets overwritten, so "how much did August cost" stays an answerable question forever.
A consumable with no stock history reads "level unknown", not "empty". Those are different facts, and a shopping list padded with things nobody ever counted is a list you stop reading.
Photos
Every item takes photos — as many as you like, one of them the cover. They go through the same door as every other picture in Latch: stored in your own volume, never on a NAS, never anywhere off the box. See Photos.
Badges
Your kit earns trophies. So do you. Nothing is claimed or bought — a rule is checked every few minutes and awards itself when it becomes true. The cabinet is at /badges and it lists the whole catalogue, not just what you've won, so you can see what a badge takes.
Your toys can earn: Favourite toy of the month · Most-worn gear of the month · Made me come · Reliable · The one · Workhorse · Veteran · Heirloom · and Dust collector, which is not a compliment.
You can earn: Hands free · Well trained · Kitted out · Quartermaster · Well worn · Second skin · and Held the line, for a month of real play with nothing given up.
A monthly badge is decided after the month ends
"Favourite toy of August", decided on the 3rd of August, is a claim about three days wearing the name of a month. So August's trophy lands on the 1st of September, and once a month is decided it stays decided — a bout logged late can never quietly move a trophy that has already been given, or mint a second holder of the same month.
A genuine tie is awarded to everyone tied, because calling one of two equals "the favourite" would be false. And a month with only one lonely bout crowns nobody.
Each badge carries the evidence it was earned on, frozen at the time: "12 bouts · 4 h 20 m". The rows underneath keep moving; the trophy does not quietly restate itself every time you look at it.
Wishlist
Anything can be marked ✨ wishlist. It sits in the inventory, it can hold specs and a price, and it cannot be used in a bout — you don't have it yet. Later the Handler will have opinions about it.
What leaves the box
Nothing, unless you say so. Your inventory is the single most identifying thing in this database, so the shareable export excludes every kit table by construction. The one exception is opt-in per item: tick "may be named on a share card" and that item's name and category — not its price, its size, its notes, its photos or its use — become shareable. Wishlist items never are.
The full backup, which never leaves your machine, contains everything: two more
spreadsheets (kit.csv and bouts.csv) and every table. See Export.
Deleting
You can delete an item only while it has no history, which covers the typo you made thirty seconds ago. Once it has been used, retire it instead — deleting it would rewrite totals you have already been shown, and this log does not rewrite itself. See The spirit of it.
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.