# admin-ka — administration-ka.com Console chat mobile-first pour piloter **Claude Code** sur le nœud **M3U96a** et gérer l'écosystème Groupe KA à distance. ``` iPhone ⇄ https://www.administration-ka.com (ngrok) ⇄ backend :3300 (M3U96a) ⇄ claude -p --output-format stream-json ``` ## Composants - `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 ` pour la continuité. - `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). - `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. - `deploy/*.plist` — services launchd `io.adminka.backend` + `io.adminka.ngrok`. ## Modes de permission - **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. - **Auto** : `--dangerously-skip-permissions` (confirmation requise dans l'UI). ## Auth & sécurité - Mot de passe (scrypt) → cookie `akid` HttpOnly/Secure, 7 j d'inactivité / 30 j max. - Rate-limit login : 8 échecs / 15 min / IP. Backend lié à 127.0.0.1 (seul ngrok y accède). - Audit complet : `data/audit.jsonl` (logins, prompts, tool_use, permissions, coûts). - Changer le mot de passe : `node server/set-password.js ''` puis `launchctl kickstart -k gui/501/io.adminka.backend`. ## Exploitation (sur M3U96a) ```bash # statut launchctl print gui/501/io.adminka.backend | head -20 curl -s http://127.0.0.1:3300/healthz # redémarrer launchctl kickstart -k gui/501/io.adminka.backend launchctl kickstart -k gui/501/io.adminka.ngrok # logs tail -f ~/apps/admin-ka/data/backend.err.log ~/apps/admin-ka/data/ngrok.log ``` Clé API : lue depuis `~/.claude/.env` (`ANTHROPIC_API_KEY`) au démarrage du backend. Projets proposés dans le sélecteur : `~/groupe-ka/*` (clones des repos spbgit), `~/apps/*` (apps déployées sur ce nœud), et `~` (home).