Skip to content
rytiv

Privacy policy

How this console handles personal data, under the GDPR. It covers this console only, not the applications you run on the platform - for those, you are the controller and we are your processor.

Controller

Spektal GmbH, Stau 123, 26122 Oldenburg, Germany. Contact for data protection matters: privacy@rytiv.com. Full details in the imprint.

What we store, and why

Your account. Name, email address and a hash of your password (never the password itself), plus the organizations you belong to and your role in them. Without this there is no sign-in. Legal basis: Art. 6(1)(b) GDPR - performance of a contract.

Your session. A session record and the cookies listed below, so that you stay signed in between page loads. Same legal basis.

Connection data. Our servers write access and system logs, which contain the IP address of the connection, the time, and the page requested. We need them to operate the service and to notice attacks. Legal basis: Art. 6(1)(f) GDPR - legitimate interest in a working, secure service.

What we do NOT do. No analytics, no tracking pixels, no advertising, no profiling, and no automated decision-making. Nothing about your use of this console is passed to third parties for their own purposes.

The waitlist

What we store. When you join the waitlist: your email address, the time you joined and agreed, the time you confirmed the address, your place in line, and, once a seat is free for you, the time we sent you the personal link to create an account and whether you used it. To stop the form from being abused, we also count how often it is used per network address and per email address; we store only a keyed hash of the network address, not the address itself, and delete the counters after a day.

Why. To tell you when you can create an account, and for nothing else. The only emails are about your place: the confirmation link (again only if you join again before confirming), the personal link when a seat is free, and a second personal link if the first one expired unused. No newsletter, no marketing. Legal basis: Art. 6(1)(a) GDPR - your consent, given with the checkbox and confirmed with the link in the first email.

How long. An address that is not confirmed is deleted 7 days after joining. Every entry is deleted 30 days after you create your account, or 12 months after you joined, whichever comes first.

Leaving. Every email about the waitlist has a link to remove your address at once. That withdraws your consent and deletes the entry, including a personal link that was not used yet. You can also write to us at the address above.

Who sends the emails. Our own mail service, from our servers in the EU. The entry is stored in the same database as the console in Amsterdam, Netherlands.

Rytiv AI

Rytiv AI, the assistant in this console, is optional. Nothing is sent to it unless you ask it something. The fields you ask in name the provider and the country the answers come from.

What is sent, and to whom. When you ask, the following goes to Fireworks.ai, Inc., which runs the language model: your question, the earlier questions and answers of the same thread, your team's name (for a personal workspace, only your first name) and the page you are on, and what the assistant reads about your team with its tools - names, states, sizes and usage of apps, databases, buckets, volumes and mail domains, machine ids and regions, custom domains, the labels of your apps, the names of secrets (never their values), and the status and errors of recent deploys. When you ask about one app, machine or database, also its recent history with times: deploys and pushes (commit and pusher, not the commit message), jobs and sessions (the program's name, not its arguments), take-overs of a computer, checkpoints, and the names of the tokens, keys or labels the platform recorded for them; and the status of changes the assistant proposed to your team. Your apps' logs only after you allow it, for one question at a time: the assistant then asks to read up to 500 of the last lines of one app's console output, which can contain whatever your app writes there, including personal data of your own users. The request names the app, the number of lines and the provider. Before the lines leave, email and IP addresses, tokens, keys, passwords and card numbers in them are replaced by placeholders; names and other free text are not recognised. Who allowed it and how much was masked is kept in the thread, the lines are not. An admin of your team can turn this off in the team's settings. Your email address and IP address are not sent; the provider sees our server, not your browser.

Why. To answer you, and for nothing else. Legal basis: Art. 6(1)(b) GDPR - you asked for the answer. Under Fireworks' terms the data is not used to train models, and questions and answers are not stored beyond the request (zero data retention). Parts of a request may stay in the provider's memory for a few minutes to make the next request of the same conversation faster.

Outside the EU. Fireworks is based in the USA and may process the request in the USA or in another country where it or its own sub-processors run data centres. The transfer is covered by the EU standard contractual clauses (Commission Decision (EU) 2021/914, module two), which are part of Fireworks' data processing addendum.

Your threads. Questions and answers are kept as threads of your team in the console database in Amsterdam, until someone in your team deletes the thread.

Cookies and other storage on your device

Cookies. Only the ones below. Each is set by something you do - signing in, the second factor, a passkey or GitHub. None of them tracks you or is shared with anyone, and each is needed for the console you are using, which is why there is no consent banner. Over HTTPS your browser shows them with the prefix __Secure-, which keeps them on encrypted connections.

  • rytiv-console.session_tokenKeeps you signed in. Set when you sign in, removed when you sign out.Lifetime: 7 days, extended while you keep using the console. Strictly necessary, no consent needed: without it no page after the sign-in would know that it is you.
  • rytiv-console.signup_regionRemembers the region you chose for your workspace while a sign-up with GitHub leaves for GitHub and comes back. Set only on that step, gone after ten minutes.Lifetime: 10 minutes. Strictly necessary, no consent needed: without it a sign-up with GitHub could not keep the region you picked across the redirect.
  • rytiv-console.two_factorCarries a sign-in from its first step to the second factor (authenticator or recovery code). Set after the first step, removed when the second is done.Lifetime: 10 minutes. Strictly necessary, no consent needed: without it the second step of a sign-in cannot be completed.
  • rytiv-console.trust_deviceLets this browser skip the second factor at sign-in. Set only when you tick 'Do not ask again on this browser for 30 days', removed when you turn two-factor authentication off.Lifetime: 30 days, counted again from each sign-in that uses it. Strictly necessary, no consent needed: you asked for it with the checkbox, and it serves nothing else.
  • rytiv-console.better-auth-passkeyHolds the one-time challenge while you sign in with a passkey or add one.Lifetime: 5 minutes. Strictly necessary, no consent needed: your passkey's answer is checked against it; without it a passkey cannot be used.
  • rytiv-console.stateTies GitHub's answer to the sign-in you started in this browser, against forged sign-ins. Set only when you choose 'Continue with GitHub'.Lifetime: 5 minutes. Strictly necessary, no consent needed: without it a sign-in with GitHub is refused.

