Sécurité & auth
Comment purplemux protège votre tableau de bord — mot de passe haché en scrypt, données local-only, et HTTPS pour l'accès externe.
purplemux est auto-hébergé et reste sur votre machine. Pas de serveurs externes, pas de télémétrie, pas de compte cloud. Tout ce qui suit décrit les quelques pièces qui gardent réellement votre tableau de bord.
Configuration du mot de passe
La première fois que vous ouvrez purplemux, l'écran d'onboarding vous demande de choisir un mot de passe. Après envoi :
- Le mot de passe est haché avec scrypt (sel aléatoire de 16 octets, clé dérivée de 64 octets).
- Le hash est écrit dans
~/.purplemux/config.jsonsous la formescrypt:{sel}:{hash}— le clair n'est jamais stocké. - Un
authSecretséparé (hex aléatoire) est généré et stocké à côté. purplemux l'utilise pour signer le cookie de session émis après login.
Les visites suivantes affichent un écran de login qui vérifie votre mot de passe avec crypto.timingSafeEqual contre le hash stocké.
Réinitialiser le mot de passe
Oublié ? Il vous suffit d'un accès shell sur l'hôte :
rm ~/.purplemux/config.json
Redémarrez purplemux (pnpm start, npx purplemux, ou la méthode que vous avez utilisée) et l'écran d'onboarding réapparaît pour que vous puissiez choisir un nouveau mot de passe.
Cela efface les autres paramètres stockés dans le même fichier (thème, locale, taille de police, toggle notifications, etc.). Vos espaces de travail et onglets vivent dans workspaces.json et le répertoire workspaces/, donc les mises en page sont préservées.
HTTPS pour l'accès externe
Le bind par défaut est localhost, servi en HTTP simple. C'est OK sur la même machine — mais dès que vous atteignez purplemux depuis un autre appareil, vous devriez être en HTTPS.
- Tailscale Serve est le chemin recommandé : chiffrement WireGuard plus certs Let's Encrypt automatiques. Voir Accès Tailscale.
- Reverse proxy (Nginx, Caddy, etc.) marche aussi, tant que vous transmettez les en-têtes WebSocket
UpgradeetConnection.
iOS Safari demande de plus HTTPS pour l'installation PWA et l'enregistrement Web Push. Voir Configuration PWA et Web Push.
Ce qui vit dans ~/.purplemux/
Tout est local. Les permissions sur les fichiers sensibles sont 0600.
| Fichier | Ce qu'il contient |
|---|---|
config.json |
hash scrypt du mot de passe, secret de session, préférences app |
workspaces.json + workspaces/ |
liste d'espaces et mises en page volet/onglet par espace |
vapid-keys.json |
paire de clés VAPID Web Push (auto-générée) |
push-subscriptions.json |
souscriptions push par appareil |
cli-token |
token partagé pour que hooks/CLI parlent au serveur local |
pmux.lock |
lock d'instance unique (pid, port, startedAt) |
logs/ |
fichiers de log pino tournants |
Pour l'inventaire complet et le tableau de reset, voir le listing source-of-truth dans docs/DATA-DIR.md.
Pas de télémétrie
purplemux ne fait aucune requête sortante de lui-même. Les seuls appels réseau qu'il initie sont :
- Les notifications Web Push auxquelles vous avez souscrit, envoyées via les services push d'OS.
- Ce que fait la CLI Claude elle-même — c'est entre vous et Anthropic, pas purplemux.
Code et données de session ne quittent jamais votre machine.
Pour aller plus loin
- Accès Tailscale — le chemin sûr vers le HTTPS externe.
- Configuration PWA — une fois l'auth réglée, installer sur l'écran d'accueil.
- Notifications Web Push — alertes en arrière-plan.