Latch

Data

Privacy and what never leaves

The exact boundaries โ€” no egress, no accounts, prose versus facts, what a share card can and cannot carry โ€” and the tests that keep them true.

On this page

Privacy is the first principle here, and the rest of the design follows from it. This page is the list of what that means in practice, so you can check it rather than take it on faith.

Nothing leaves the box

Sharing is explicit egress

The only things that ever leave are files you exported and chose to send:

Prose versus facts

Every design decision about what can be seen where comes down to one line: facts are shareable; prose is yours.

Examples Share cards /api/v1 event feed Export
Facts how long, day N, streak, tasks done, rank, which photo, which task yes yes yes
Prose reflection text and excerpts, check-in scores and notes, session notes, adjustment reasons, photo captions never never yes

Concretely:

The hidden sentence

With a hidden timer, started + sentence = end. The start time is on the dashboard, so the sentence is the secret: it is withheld from the timer, the log rows, the stats table, the overlay tokens and the emergency-key confirmation until the lock ends. Adjustments and frozen time stay visible โ€” breaking one operand is enough.

The container

read_only: true, no-new-privileges, a 512 MB memory limit, an unprivileged user, a tmpfs /tmp. Uploads are capped on the stream (before bytes are read), not on the result, so an oversize POST costs a refusal and not memory. There is no shell tool in the image that could reach out.

What you are responsible for


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.