Privacy.
Which data we process, for what purpose, and on which legal basis, derived from what the code actually does.
1 · Controller
Harwin Singh Malhi & Philip Degenhardt GbR
Bodenseestraße 302D
81249 Munich, Germany
Email: hello@trialone.info
Phone: +49 163 3799189
Data protection officer: TODO: check whether one is required under Art. 37 GDPR / § 38 BDSG; with two people, usually not.
2 · Visiting this website
- Data
- IP address, time, requested URL, user agent, referrer, in server logs
- Legal basis
- Art. 6 (1) (f) GDPR: operation and security of the website
- Retention
- TODO: enter the retention period of the Vercel logs
- Data
- Page views, referrer, approximate origin, device type
- Legal basis
- TODO: clarify the legal basis. Vercel Analytics sets no cookies; whether that satisfies § 25 TDDDG is an assessment, not a question the code answers.
- Retention
- TODO
- Data
- When a page or request fails: the error message and the address of the page without its query, cleaned of keys and email addresses, a reference number, and whether it happened on the server or in the browser. No IP address is stored with it.
- Legal basis
- Art. 6 (1) (f) GDPR: finding and fixing faults in the service
- Retention
- 30 days, then deleted by a daily cleanup
- Data
- Nothing is loaded from Crisp until you click the chat button or Get help. Then: IP address, browser and device details, and an identifier that Crisp stores in your browser so the conversation can continue. If you write to us: your messages, the page you wrote from, and the email address of your account if you are signed in. Recordings and diagnoses are never passed to Crisp.
- Legal basis
- Art. 6 (1) (b) GDPR: answering the request you start by opening the chat. The identifier is stored only after that click, because the chat you asked for needs it (§ 25 (2) no. 2 TDDDG).
- Retention
- TODO: set how long conversations are kept in Crisp and name it here
Hosting and measurement run at Vercel Inc. TODO: conclude a data processing agreement with Vercel and reference it here; state the project's server region.
3 · Account and access
- Data
- Email address, password (only as a hash at Supabase), with GitHub/Google also the provider's display name and profile picture address, account ID, timestamps
- Legal basis
- Art. 6 (1) (b) GDPR: providing the access you requested
- Retention
- TODO: until the account is deleted; define the deletion path and name it here
- Data
- First and last name, email address, company, team size, what you are building, and your account ID if you are already signed in; the time of the request, our decision, and whether our notification and your confirmation email were delivered
- Legal basis
- Art. 6 (1) (b) GDPR: steps prior to entering into a contract, taken at your request
- Retention
- TODO: decide how long requests are kept, in particular declined ones
- Data
- Your CLI key, checked against its stored hash, at most once a day; the answer (approved or not, and when) is kept on your own machine
- Legal basis
- Art. 6 (1) (b) GDPR: the tool runs for approved accounts
- Retention
- Only the time of last use is kept with the key, see the next entry
- Data
- SHA-256 hash of the key, a label you choose, creation, last use, revocation
- Legal basis
- Art. 6 (1) (b) GDPR
- Retention
- TODO: until revoked; decide how long revoked keys are kept
The key itself is never stored, only its hash: whoever reads the database cannot sign in with it. The label you choose (“Anna's laptop”) is a free text field, and whatever you write there is stored.
4 · Uploaded diagnoses
You set per machine what is uploaded (Settings, Robots, “History that leaves this robot”). The default is “full”: the result of the diagnosis, key figures per channel, a history of every channel as sample points (min, mean, max per section; 120 per run for recordings, one per minute in the watcher) and the minute around each finding at 10 Hz. “incident” leaves out the history, “off” also the minute around the finding. The recording itself (bag, MCAP, CSV) is only uploaded if you switch that on for the machine; it is off by default.
- Data
- The recipe: symptom, causal chain, measured values, channel names, file and parameter names from your project, file and line references; plus a hashed machine ID, the program version and the time
- Legal basis
- Art. 6 (1) (b) GDPR: the function you called the push for
- Retention
- TODO: decide on retention. Proposal from TERMINAL-ZU-WEB.md §13.1: unlimited, with deletion per run and “delete everything” in the account.
A run can only be read by its own account; the database enforces this itself (row level security), not only the application. A recipe can reveal the structure and naming of your project: paths, parameter names, channel names, measured values. That is usually not personal data, but it is your know-how, and it is named here instead of left unsaid.
5 · Interpretation by a language model
- Data
- The content of the recipe: channel names, measured values, file and line references from your source tree, your description of the machine, your own observations, and your question in the chat. NOT the recording itself.
- Legal basis
- Art. 6 (1) (b) GDPR: the explanation is the service you commissioned
- Retention
- TODO: check retention at the model provider and name it here (Anthropic and OpenRouter each have their own periods; at OpenRouter it also depends on the provider it routes to).
You choose which model is used under Settings → Model. If the interpretation runs with your own key on your robot, nothing leaves our servers for it: the connection then goes directly from your machine to the provider, and we see neither the request nor the answer.
TODO TODO: conclude a data processing agreement with the chosen model provider; secure the transfer to a third country (USA) with standard contractual clauses and name it here. As long as this is open, every customer conversation has to mention that this transfer takes place.
Observations a person enters (“checked the connector, it was fine”) are free text and go into the same request to the model, see Settings. Whatever you write there is transmitted.
6 · Payment and billing (Stripe)
- Data
- Email address, billing address, payment method metadata (brand, last four digits, expiry), amounts, invoice numbers, Stripe customer and subscription ID
- Legal basis
- Art. 6 (1) (b) GDPR: performance of the contract; Art. 6 (1) (c) GDPR for retention under commercial and tax law
- Retention
- TODO: enter the statutory retention period for invoices (usually 10 years, § 147 AO) and separate it from account deletion
The card number never reaches us: it is entered at Stripe, and we only get back what is listed above. That is also why we cannot lose it.
- Data
- Time, model name, token count, number of explained incidents, credit used
- Legal basis
- Art. 6 (1) (b) GDPR: billing the agreed service
- Retention
- TODO: decide how long usage lines are kept
7 · Connected services (only if you connect them)
- Data
- For Slack/Discord: the webhook address of the channel you chose, and the names of the channel and workspace; the finding text is transmitted. For GitHub: installation ID, names of the repositories you released; the content of the issue is transmitted.
- Legal basis
- Art. 6 (1) (b) GDPR: forwarding is the function you set up
- Retention
- Until you disconnect (Settings → Integrations)
Without a connection you set up, nothing flows to these services. The GitHub app has no permission for contents: it cannot read a file, a branch or a secret.
8 · Contact, replies, booking a call
- Data
- Your name if you give it, email address, your message, the page you wrote from, and your account ID if you are signed in; the time, and whether the message was delivered to us
- Legal basis
- Art. 6 (1) (b) or (f) GDPR
- Retention
- TODO
- Data
- When we answer a message or an access request from our admin console: recipient, subject, text, which of us replied, and when
- Legal basis
- Art. 6 (1) (b) or (f) GDPR
- Retention
- TODO
- Data
- The IP address of whoever submits the contact or access form, held only in the working memory of the server to count submissions over ten minutes; it is not written to a database
- Legal basis
- Art. 6 (1) (f) GDPR: keeping the forms usable and preventing our address from being used to send mass email
- Retention
- Ten minutes of counting; after that it is removed from memory within a minute
- Data
- What you enter in the embedded calendar; loading it transmits your IP address to Cal.com
- Legal basis
- Art. 6 (1) (b) GDPR
- Retention
- TODO
Email to hello@trialone.info arrives in a mailbox at IONOS (Germany). Our notifications, your confirmation emails and our replies are sent through Resend, with the sending region set to the EU. Sign-in emails (confirming your address, setting a password) are sent by Supabase through the same service. TODO: conclude data processing agreements with Supabase, Resend, IONOS, Crisp and Cal.com and reference them here.
9 · Recipients and transfers to third countries
We pass data to the service providers named above as far as they need it for operation: Vercel (hosting, audience measurement), Supabase (account, database, sign-in emails), Resend (sending email), IONOS (our mailbox), Crisp (chat), Stripe (payment), Anthropic or OpenRouter (interpretation), Cal.com (booking a call, where offered), and Slack, Discord or GitHub only if you connect them.
TODO: for each service, state its seat, server region and the basis for any transfer to the USA (EU-U.S. Data Privacy Framework or standard contractual clauses). This cannot be read from the code.
10 · Your rights
You have the right of access (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18), data portability (Art. 20) and to object to processing based on legitimate interests (Art. 21). You can withdraw consent you have given at any time with effect for the future.
You can exercise the most common of these yourself, without writing to us: under Settings, Profile, “Your data” you download everything your workspace has with us as one file and delete your account; a single run is deleted from its own page, together with its stored files.
For anything else, write to hello@trialone.info. Independently of this, you can lodge a complaint with a data protection supervisory authority (Art. 77 GDPR); the authority responsible for us is the Bavarian State Office for Data Protection Supervision (BayLDA).
11 · Last updated
This policy describes the state of 15 September 2026. If what is processed changes, this page changes with it.