Tokin: podmioty przetwarzające dane (zamknięta beta)
Wersja 2026-10-18 (18 października 2026 r.). Poprzednia: 2026-10-13 (umowy powierzenia, DPA, zaakceptowane przez Nertiego tego dnia). Sprawy, które potwierdzamy przed otwartą betą, są w sekcji „Do potwierdzenia przed otwartą betą”. Audyt:
AUDYT-PRAWNY-2026-10-18.md.
Lista firm, które dostają dane użytkowników Tokina. Zrobiona z kodu, nie z pamięci:
models/registry.json(który model do czego),supabase/functions/*(dokąd serwer wysyła dane),apps/desktop/src-tauri/src/live.rs(Soniox łączy się prosto z komputera),apps/desktop/src-tauri/src/server.rs(aplikacja wymusza region funkcji: nagłówekx-region: eu-central-1, Frankfurt),- publiczna lista tras ZDR OpenRouter (
node models/check-zdr.mjs, sprawdzone 2026-10-01).
Jedno źródło dla aplikacji. Lista w aplikacji to PROCESSORS w apps/desktop/src/content/betaTerms.ts. Test apps/desktop/src/content/processors.test.ts pilnuje trzech rzeczy:
- Nazwy w tabeli niżej (pogrubione) i w aplikacji są te same.
- Każdy model z
models/registry.json, z każdego zadania (takżecandidate, bo serwer kieruje do nich w produkcji), ma tu swoją firmę. Model, którego firmy nie ma na liście, nie może być wmainani wfallback: czeka wpending_approval, a drugi test każe go włączyć i usunąć wpis, gdy firma trafi na listę (tak było z Jevem i TypeSafe, włączone 2026-10-09). - Polityka prywatności wymienia każdą z tych firm.
Zmieniasz dostawcę → zmieniasz rejestr, tę tabelę, PROCESSORS i politykę w jednym commicie. Inaczej test jest czerwony.
ZDR (zero data retention) znaczy: dostawca modelu nie zapisuje treści zapytania i nie trenuje na niej.
Tabela główna
Aplikacja Tokin (Windows i macOS). Strona tokin.pl ma osobną tabelę niżej.
| Firma | Po co | Co dostaje | Skąd wysyłamy | Gdzie przetwarza | Przechowywanie, trening | Umowa powierzenia (DPA) |
|---|---|---|---|---|---|---|
| Supabase | konto i logowanie, liczniki, urządzenia, raporty błędów, zgłoszenia, słownik, akceptacje zasad, paczki słów, udostępnione rozmowy (zaszyfrowane), lista oczekujących; serwer funkcji, przez który idzie nagranie dyktowania i tekst do modeli | e-mail, id konta, nazwa urządzenia, liczniki słów i minut Rozmów, wiersze tabel bug_reports, app_events, beta_terms_acceptances oraz dictionary_corrections (tylko po włączeniu przełącznika w Ustawieniach → Prywatność, domyślnie wyłączony; po wyłączeniu aplikacja kasuje z serwera wszystko, co to konto wysłało); udostępniona rozmowa jako szyfrogram (klucz zostaje w adresie linku po # i nie trafia na serwer); w funkcjach w locie: nagranie, tekst, zaznaczenie; adres IP w logach |
aplikacja i strona → Supabase | Frankfurt (Niemcy, UE): baza i funkcje (aplikacja wymusza region eu-central-1). Firma: Supabase Inc., USA |
baza: według naszej retencji (polityka, p. 2). Treści dyktowań nie zapisujemy. Logi API i bazy: 1 dzień na planie Free, 7 dni na planie Pro (cennik Supabase, 2026-10-18) | zaakceptowana 2026-10-13 (Nerti) |
| ElevenLabs | dyktowanie: mowa → tekst (Scribe v2, główny); po rozmowie poprawa transkryptu (opcja, post_call_stt) |
nagranie dyktowania (Opus), kod języka (1–3 języki użytkownika), słowa ze Słownika (keyterms); (opcjonalnie) dźwięk Rozmów po rozmowie |
serwer Tokina (dictate) |
USA (rezydencja danych w UE tylko w planie Enterprise) | według zasad ElevenLabs może przechowywać historię; trenowanie wyłączamy w ustawieniach konta (lista kliknięć niżej). Tryb zerowej retencji tylko Enterprise | zaakceptowana 2026-10-13 (Nerti) |
| Soniox | podgląd dyktowania na żywo (stt-rt-v5); Rozmowy: transkrypcja na żywo, 2 kanały; zapas po rozmowie (stt-async-v5) |
dźwięk z mikrofonu; w Rozmowach także dźwięk rozmówcy (dźwięk systemu); kod języka; słowa ze Słownika jako kontekst | prosto z komputera (klucz tymczasowy 60 s, jedno połączenie, sesja dyktowania do 180 s) | USA (region UE na wniosek) | na żywo: nie zapisuje; po rozmowie (async): do 30 dni. Nie trenuje na treści klientów (polityka Soniox z 29.06.2026, audyt 2026-10-12, P2) | zaakceptowana 2026-10-13 (Nerti; samoobsługowa w konsoli) |
| OpenRouter | brama do modeli AI: porządkowanie tekstu, komendy „Tokin, …”, zapasowe rozpoznawanie mowy, asystent Rozmów, pytania autora do udostępnionej rozmowy | tekst dyktowania po zamianie e-maili, telefonów, numerów kont i kart, PESEL i NIP na znaczniki (masking.rs) i do 30 słów ze Słownika (pisownia przy porządkowaniu, format); w komendach „Tokin, …” zaznaczony albo podyktowany tekst po tej samej zamianie, i polecenie; w zapasie STT nagranie i słowa ze Słownika (lista fraz); w Rozmowach: transkrypt, punkty, materiał (oferta, opis stanowiska), pamięć osoby, czat, po tej samej zamianie (assist.rs Masking, ten sam znacznik dla tej samej wartości przez całą rozmowę) |
serwer Tokina | USA (routing w UE tylko w planach Business/Enterprise) | każde zapytanie z provider.zdr: true, więc tylko trasy ZDR. Sam OpenRouter zapisuje metadane (tokeny, koszt, czas); zapisywanie promptów jest na koncie wyłączone (lista kliknięć niżej) |
zaakceptowana 2026-10-13 (Nerti) |
| Microsoft Azure | przez OpenRouter: openai/gpt-6-luna (porządkowanie, komendy, zapasowy wyzwalacz w Rozmowach, streszczenie kroczące i styl rozmówcy), openai/gpt-6.1-sol (zapas asystenta Rozmów), microsoft/mai-transcribe-2 (zapasowe STT) |
tekst jak OpenRouter; przy zapasowym STT nagranie | OpenRouter | USA albo UE, zależnie od trasy wybranej przez OpenRouter | ZDR: tak (lista OpenRouter 2026-10-01) | przez umowę z OpenRouter |
| Google Cloud | przez OpenRouter (Vertex AI): anthropic/claude-haiku-4.5 (zapas porządkowania i komend), Claude Sonnet 5.5 (asystent Rozmów) |
tekst jak OpenRouter | OpenRouter | USA albo UE, zależnie od trasy | ZDR: tak | przez umowę z OpenRouter |
| Amazon Web Services | przez OpenRouter (Bedrock): te same modele Claude co Google Cloud. Karty podpowiedzi w Rozmowach (call_cards, Sonnet 5.5) są przypięte do Amazon Bedrock (only + allow_fallbacks: false, jeden dostawca, jeden cache promptu, żaden inny host z listy ZDR nie dostaje tych danych); przy pozostałych zadaniach Claude OpenRouter wybiera jedną z dwóch tras |
tekst jak OpenRouter | OpenRouter | USA albo UE, zależnie od trasy | ZDR: tak | przez umowę z OpenRouter |
| Groq | przez OpenRouter: openai/gpt-oss-120b, szybkie porządkowanie w tonie neutralnym i swobodnym |
tekst dyktowania (po maskowaniu) | OpenRouter | USA | ZDR: tak. Żądanie jest przypięte do Groq (only, allow_fallbacks: false), więc nie trafia do innych firm z listy ZDR. Gdy Groq nie odpowie, odpowiada model zapasowy z rejestru (Luna na Azure). Naprawione 2026-10-02 |
przez umowę z OpenRouter |
| TypeSafe | przez OpenRouter: typesafe/jev-1.13 (Jev, Decisions API), pierwszy wyzwalacz w Rozmowach: decyzja „czy to moment na podpowiedź” i które punkty listy są omówione |
ostatnie 12 wypowiedzi transkryptu Rozmowy, nazwy otwartych punktów listy z podpowiedziami, tekst niedawnych kart (mogą zawierać fakty z materiału użytkownika albo pamięci o osobie) i streszczenie dotychczasowej rozmowy (jevState w call-assist/prompts.ts); bez nagrania dźwięku i bez całego materiału, notatek i profilu osoby |
OpenRouter | poza UE (przez OpenRouter) | ZDR: tak (jedyna trasa Jeva na liście OpenRouter, node models/check-zdr.mjs). Zapytanie ma provider.zdr: true i jest przypięte do TypeSafe (only + allow_fallbacks: false, test w jev.test.ts). Dopisany 2026-10-09 na wyraźne „tak” Nertiego (twardy stop 5) |
przez umowę z OpenRouter |
| Resend | e-mail do nas ze zgłoszeniem z „Zgłoś problem”; kod logowania (SMTP Supabase Auth), potwierdzenie zaakceptowanych zasad, potwierdzenie zapisu na listę oczekujących, zaproszenie z kodem, powiadomienie o udostępnionej rozmowie | e-mail i id konta, wersja aplikacji, system, opis, wynik diagnostyki (zgłoszenia); adres e-mail odbiorcy i treść wiadomości (pozostałe). Bez ostatniego dyktowania | serwer Tokina (feedback, Supabase Auth, funkcje strony) |
USA, wysyłka z regionu Irlandia (UE). Firma: Resend, Inc., USA | według zasad Resend; kampanie marketingowe tylko do osób z osobną zgodą (polityka §12) | zaakceptowana 2026-10-13 (Nerti) |
Modele Claude to modele firmy Anthropic. Anthropic nie dostaje danych bezpośrednio: trasy ZDR dla tych modeli prowadzą przez Google Cloud i Amazon Web Services.
Strona tokin.pl
Dane osób, które odwiedzają stronę (także tych, którzy nie mają konta). Aplikacja tych firm nie używa.
| Firma | Po co | Co dostaje | Gdzie | Stan |
|---|---|---|---|---|
| Cloudflare | hosting strony (Workers), ochrona przed atakami i botami, Turnstile (sprawdzenie, że formularz wypełnia człowiek) | adres IP, nagłówki przeglądarki, adres strony, czas; przy Turnstile sygnały przeglądarki do oceny, czy to człowiek | sieć Cloudflare na świecie, najbliżej odwiedzającego. Firma: Cloudflare, Inc., USA (DPF) | nowy podmiot (twardy stop 5): wchodzi razem z przeniesieniem strony na Cloudflare, na „tak” Nertiego. Umowa powierzenia: Cloudflare Data Processing Addendum, część warunków samoobsługowych (Nerti potwierdza w panelu) |
| Google (Google Analytics 4, Google Ads) | statystyki odwiedzin, pomiar reklam | identyfikator w cookie, adres IP (skracany), odwiedzone strony, zdarzenia | USA i UE | wyłączone. Włącza się tylko po wpisaniu identyfikatora w website/src/content/analytics.ts, na „tak” Nertiego, i tylko po zgodzie odwiedzającego |
| Meta (Facebook, Instagram) | pomiar reklam (Meta Pixel) | identyfikator w cookie, adres IP, odwiedzone strony, zdarzenia | USA i UE | wyłączone, jak wyżej. Przy włączeniu: współadministrowanie (art. 26 RODO) i dodatek Meta „Controller Addendum” |
| Microsoft (Clarity, Microsoft Advertising) | mapy kliknięć, pomiar reklam w Bing | identyfikator w cookie, adres IP, ruch myszy i kliknięcia (Clarity, bez wpisywanego tekstu) | USA i UE | wyłączone, jak wyżej |
Nie są podmiotami przetwarzającymi
| Kto | Dlaczego nie ma go w tabeli |
|---|---|
| Google, Microsoft jako logowanie (OAuth) | użytkownik loguje się swoim kontem; te firmy działają na własny rachunek. Polityka, p. 2 |
| Discord (Połącz Discord) | użytkownik łączy swoje konto Discord; Discord działa na własny rachunek. Nasz serwer (discord-token) przekazuje Discordowi tylko jednorazowy kod z Twojego Discorda i dane naszej aplikacji, a Discord odsyła token. Aplikacja łączy się z Discordem na Twoim komputerze i pobiera zdjęcia profilowe z CDN Discorda. Imiona i zdjęcia zostają zaszyfrowane na Twoim komputerze. Polityka, p. 2 i 6 |
| Microsoft Teams, Zoom, Slack (odczyt okien) | Tokin czyta imiona z okna programu na Twoim komputerze (UI Automation na Windows, Dostępność na macOS). Nic nie idzie do tych firm ani do nas |
| Rozszerzenie przeglądarki Tokin | przekazuje imiona uczestników tylko do aplikacji na tym samym komputerze (native messaging). Nic nie wysyła na serwery. /rozszerzenie/prywatnosc |
| Gemini 3.5 Flash (sędzia w evalach) | dostaje tylko symulowane rozmowy, nigdy dane użytkowników |
| Codex, Claude Code (symulacje do treningu) | tylko dane syntetyczne |
| Rozszerzenie Tokin w przeglądarce (Chrome, Edge, Opera, Brave, Firefox; od 2026-10-17) | czyta na kartach Google Meet, Zooma, Teams i Discorda (tylko kanał głosowy, w którym jest użytkownik) imiona uczestników, kto mówi i zdjęcia profilowe i przekazuje je tylko aplikacji Tokin na tym samym komputerze (native messaging → lokalny potok \.\pipe\tokin-bridge-<użytkownik>, macOS: gniazdo w ~/Library/Application Support/Tokin). Żaden serwer, także nasz, tego nie dostaje; brak analityki. Zdjęcia rozszerzenie pobiera z tych samych adresów Google / Zoom / CDN Discorda, z których pokazuje je strona spotkania. Nowego podmiotu nie ma (twardy stop 5 nie ruszony). Kod: extension/, crates/tokin-core/src/calls/speakers/browser.rs |
| Google, Microsoft, Opera, Mozilla jako sklepy z rozszerzeniami | rozpowszechniają rozszerzenie na własnych zasadach (statystyki instalacji); nie dostają danych ze spotkań |
Zamknięte sprawy
| # | Co | Stan |
|---|---|---|
| 1 | Groq bez zapasu u nieznanych firm | zrobione 2026-10-02: provider: { zdr: true, only: [route], allow_fallbacks: false } (openrouter-chat.test.ts) |
| 3 | Czy kod logowania idzie przez Resend | tak: SMTP Supabase Auth → Resend (SIGNIN_PRIVACY_NOTE w aplikacji) |
| 6 | Wersje modeli w call_cards i call_notes |
obie wersje mają trasy ZDR na tych samych firmach, tabela się nie zmienia |
| 7 | Maskowanie w dyktowaniu, komendach i Rozmowach | zrobione 2026-10-12 (e-mail, telefon, konto, karta, PESEL, NIP); imion i adresów nie rozpoznaje (pytanie 9 do prawnika) |
| 8 | Wykonanie retencji | pg_cron od 2026-10-02 (migracja 20261002110000_beta_retention) |
| 9 | Słownik tylko za zgodą, wyłączenie kasuje | zrobione 2026-10-05 (delete_my_dictionary_corrections) |
| 11 | Przycisk „Usuń moje konto i dane” | w aplikacji (Ustawienia → Konto) |
| 12 | Region funkcji Supabase | Frankfurt: aplikacja wysyła x-region: eu-central-1 z każdym zapytaniem (server.rs, test w betaTerms.test.ts) |
Do potwierdzenia przed otwartą betą
| # | Co | Kto |
|---|---|---|
| 2 | Dostawca skrzynki kontakt@tokin.pl (tam trafiają zgłoszenia i maile testerów): nazwa firmy i jej umowa powierzenia |
Nerti |
| 4 | Skąd aplikacja pobiera aktualizacje (GitHub Releases czy Cloudflare R2). Ta firma widzi adres IP | strumień D |
| 5 | Status EU-US Data Privacy Framework w rejestrze dataprivacyframework.gov (ElevenLabs jako „Eleven Labs Inc.”, Microsoft, Google, Amazon, Cloudflare) i regiony tras OpenRouter | Nerti + prawnik |
| 10 | Akceptacja zasad egzekwowana na serwerze (płatne funkcje odmawiają bez akceptacji aktualnej wersji) | strumień D |
| 13 | Warunki TypeSafe: trening i retencja poza ZDR, własna DPA | Nerti |
| 14 | Kopie zapasowe Supabase: jak długo usunięte wiersze zostają w kopiach | Nerti + prawnik |
Ustawienia w panelach dostawców (robi Nerti, ze swojego konta)
- Zrobione: DPA zaakceptowane 2026-10-13: Supabase, ElevenLabs, Soniox, OpenRouter, Resend.
- Do zrobienia: ElevenLabs: wyłączyć używanie danych do trenowania (Settings → Terms and Privacy → Data use); wyłączyć auto-doładowanie.
- Do zrobienia: OpenRouter: Settings → Privacy: wyłączyć trasy, które mogą trenować na danych, i publikowanie promptów; Input & Output Logging wyłączone.
- Zrobione: Soniox: bez miesięcznego limitu w becie (Nerti 2026-10-13: doładowuje ręcznie).
- Do zrobienia: Resend: sprawdzić region wysyłki domeny
tokin.pl(Domains → tokin.pl → Region). - Do zrobienia: Cloudflare: przy deployu strony sprawdzić, że konto ma Data Processing Addendum (cloudflare.com/cloudflare-customer-dpa; w samoobsługowych planach jest częścią warunków).