# WISP — Worldwide Intelligence, Secured & Private

WISP to projekt prywatnego interfejsu AI dostępnego z dowolnego miejsca przez zwykłą przeglądarkę. Interfejs i warstwa dostępowa działają przez Cloudflare, natomiast LLM, RAG, dokumenty wiedzy i właściwe przetwarzanie AI pozostają na lokalnym komputerze.

## Założenie

Cloudflare jest traktowany jako niezaufany transport i storage. Treść rozmów jest szyfrowana w przeglądarce przed wysłaniem, a dane przechowywane w D1/R2 mają pozostawać ciphertextem. Lokalny AI Gateway odszyfrowuje żądanie, korzysta z RAG i lokalnego LLM, a następnie szyfruje odpowiedź dla przeglądarki.

## Główne możliwości

- interfejs czatu i historia rozmów podobna do ChatGPT;
- dostęp z wielu urządzeń przez przeglądarkę;
- szyfrowanie treści po stronie browsera;
- lokalny, wymienny LLM przez llama.cpp;
- lokalny RAG oparty o Qdrant i własne dokumenty;
- profile AI, np. cybersecurity, biology i general;
- Cloudflare Access + MFA jako niezależna warstwa dostępu;
- Cloudflare Tunnel bez otwierania portów routera;
- permanent delete aktywnych danych D1/R2 zamiast soft-delete.

## Architektura

`Browser → Cloudflare Access → Worker / D1 / R2 → encrypted relay → Cloudflare Tunnel → local AI Gateway → RAG / llama.cpp`

Plaintext i klucze potrzebne do odszyfrowania treści mają pozostawać po stronie przeglądarki oraz lokalnego Gateway. Cloudflare może nadal widzieć metadane połączeń, ale założeniem projektu jest brak dostępu do plaintextu promptów, odpowiedzi, tytułów rozmów i prywatnych dokumentów.

## Technologie

React, TypeScript, Vite, Web Crypto API, Cloudflare Workers, Access, D1, R2 i Tunnel, Python/FastAPI, llama.cpp, Qdrant oraz BAAI/bge-m3.

## Status i dalszy kierunek

Projekt rozróżnia elementy już zaimplementowane od architektury docelowej. Do kolejnych etapów należą m.in. separacja kluczy HKDF, podpisy requestów, anti-replay, portable signing key, recovery key oraz ograniczenie Worker→home do konkretnej usługi.

## Świadome ograniczenie

Model web-only nie eliminuje ryzyka przejęcia dostarczanego frontendu: jeżeli zaufana warstwa hostująca JavaScript zostałaby przejęta, a użytkownik później wpisał Master Passphrase do zmodyfikowanej aplikacji, złośliwy frontend mógłby próbować przechwycić sekret. To świadomy kompromis za możliwość używania WISP z dowolnej przeglądarki.
