1# admin-ka — administration-ka.com23Console chat mobile-first pour piloter **Claude Code** sur le nœud **M3U96a** et gérer l'écosystème Groupe KA à distance.45```6iPhone ⇄ https://www.administration-ka.com (ngrok) ⇄ backend :3300 (M3U96a) ⇄ claude -p --output-format stream-json7```89## Composants1011- `server/server.js` — HTTP + WebSocket `/ws` (port 3300, loopback). Lance `claude -p … --output-format stream-json --verbose --include-partial-messages` dans le répertoire du projet choisi, relaie chaque événement du stream au client, persiste les transcripts (`data/transcripts/*.jsonl`), gère `--resume <session-id>` pour la continuité.12- `server/perm-mcp.js` — serveur MCP stdio (`--permission-prompt-tool mcp__adminka__approve`) : chaque demande de permission devient une carte **Autoriser / Refuser** dans le chat (long-poll via `/internal/perm`, timeout 10 min → refus).13- `public/` — frontend une page : Markdown (marked) + code highlighté (highlight.js), blocs outils repliables, diffs colorés (Edit/Write), TodoWrite en checklist, streaming temps réel, safe-areas iPhone.14- `deploy/*.plist` — services launchd `io.adminka.backend` + `io.adminka.ngrok`.1516## Modes de permission1718- **Sûr** (défaut) : lecture libre (`Read, Glob, Grep, LS, WebFetch, WebSearch, TodoWrite, NotebookRead, Task`), tout le reste (Bash, Edit, Write…) demande une permission dans le chat.19- **Auto** : `--dangerously-skip-permissions` (confirmation requise dans l'UI).2021## Auth & sécurité2223- Mot de passe (scrypt) → cookie `akid` HttpOnly/Secure, 7 j d'inactivité / 30 j max.24- Rate-limit login : 8 échecs / 15 min / IP. Backend lié à 127.0.0.1 (seul ngrok y accède).25- Audit complet : `data/audit.jsonl` (logins, prompts, tool_use, permissions, coûts).26- Changer le mot de passe : `node server/set-password.js '<nouveau>'` puis `launchctl kickstart -k gui/501/io.adminka.backend`.2728## Exploitation (sur M3U96a)2930```bash31# statut32launchctl print gui/501/io.adminka.backend | head -2033curl -s http://127.0.0.1:3300/healthz3435# redémarrer36launchctl kickstart -k gui/501/io.adminka.backend37launchctl kickstart -k gui/501/io.adminka.ngrok3839# logs40tail -f ~/apps/admin-ka/data/backend.err.log ~/apps/admin-ka/data/ngrok.log41```4243Clé API : lue depuis `~/.claude/.env` (`ANTHROPIC_API_KEY`) au démarrage du backend.4445Projets proposés dans le sélecteur : `~/groupe-ka/*` (clones des repos spbgit), `~/apps/*` (apps déployées sur ce nœud), et `~` (home).46