Privacy

What catlog stores, what it deliberately cannot store, and how to make it all go away.

catlog never receives your email address

This is not a promise about what we do with your email. It is a statement about what catlog is able to know: your email address is never requested from any identity provider, so it is never sent, so there is nothing to store, leak or hand over.

catlog asks each provider for the narrowest scope that yields a stable account id, and nothing else:

ProviderScope requestedWhat catlog reads
Discordidentifyyour numeric user id
Googleopenidthe sub claim of the id_token
GitHubnone (default)your numeric user id

None of those scopes grants an email address. The provider's access token is used for exactly one call — the one that reads that id — and is discarded immediately afterwards. It is never stored.

Even the account id is not kept

The id from the provider is immediately hashed into an opaque 32-byte value:

user_key = HMAC-SHA256(pepper, "<provider>:<account id>")

The pepper is 32 random bytes held on the server outside the database and never logged. Only the user_key is stored. There is no column anywhere holding a Discord snowflake, a Google subject or a GitHub id, so a copy of the database does not let anybody walk back from a row to an account at a provider.

What is stored

  • Your user_key, which provider it came from, and when the account was created.
  • Your handles, and when you claimed them.
  • Credential metadata: the public-key thumbprint, the license id, issue and expiry times. Never a private key — catlog is never sent one.
  • Flight events sent by the mod: what happened, when in sim time, and the measurements the leaderboards are computed from. Kitten names travel with them, because they are on the boards.
  • The server-side receive time of every event and batch.

What is not stored

  • Email addresses — see above.
  • Provider access tokens or refresh tokens.
  • Real names, avatars, profile URLs, friend lists.
  • Save files, craft files or screenshots.
  • Your private key, in any form.

Two accounts, one person, and why nothing links them

catlog permits one person to hold more than one handle, and the point of that is that no outside observer can tell. Three identifiers travelled with your events that would have broken it:

  • The installation id. Constant for the life of an install and the same whichever handle is shipping. It is never published — not blanked, not replaced, removed.
  • The career id — which save a record came from — and the kitten id. Both are derived from the installation id, so both are identical across two handles playing the same save or flying a kitten of the same name.

Career and kitten identifiers are relabelled per player before anything leaves the server: they still group your own records together, and they cannot be matched against anybody else's. The label is computed from your player id as well as the value, so two handles looking at the same save see two unrelated labels.

Two things this does not fix, stated rather than hidden. Kitten and vehicle names are the same across a person's two accounts if they name things the same way, and catlog cannot remove them without deleting the content the leaderboards exist to show. Receive times correlate anything shipped at the same moment, which the live feed has published per handle since it existed.

What is public

Your handle, your leaderboard values and their context (body, speed, energy), your rank, and the live feed lines your flights generate. That is the point of catlog. Your raw event log is public too, at /p/<handle>/events: it is what makes a leaderboard checkable rather than merely asserted. Everything else — which provider you used, when you signed in, your quota usage — is visible only to you, on your dashboard.

Flights flagged as cheated — teleports, refuels, resource edits, console use, live tuning edits — are stored and score nothing, and they appear nowhere public: not on a board, not in the live feed, and not in an event log, including your own. catlog would rather record the truth than pretend it did not happen, but a browsable list of whose flights were flagged would be a permanent public mark on a person, and a flag's only effect here is that a flight does not count. There is therefore no page, yours included, that says which of your flights were flagged.

The handle this browser calls “me”

Pressing This is me on a profile stores that handle in this browser, under catlog:me. It is a local preference and nothing more: it is never sent to catlog as an identifier, never appears in a query string on a cached page, never in a Referer, and it is not a login. Two people sharing a machine share it, exactly like a bookmark. Clearing it is the clear control beside it in the header.

Deleting everything

DashboardDelete everything catlog holds about me. That deletes every event, batch, stream record and credential, and removes the archived copies.

Two things survive on purpose. A tombstone — the user_key, a reason and a timestamp — so a deleted account cannot be silently recreated, and the retirement of your handles: a handle is never recycled, so nobody can take a name you were known by and be mistaken for you. Neither carries any information about who you are.

Transport and cookies

One cookie, catlog_sess: a signed, HttpOnly, SameSite=Lax session that expires after seven days. There is no analytics script, no third-party script, no tracking pixel and no advertising identifier on this site — every asset it loads, the typeface included, is served from this origin.