Linux, macOS, Windows
Linux x64/arm64, macOS et Windows x64. Le script détecte l'OS et l'architecture, puis installe le binaire correspondant.
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, authentification 100 % locale.
Aucun : pas de toolchain Rust, pas de Python, pas de torch. Les binaires par OS sont téléchargés, puis vérifiés par checksums SHA-256 — échec bruyant si l'intégrité n'est pas prouvée.
Le daemon tourne sur votre poste. Voici ce qu'il faut — et surtout ce qu'il ne faut pas.
Linux x64/arm64, macOS et Windows x64. Le script détecte l'OS et l'architecture, puis installe le binaire correspondant.
Rien à compiler chez vous. Le NER léger (modèle int8 + tokenizer.json + label_map.json) est embarqué et chargé dynamiquement.
Le script télécharge binaire, NER et lib onnxruntime, contrôle les checksums, crée ~/.cloison et affiche la clé locataire une seule fois.
macOS Intel : Microsoft ne publie plus de lib onnxruntime osx-x86_64. Le binaire macos-x64 fonctionne alors en N0 v1 (gazetteers + alias, warn). Apple Silicon est la cible macOS recommandée — elle seule profite du NER complet.
Chaque vérification échoue bruyamment : si l'empreinte SHA-256 ne correspond pas, l'installation s'arrête net.
Une seule commande. Le script détecte l'OS et l'architecture, télécharge binaire + NER léger + lib onnxruntime, vérifie les checksums et crée ~/.cloison.
bash <(curl -fsSL https://raw.githubusercontent.com/coucagog/cloison-proxy/main/install-n0.sh)
Équivalent Windows : binaire cloison-proxy.exe, avec la passphrase confiée au Credential Manager en option.
powershell -ExecutionPolicy Bypass -File https://raw.githubusercontent.com/coucagog/cloison-proxy/main/install-n0.ps1
L'empreinte SHA-256 est publiée, et la signature du binaire est vérifiée. Rien n'est exécuté tant que l'intégrité n'est pas prouvée : un téléchargement altéré stoppe l'installation au lieu de continuer.
| 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 » reste alors assumée) |
Le daemon écoute sur localhost:8787 — local uniquement. L'authentification reste 100 % locale : jamais de compte, jamais de clé qui sort.
Le mode N0 s'active en posant CLOISON_VAULT_PATH : le coffre est chiffré et persistant, le sel de session garde vos conversations restaurables.
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
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].Jeton mn_ local, clé locataire générée sur place, coffre chiffré AES-256-GCM.
Rien ne quitte la machine tant que vous ne l'avez pas demandé — par défaut, aucun reçu
ne sort, y compris en audit opt-in.
Dans votre interface IA existante — Open WebUI, LibreChat, bolt.diy, ou vos agents — remplacez l'endpoint par le daemon local.
Base URL : http://localhost:8787/v1
Clé : mn_<jeton_local>.<clé_amont>
Seul l'endpoint change, aucun code à réécrire. La clé composite marie le jeton
mn_ local (authentification) et la clé amont (fournisseur) : le proxy
authentifie la requête localement, puis la relaie au modèle.
Référence complète des variables CLOISON_* : voir la section API.
La PII est remplacée avant l'envoi, puis réintégrée à la réponse. Vous voyez le résultat ; le modèle, lui, n'a vu que des jetons.
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.
Un jeton d'une requête antérieure n'est jamais restauré (registre + MAC), et une sentinelle ⟦…⟧ forgée n'est jamais réintégrée. La coréférence est conservée : la réponse reste exploitable, jamais identifiable.
Les checksums, le journal et l'absence de données en clair — vérifiables à tout moment, sans rien croire sur parole.
sha256sum ~/.cloison/cloison-proxy # comparez à l'empreinte publiée
~/.cloison/cloison-proxy --version # le daemon répond
Le coffre (~/.cloison/vault.redb) est chiffré AES-256-GCM. Une recherche de clair ne renvoie rien :
grep -a Aminata ~/.cloison/vault.redb # → aucune valeur, le coffre est chiffré
Binaire signé, checksums contrôlés au téléchargement, coffre chiffré, journal append-only en audit opt-in. Par défaut, aucun reçu ne quitte la machine — et le journal public ne recueille que des compteurs signés, jamais de texte.
CLOISON installe un moteur. La responsabilité juridique du traitement reste la vôtre, et le cadre qui la définit est d'abord régional et national.
Le droit africain de la protection des données personnelles est le socle. C'est lui qui fixe vos obligations de responsable de traitement — bien avant tout texte européen.
Le RGPD n'est pas le cadre principal ici : il s'ajoute en fast-follow européen, uniquement si vous traitez des données de résidents de l'Union. Le vocabulaire — responsable / sous-traitant, autorisation préalable — est le même, ce qui rend la conformité transposable d'un cadre à l'autre. Le moteur CLOISON, lui, ne change pas.
Le détail des régimes, des champs couverts et des limites honnêtes est documenté dans la FAQ + limites honnêtes. Vous préférez le mobile ? Voir le guide Android — même moteur, dans une app WebView.