Lokalny strażnik danych wrażliwych - przed wysłaniem do AI.
Wklejasz tekst (mail, transkrypt, notatkę) lub przeciągasz plik. Bezpiecznik znajduje i maskuje dane osobowe (imiona, e-maile, telefony, IBAN, NIP, PESEL, adresy) i daje Ci bezpieczną wersję, którą możesz spokojnie wysłać do ChatGPT, Claude czy innego AI.
Wszystko dzieje się na Twoim komputerze. Tekst nigdy nie opuszcza tej aplikacji - zero połączeń z internetem (poza pierwszym pobraniem modelu).
- Dla kogo to jest
- Instalacja krok po kroku
- Jak korzystać
- Aktualizacja do nowszej wersji
- FAQ
- Część techniczna
Jeśli pracujesz z AI (ChatGPT, Claude, Gemini) i czasem wrzucasz do niego:
- maile od klientów,
- transkrypty rozmów,
- notatki głosowe,
- dane do faktur,
- raporty z imionami i kontaktami,
to Bezpiecznik zamaskuje wszystkie dane osobowe zanim wyślesz tekst do chmury. Zamiast Anna Nowak, anna@example.com wyślesz <OSOBA_1>, <EMAIL_1>. AI dostanie wszystko czego potrzebuje do pracy, ale bez Twoich (lub klienta) prywatnych danych.
Przewidywany czas: 15 minut (z czego 5 minut to pobieranie modelu w tle podczas pierwszego uruchomienia). Wymagania: Mac (Apple Silicon - M1/M2/M3/M4), macOS Sonoma lub nowszy, ~6 GB wolnego miejsca.
- W prawym górnym rogu Maca kliknij ikonę lupy (Spotlight) lub naciśnij
⌘ + Spacja - Wpisz:
Terminali naciśnij Enter - Otworzy się czarne (lub białe) okno - to Terminal. Tam wpisuje się komendy.
W Terminalu wklej (Cmd+V) i naciśnij Enter:
python3 --versionPowinno pojawić się np. Python 3.13.0 (cyfra po 3. musi być co najmniej 10, czyli 3.10, 3.11, 3.12, 3.13 lub 3.14).
Jeśli widzisz błąd "command not found":
- Pobierz Pythona z python.org/downloads (wybierz wersję 3.12 lub nowszą)
- Po zainstalowaniu zamknij Terminal i otwórz go ponownie
- Powtórz
python3 --version
W Terminalu:
git --versionJeśli widzisz błąd, macOS sam zaproponuje instalację - kliknij Install w okienku, które wyskoczy. Trwa to ~5 minut.
Wklej w Terminalu:
cd ~/Documents
git clone https://github.com/Szewowsky/bezpiecznik.git
cd bezpiecznikW Terminalu (jesteś już w katalogu bezpiecznik):
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtTo zajmuje 5-10 minut. Ściąga się ~3 GB różnych bibliotek. Możesz w tym czasie zrobić sobie kawę.
W Terminalu (wciąż w katalogu bezpiecznik):
.venv/bin/uvicorn server:app --port 8000W oknie pojawi się komunikat typu:
INFO: Uvicorn running on http://127.0.0.1:8000
To znaczy, że Bezpiecznik działa. Nie zamykaj tego okna Terminala - aplikacja działa dopóki ono jest otwarte.
W Safari lub Chrome wpisz w pasku adresu:
http://localhost:8000
Zobaczysz Bezpiecznika. Pierwszy raz, gdy klikniesz "Zamaskuj dane", aplikacja pobiera model AI (~3 GB, jednorazowo). Potrwa to ~50 sekund. Każde następne maskowanie jest natychmiastowe.
Żeby nie wpisywać za każdym razem długiej komendy .venv/bin/uvicorn server:app --port 8000, możesz dodać skrót. W Terminalu (w katalogu bezpiecznik):
./install-alias.shSkrypt sam wykryje Twój shell (zsh/bash) i doda alias. Po przeładowaniu terminala (source ~/.zshrc albo nowe okno) wystarczy wpisać:
bezpieczniki aplikacja wystartuje. To wszystko - jedno słowo zamiast dwóch ścieżek.
- Wybierz zakładkę Wklej tekst (domyślnie)
- Wklej tekst do pola (Cmd+V)
- Kliknij Zamaskuj dane
- Po prawej zobaczysz wersję z zamaskowanymi danymi
- Kliknij Kopiuj zamaskowane lub Pobierz .md
- Wybierz zakładkę Wgraj plik
- Kliknij Wybierz plik z dysku lub przeciągnij plik z Findera
- Pojawia się podgląd zawartości
- Klik Zamaskuj dane
Obsługiwane formaty: .md, .txt, .csv, .tsv, .json, .log, .html, .srt, .vtt (do 5 MB).
W panelu po prawej przełącz na Z podświetleniem - zobaczysz oryginał z kolorowymi zaznaczeniami, co zostało wykryte. Pomocne, gdy chcesz sprawdzić czy nic ważnego nie zostało pominięte.
Wracając do Terminala (gdzie chodzi serwer), naciśnij Ctrl + C żeby zatrzymać aplikację.
Następnym razem:
- Jeśli zainstalowałeś alias (Krok 8) - wystarczy
bezpiecznikw terminalu - Bez aliasu - krok 6 i 7 (pomijasz instalację)
Gdy autor wypuści nową wersję, masz trzy sposoby aktualizacji:
W Terminalu, w katalogu bezpiecznik:
./update.shSkrypt pokaże co się zmieniło, zapyta o potwierdzenie i wszystko zainstaluje. Twoje lokalne zmiany (jeśli były) zostaną zachowane.
cd ~/Documents/bezpiecznik
git pull
source .venv/bin/activate
pip install -r requirements.txtAutor będzie informował o nowych wersjach (LinkedIn, mail). Każda nowa wersja będzie miała listę zmian (changelog) na GitHub w zakładce Releases.
Tip: Przed aktualizacją zamknij aplikację (
Ctrl+Cw Terminalu), gdzie chodzi serwer. Po aktualizacji uruchom ponownie krokiem 6 powyżej.
Najczęstsze pytania (zwłaszcza dla osób nietechnicznych): FAQ.md
Hybrid PII detection (lokalnie):
- 🤖 OpenAI Privacy Filter - kontekstowe PII (PERSON, EMAIL, PHONE, ADDRESS, SECRET, URL)
- 🔧 Regex layer - polskie strukturalne identyfikatory (IBAN PL, NIP, PESEL, kod pocztowy)
- 🇵🇱 Address reklasyfikator - "ul. Słoneczna 12" + "Aleje Jerozolimskie 100" → ADRES (nie OSOBA)
Dwa frontendy:
- Bezpiecznik (port 8000) - FastAPI + React (Babel-in-browser), 3 motywy, polskie etykiety, drag&drop + paste tabs + dialog confirm + 9 formatów
- Gradio legacy (port 7860) - prosty drag-drop + JSON output
cd bezpiecznik
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Bezpiecznik (nowy UI)
uvicorn server:app --port 8000
# Gradio legacy
python app.py.venv/bin/pytest test_pii_regex.py test_server.py -v # 76/76 PASSbezpiecznik/
├── server.py FastAPI: static + /api/redact, port 8000
├── app.py Gradio legacy, port 7860
├── pii_service.py Wspólny pipeline (redact_text)
├── opf_runtime.py Singleton OPF loader (3 GB shared)
├── pii_regex.py Regex PL: IBAN, NIP, PESEL, kod, adres + reklasyfikator
├── test_pii_regex.py 55 testów (regex layer)
├── test_server.py 21 testów (API contract + dedup + reklasyfikacja)
├── update.sh Skrypt aktualizacji dla nietechnicznych
├── install-alias.sh Dodaje alias `bezpiecznik` do shell rc (zsh/bash)
└── web/ Frontend Bezpiecznik
├── index.html
├── styles.css 3 motywy (minimal-dark / terminal / light)
├── app.jsx Root + WarningStrip + tweaks panel
├── editor.jsx InputPanel (tabs paste/upload) + OutputPanel
├── detection-panel.jsx
├── data.jsx SAMPLES + LABEL_META
└── tweaks-panel.jsx
POST /api/redact {text} → {detections: [...], redacted_text}.
Etykiety polskie: OSOBA, EMAIL, TELEFON, ADRES, URL, DATA, SEKRET, IBAN, NIP, PESEL, KOD.
- Hosted version (Phase 2)
- Auth / multi-user
- Batch folder processing
- PDF / DOCX / Excel
- Real-time streaming
- Compliance certification
- Wykrywanie kategorii
ORGANIZATION(poza taksonomią Privacy Filter) - Wykrywanie kategorii
DATE(słabo dla PL - out of scope)
- Phase 1 ✅ DONE (2026-04-27 rano) - Setup + Gradio MVP + 55/55 testów
- Phase 1.5 ✅ DONE (2026-04-27 wieczorem) - Bezpiecznik UI (FastAPI + React, 3 motywy)
- Phase 2 UX ✅ DONE (2026-04-28) - Tabs paste/upload + drag&drop + dialog confirm + preview + 9 formatów
- Phase 2.1a detection ✅ DONE (2026-05-01) - whitelist 50 polskich imion + regex detector dla form odmienionych ("Pawłem Górskim", "Anną Nowak"), hyphenated surnames, blocklist brand tokens
- Phase 2.1b aliasing ✅ DONE (2026-05-01 wieczór) - per-position PL fleksja normalize w canonical dedup ("Paweł Górski" i "Pawłem Górskim" → ten sam
<OSOBA_1>); whitelist imion + heurystyczne reguły nazwisk -ski/-cki/-wicz; uniqueness check chroni przed scalaniem różnych osób o tym samym imieniu - Phase 3 detection (planned) - spaCy
pl_core_news_lgjako fallback NER backend dla ORG, miast i edge cases fleksji
PolyForm Noncommercial License 1.0.0 - open-source dla użytku osobistego, edukacyjnego, badawczego i hobbystycznego.
Co możesz: używać, czytać kod, modyfikować, dystrybuować, kontrybuować - za darmo, w nieograniczonym zakresie, dla niekomercyjnych zastosowań.
Czego nie możesz: używać w komercyjnych produktach, sprzedawać, oferować jako płatną usługę bez osobnej licencji.
Komercyjne użycie? Napisz do mnie - LinkedIn. Dual-license możliwy (np. dla agencji, kursów, hosted SaaS).
Third-party deps: OpenAI Privacy Filter jest pod Apache 2.0 - nie modyfikujemy go, używamy jako dependency. Pełen list w LICENSE w sekcji THIRD-PARTY.
⚠️ Output wymaga human review. Narzędzie to data minimization aid, nie compliance certification. RODO wciąż wymaga DPA dla US-vendors.
