Legal
Cookies
None of our own. This page explains what is stored on your device, what the two scripts on the hosted sign-in screens store, and why you are not being asked to consent to any of it.
In effect from 30 August 2026 · Perdurance
Perdurance sets no cookies of its own, anywhere. There is no analytics package, no advertising pixel and no session-replay tool on this site or in the console, and nothing here follows you to another site. This site carries no third-party script at all. The console carries two, on two screens, and they are described below.
The two scripts on the hosted console
Signing in to the hosted service, and signing up for it, are the only screens that load anything from anybody else. The sign-in screen loads Clerk, which is who checks your Google or GitHub account and who sets a cookie so that you stay signed in while you move between screens. The sign-up form loads Cloudflare Turnstile, which is the check that tells a person from a script; it may set storage of its own while it decides.
Both are strictly necessary for the thing you asked for — there is no way to sign you in without keeping you signed in, and no way to keep a sign-up form open to the public without something standing in front of it — so neither is a choice we can offer you while still doing what you came to do. Neither is used to advertise to you, and neither is on any screen but those two. What the console stores itself is unchanged and is described below: a session key, in `sessionStorage`, which your browser discards when you close the tab.
An isolated deployment loads neither. It configures no identity provider and no challenge, so those screens are not built and the scripts are never fetched: you sign in against a password the deployment stores itself, inside your own network. This is not a setting anybody has to remember to turn off — a deployment that says nothing about them does not have them.
What is stored on your device
Three entries, in your browser’s own storage rather than in cookies. They are never transmitted to a third party, and two of the three never leave your browser at all.
| Name | Where | What it holds | Why it is needed |
|---|---|---|---|
| perdurance.appearance | This site · local storage | Whether you chose the light or the dark appearance. | You set it yourself, with the control in the header. Without it the page reverts to your operating system’s preference on every visit. |
| router.console.appearance | The console · local storage | The same choice, made in the console. | The same reason. |
| router.console.session | The console · session storage | Your session key, once you have signed in. | It is what keeps you signed in from one page to the next. It is cleared when you sign out and when you close the tab, and the session itself expires 24 hours after it was opened. |
Why there is no banner
Article 22.2 of Spanish Law 34/2002 (LSSI-CE), which implements the ePrivacy Directive, requires consent before storing information on your device or reading information already there. It applies to browser storage exactly as it applies to cookies — the law is about the storing, not about the mechanism.
The same article exempts storage that is strictly necessary to provide a service the user has expressly requested. Everything stored here falls inside that exemption:
- The session key is what authenticates you. Without it, signing in would not persist past a single page, which is to say the console would not work. That is the paradigm case of strictly necessary.
- The two appearance entries record a user-interface choice you made deliberately, by operating a control provided for the purpose. The Agencia Española de Protección de Datos treats interface-customisation storage of exactly this kind as exempt where the user actively selected it.
- The sign-in cookie Clerk sets does for the hosted service what the session key does for the console: it is what keeps you signed in. You asked to sign in; this is that.
- What Turnstile stores while it decides is what lets a sign-up form stay open to the public without being filled in three thousand times by a script. A form that cannot tell a person from a script is a form we would have to close, so the check is strictly necessary to the thing being offered.
None of the four is used to advertise to you, to profile you, or to follow you to another site. That is what the exemption turns on, and it is why this page still has no banner on it.
A consent banner would therefore be asking you to agree to something the law does not require your agreement for. We would rather tell you what is stored than interrupt you to ask about it.
Getting rid of it
Every browser can clear site data and block storage per site; the setting is usually under privacy or site permissions. Clearing the appearance entries costs you nothing but the preference. Clearing the session entry signs you out.
The service degrades gracefully if you block storage outright: the appearance falls back to your system preference on every page load, and the console will ask you to sign in again on each navigation. Nothing breaks and nothing is lost.
If this changes
If Perdurance ever adds analytics or any other non-exempt storage, this page is updated first and a consent mechanism is added before the storage is. It will not be added quietly and then documented afterwards. The two scripts described above were added under that rule: this page changed in the same commit that added them.
What is done with personal data more broadly is in the privacy policy. Questions go to hello@perdurance.dev.
Questions about this document go to hello@perdurance.dev.