And everything else this console keeps in your browser. The same rule (Section 25 TDDDG) covers storage on your device that is not a cookie, in localStorage, in sessionStorage and in the cache of the console's service worker, so all of it is listed here too. Each entry is either needed for the console to work or carries out something you asked for, none of it is used for anything else, and none of it is sent anywhere. One sentence from above does not hold for all of them: the service worker registers as soon as the first page loads, so its caches are written before you do anything, and the appearance choice is read before the first paint (written only when you pick one). Both carry the console itself and nothing about you.

  • rytiv-themelocalStorageYour appearance choice: System, Light or Dark. The console reads it in the first line of every page, before anything is drawn, so the wrong branch never flashes; it is written when you pick one.Kept: until you clear this site's data in your browser. Functional, no consent needed: you set it by choosing an appearance, it serves that and nothing else, and it holds no information about you.
  • rytiv.topology.positions.v2.<your team>localStorageWhere you dragged the cards in your architecture graph, one entry per team (the key carries your team's id, so an arrangement made in one team does not turn up in another). Written when you move a card.Kept: until you clear this site's data in your browser. Functional, no consent needed: you set it by arranging the graph, and it saves you from arranging it again on your next visit.
  • rytiv:offline-reloadedsessionStorageOne mark per tab: this tab has already reloaded itself once because the console could not be reached. Without it a console that cannot load would reload itself in a loop.Kept: until you close the tab. Strictly necessary, no consent needed: it exists so a page that cannot load recovers once instead of forever, and it holds nothing about you.
  • rytiv:stale-build-reloadedsessionStorageOne mark per tab: this tab has already reloaded itself once because a deploy replaced the part of the program it was asking for.Kept: until you close the tab. Strictly necessary, no consent needed: it exists so a page that lost its program under it recovers once instead of in a loop, and it holds nothing about you.
  • serwist-precache-v2Cache Storage (service worker), written before you do anythingThe console's own program files of the build you are on, plus the offline page, kept so that an installed console starts without downloading them again. Replaced with every deploy.Kept: until the next deploy replaces it, or you clear this site's data. Strictly necessary, no consent needed: it holds the program of the console you opened and nothing else: no data of yours, nothing about you, and nothing is sent anywhere.
  • build-assetsCache Storage (service worker), written before you do anythingFiles of the build that were loaded while you used the console (scripts, styles, fonts). Their names carry a content hash, so a different build is a different address and the cache cannot serve a stale one. At most 96 files, dropped after 30 days without use.Kept: at most 30 days after the file was last used. Strictly necessary, no consent needed: same as the precache: the program itself, and it is what lets the installed console start without re-downloading it.
  • static-assetsCache Storage (service worker), written before you do anythingFiles from public/ that keep their name across deploys (icons, art, fonts). They are shown from the cache and refreshed in the background. At most 48 files, dropped after 30 days without use.Kept: at most 30 days after the file was last used. Strictly necessary, no consent needed: same as the precache: the program itself, and it keeps the icons and faces from being fetched again on every page.

Where the data is, and who processes it for us

Your account data is stored in a managed PostgreSQL database in Amsterdam, Netherlands. It never leaves the EU. What you ask Rytiv AI does - see above.

  • Scaleway SAS8 rue de la Ville l'Eveque, 75008 Paris, FranceBare-metal servers, managed PostgreSQL, object storage and the load balancer that carries this console. Data is stored in the Amsterdam region (Netherlands).
  • Cloudflare, Inc.(outside the EU)101 Townsend St, San Francisco, CA 94107, USAAuthoritative DNS for rytiv.dev only. Cloudflare resolves the name; it is not in the request path and sees no content of your session.
  • Fireworks.ai, Inc.(outside the EU)900 Concar Drive, Floor 5, San Mateo, CA 94402, USARuns the language model behind Rytiv AI and generates its answers.

Each acts as a processor under Art. 28 GDPR. For Cloudflare, the transfer to the USA is covered by the EU standard contractual clauses; it concerns the resolution of a domain name, not the content of your session.

How long we keep it

Account data for as long as your account exists. Delete the account and it goes with it. Sessions expire on their own and are removed. System logs are kept short-term for operations and security.

Your rights

You have the right to access (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction (Art. 18), data portability (Art. 20) and objection (Art. 21). Write to privacy@rytiv.com and we will answer. You may also lodge a complaint with a supervisory authority (Art. 77); the one responsible for us is the data protection authority of Lower Saxony.

Changes

We update this policy when the service changes. The date at the bottom of the page says when it last did.