Un daemon local compatible OpenAI sur localhost:8787.
Votre interface IA s'y branche avec deux champs. Le clair ne quitte jamais
votre poste — coffre chiffré persistant, auth 100 % locale.
Une seule commande (le script détecte l'OS/arch, télécharge binaire + NER léger +
lib onnxruntime, vérifie les checksums, crée ~/.cloison et génère la
clé locataire affichée une fois) :
bash <(curl -fsSL https://raw.githubusercontent.com/coucagog/cloison-proxy/main/install-n0.sh)
powershell -ExecutionPolicy Bypass -File https://raw.githubusercontent.com/coucagog/cloison-proxy/main/install-n0.ps1
Équivalent Windows : binaire cloison-proxy.exe, Credential Manager
pour la passphrase en option.
| Option | Effet |
|---|---|
--version v0.3.0 | installe une version précise (défaut : latest) |
--prefix DIR | répertoire d'installation (défaut ~/.cloison) |
--skip-ner / -SkipNer | sans le NER léger (gazetteers + alias seuls — la limite « texte libre » de §6 reste alors assumée) |
| Élément | Chemin | Rôle |
|---|---|---|
| binaire | ~/.cloison/cloison-proxy(.exe) | le daemon (AGPL-3.0) |
| NER léger | ~/.cloison/ner/model-int8.onnx + tokenizer.json + label_map.json | PERSON/LOC in-core (N0 v1.2, licence AFL-3.0 — notice dans le bundle) |
| lib onnxruntime | ~/.cloison/ner/libonnxruntime.{so,dylib,dll} | chargée dynamiquement (jamais embarquée) |
Le mode N0 s'active en posant CLOISON_VAULT_PATH :
export CLOISON_ROLE=edge
export CLOISON_LISTEN_ADDR=127.0.0.1:8787 # local uniquement
export CLOISON_UPSTREAM_BASE_URL=https://openrouter.ai/api/v1 # votre fournisseur
export CLOISON_VAULT_PATH=~/.cloison/vault.redb # coffre persistant
export CLOISON_VAULT_PASSPHRASE='votre-passphrase' # clé du coffre (jamais persistée)
export CLOISON_EXPECTED_ACCESS_TOKEN=mon_jeton # jeton mn_ local
export CLOISON_TENANT_KEY_HEX=$(openssl rand -hex 32) # clé locataire
cloison-proxy
Puis, dans votre interface IA (Open WebUI, LibreChat, bolt.diy, agents…) :
Base URL : http://localhost:8787/v1
Clé : mn_<jeton_local>.<clé_amont>
Référence complète des variables CLOISON_* : section API.
CLOISON_VAULT_KEYCHAIN_SERVICE
posé → la passphrase est stockée chiffrée par l'OS (Credential Manager / Keychain /
Secret Service) — jamais en clair par CLOISON.<prefix>/.salt puis redémarrer.YYYY-MM, IP → [IP],
carte → •••••••••1234, ville → [VILLE_SN]./v1/embeddings bloqué (404) : un embedding de PII
reste dérivé de PII.curl -s http://localhost:8787/v1/chat/completions \
-H "Authorization: Bearer mn_<jeton>.<clé_amont>" \
-H "Content-Type: application/json" \
-d '{"model":"x","messages":[{"role":"user","content":
"Contact: Aminata Diop, user@example.com, tel +221 77 123 45 67"}]}'
# → la réponse contient « Aminata Diop, user@example.com, +221 77 123 45 67 »
# (restaurés) et aucune sentinelle ⟦…⟧ résiduelle.
Le coffre (~/.cloison/vault.redb) ne contient aucune valeur en
clair (chiffré AES-256-GCM) : grep Aminata ~/.cloison/vault.redb
ne trouve rien.
cargo build --release -p cloison-proxy
puis bash deploy/provision_ner_lite.sh (NER : téléchargement par
défaut, --export torch pour la voie d'export avancée).CLOISON_AUDIT_MODE=1 + wiring contrôle → alimentation du
journal public (compteurs signés, jamais de texte).