Kauri · Karussell Labs OÜ
What leaves your machine, and what does not
Version 2026-09-06. English is the binding language.
Kauri has three parts. Only one of them ever holds a credential, and it is the one that runs on your machine.
| Part | Runs | Holds |
|---|---|---|
| The runner, a command-line tool | On your machine or in your CI | Every environment credential you already had. It reads your database, your host, your stores. It uploads findings only. It executes nothing. |
| The platform, this site | Hetzner, Germany; database Supabase, AWS Frankfurt | Findings, records, commit messages and pull-request titles, the text you type, the files you attach, member email addresses. One read-only GitHub App token, when you install it. |
| The model | On the platform’s own server, loopback only | Four kinds of text, transiently. Nothing else can reach it. |
What never leaves the runner
- environment variable values
- connection strings
- service keys and access tokens
- store credentials (App Store Connect, Google Play)
- database rows
- file contents
This is enforced by code, not by policy: the runner builds its upload from a closed set of fields, and refuses to build one containing anything shaped like a secret. The check runs before the bytes exist. The list above is a test in the runner’s source, and the build fails if a serialisation site does not say where its bytes go.
What a model may see
Exactly four kinds of input: the text you typed into a request, a finding summary, a commit message or pull-request title, and a record from the ledger. Any other kind is refused at construction. The supported model runs on the platform’s own server and is reachable only from that server. If you choose to configure your own model vendor instead, every result is labelled with the host your data went to; that vendor is then your processor, not ours.
The one credential the platform holds
A read-only GitHub App installation token, scoped by GitHub to the repositories you choose, revocable by you inside GitHub at any time, used to read commits, pull requests, checks and branch state. It is not a user secret and grants no path into any environment.
If the platform were breached
An attacker with the platform’s database gets, for each organisation, the names of migrations, functions, grants, policies and buckets that exist or are missing per environment, which commit is deployed where, commit messages, the text users typed, uploaded screenshots and recordings, and member email addresses. They do not get a way into any customer environment, because no connection string, key or credential is there to take. Findings are a map, not a key; a map plus a separately obtained key shortens an attack, which is why findings are confidential and every row is bound to its organisation by row-level security from the first migration.
Where things run, and who processes what
Hosting is in the European Union. Our sub-processors are listed, exactly, in the data processing agreement. Nothing not on that list receives customer data.
What we do not claim
Kauri is not certified under ISO 27001 or SOC 2 and does not claim to be. What is written here can be checked against the source of the runner, which builds the upload, and against the platform’s access rules, which are migrations in the same repository.
Reporting a vulnerability
Write to contact@karusselllabs.com. We answer within two working days and do not pursue good-faith research.