1. Architecture du système
Mac Studio M1 Ultra
128 Go RAM · Serveur local permanent · Doit rester allumé 24/7 · IP Tailscale : 100.66.176.77
Tailscale
Tunnel VPN + HTTPS via tailscale serve · Port 443→8888 · Port 3000 HTTPS
Docker Desktop
PostgreSQL 17 + pgvector · PostgREST v12 · pgAdmin 4 · Restart automatique
server.py (port 8888)
TDB + API + MemorIA upload · Géré par launchd com.neuralcare92.startup · KeepAlive
Ollama
qwen3:8b (pipeline fallback) · qwen3:32b (Jarvis local) · nomic-embed-text (fallback embeddings)
Mistral AI (EU)
mistral-medium-latest · extraction OMOP + CR · mistral-embed 1024 dim · HDS Saclay
n8n 2.22.5
Port 5678 · Launchd com.secondcerveau.n8n · Workflow réception bilans TDB actif
JARVIS
5 services launchd · Wake word "Jarvis" · Whisper large-v3-turbo (Metal) · SpeechBrain
2. Toutes les URLs et accès
APPLICATION NC92 — Mac Studio via Tailscale HTTPS
| Page / Service | URL | Accès |
|---|---|---|
| Portail rééducateurs | https://macstudio-de-lilian.tailf45776.ts.net/portail.html | Tous praticiens |
| TDB IDE Coordinatrice | https://macstudio-de-lilian.tailf45776.ts.net/ide/TDB_IDE_NC92.html | Catherine ROUSSEL |
| TDB Président | https://macstudio-de-lilian.tailf45776.ts.net/president/TDB_President_NC92.html | Dr LESSEDJINA uniquement |
| Direction NC92 | https://macstudio-de-lilian.tailf45776.ts.net/direction-nc92.html | URL seule = protection · cartes IDE + Président |
| MemorIA — Session audio | https://macstudio-de-lilian.tailf45776.ts.net/memoria/session.html | Rééducateurs + IDE |
| MemorIA — Hub pré-consultation | https://macstudio-de-lilian.tailf45776.ts.net/memoria/memoria.html | Dr LESSEDJINA + IDE |
| PostgREST API | https://macstudio-de-lilian.tailf45776.ts.net:3000 | JWT token requis |
| Guide rééducateurs | https://macstudio-de-lilian.tailf45776.ts.net/guide-reeduc.html | Praticiens |
| Guide IDE | https://macstudio-de-lilian.tailf45776.ts.net/guide-ide.html | Catherine ROUSSEL |
| Guide admin (ce fichier) | https://macstudio-de-lilian.tailf45776.ts.net/guide-admin.html | Dr LESSEDJINA uniquement |
| Guide utilisateurs (Tailscale) | https://macstudio-de-lilian.tailf45776.ts.net/guide-utilisateurs.html | Nouveaux praticiens |
ADMINISTRATION LOCALE — Via IP Tailscale (HTTP)
| Service | URL | Identifiants |
|---|---|---|
| pgAdmin 4 | http://100.66.176.77:5050 | dr.llessedjina@gmail.com / NC92Admin2026! |
| n8n | http://100.66.176.77:5678 | Compte n8n (voir .env) |
| Tailscale Admin | login.tailscale.com/admin | dr.llessedjina@gmail.com (Google auth) |
SITE PUBLIC — neuralcare92.fr (Hostinger)
| Page | Description |
|---|---|
| index.html | Homepage — présentation NC92, équipe, carte ISM, stats, formulaire contact (Formspree xaqknjby) |
| avc.html | Page AVC séquelles — vidéo YouTube bLs_sJ7M-4c intégrée |
| spasticite.html | Page spasticité — protocole toxine botulique NC92 |
| parcours.html | Parcours patient — étapes T0 à M6 |
| specialites.html | Spécialités — adresseurs, 3 cartes, J120/J240 |
| questionnaire.html | Formulaire patients — éligibilité et prise de contact |
| qrcode_questionnaire.html | QR code vers le questionnaire — à imprimer pour les cabinets |
| actualites.html | Blog / actualités NC92 — 2 articles actuels |
| presse.html | Page presse — dossier de presse NC92 |
| 404.html | Page d'erreur personnalisée |
3. Tableaux de bord — Inventaire complet
| TDB | Fichier | Portail / Scope PWA |
|---|---|---|
| Kinésithérapeute | TDB_KINE_NC92.html | Portail rééducateurs (scope /) |
| Ergothérapeute | TDB_ERGO_NC92.html | Portail rééducateurs (scope /) |
| Neuropsychologue | TDB_NEURO_NC92.html | Portail rééducateurs (scope /) |
| Orthophoniste | TDB_ORTHO_NC92.html | Portail rééducateurs (scope /) |
| EAPA | TDB_EAPA_NC92.html | Portail rééducateurs (scope /) |
| Psychologue | TDB_PSYCHO_NC92.html | Portail rééducateurs (scope /) |
| Psychomotricien | TDB_PSYCHOMOT_NC92.html | Portail rééducateurs (scope /) |
| Patient | TDB_PATIENT_NC92.html | Portail rééducateurs (scope /) |
| KPI réseau | TDB_KPI_NC92.html | Portail rééducateurs (scope /) |
| IDE Coordinatrice ISOLÉ | ide/TDB_IDE_NC92.html | Portail IDE (scope /ide/) — SW indépendant |
| Président ISOLÉ | president/TDB_President_NC92.html | Portail Président (scope /president/) — SW indépendant |
tdb-sw.js). Chaque portail s'installe depuis son URL propre.4. Déployer le site neuralcare92.fr
Dossier : ~/SecondCerveau/6-Outils/neuralcare92-site/
Modifier les fichiers dans VS Code ou via Claude Code. Ne jamais éditer directement sur le FTP.
bash deploy.sh
Le script uploade automatiquement tous les fichiers modifiés vers Hostinger via FTP.
Ouvrir https://neuralcare92.fr en navigation privée pour vérifier que les changements sont en ligne (peut prendre 1–2 min).
u121333995@72.60.93.224:21 · Mot de passe : NeuralCare92! · Ces credentials sont dans deploy.sh. Ne jamais vous connecter à l'IP 187.124.35.179 (serveur malveillant, même IP que botmac.py supprimé).5. Ajouter / Retirer un praticien
Ajouter un praticien
login.tailscale.com/admin/machines → macstudio-de-lilian → Share → entrer l'email du praticien → envoyer l'invitation.
Accéder à pgAdmin : http://100.66.176.77:5050 → connexion → base nc92 → schéma api → table utilisateurs → Insert Row.
Champs à renseigner : nom, prenom, email, role (kiné/ergo/ortho/eapa/neuro/psycho/psychomot/ide/admin), password_hash (bcrypt), actif = true.
Transmettre au praticien : le guide-utilisateurs.html pour l'installation Tailscale + son identifiant/mot de passe portail. Pour l'IDE : l'URL spécifique …/ide/TDB_IDE_NC92.html.
Retirer un praticien
login.tailscale.com/admin/machines → macstudio-de-lilian → Share → supprimer l'email du praticien.
pgAdmin → api.utilisateurs → UPDATE : actif = false pour cet utilisateur. Ne pas supprimer la ligne (conservation de l'historique).
6. Services launchd — Gestion complète
KeepAlive=true, launchctl stop et launchctl unload sont insuffisants — launchd relance immédiatement. Toujours utiliser bootout pour stopper réellement.Backend server.py
Port 8888 · TDB + API + MemorIA · RunAtLoad + KeepAlive · Charge .env
Jarvis — Bot Telegram vocal
@Jarvis20_48_bot · rituels, vault, médical
Jarvis — Bridge
Bridge entre daemon vocal et bot Telegram
Jarvis — Daemon vocal
Micro → Whisper wake word → SpeechBrain → Whisper large-v3-turbo → LLM → TTS Henri
@Lilianum_bot
Capture texte/vocal/image → 0-Inbox vault
n8n
Port 5678 · Workflow réception bilans TDB actif
Backup PostgreSQL
⚠️ INACTIF · Attend SCALEWAY_ACCESS_KEY + SCALEWAY_SECRET_KEY dans .env
Commandes de gestion
launchctl list | grep -E "secondcerveau|neuralcare"
# Stopper un service (KeepAlive → obligatoirement bootout)
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.neuralcare92.startup.plist
# Redémarrer un service
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.neuralcare92.startup.plist
# Stopper TOUS les services Jarvis d'un coup
for svc in jarvis jarvis-bridge jarvis-daemon telegrambot; do
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.secondcerveau.${svc}.plist
done
# Activer le backup Scaleway (quand clés disponibles)
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.neuralcare92.backup.plist
7. Docker + PostgreSQL
Containers attendus : nc92-postgres (PostgreSQL 17, port 5432) · nc92-postgrest (port 3000) · nc92-pgadmin (port 5050)
docker compose restart
ls -lh ~/nc92-backups/
Les backups automatiques sont dans ~/nc92-backups/ (7 fichiers, rotation quotidienne). Source of truth DB = 6-Outils/nc92-backend/sql/init_complet.sql.
docker cp /tmp/restore.sql nc92-postgres:/tmp/
docker exec nc92-postgres psql -U nc92_admin -d nc92 -f /tmp/restore.sql
8. MemorIA — Pipeline et gestion
6-Outils/nc92-backend/server.py — endpoint POST /api/memoria-upload · lance pipeline.py
6-Outils/nc92-backend/pipeline.py — pipeline complet audio → MemorIA
6-Outils/nc92-backend/.env — MISTRAL_API_KEY, TELEGRAM_ALERT_TOKEN, DB config
6-Outils/nc92-backend/sql/init_complet.sql — source of truth DB (136 codes OMOP)
Rotation quotidienne, 7 jours de rétention. Alertes Telegram automatiques sur échec critique.
../jarvis-env/bin/python -m pytest tests/ -v
# 27 tests · 0 service requis · ~50ms
launchctl bootout gui/$(id -u)/com.neuralcare92.startup
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.neuralcare92.startup.plist
9. JARVIS — Assistant vocal
# Score SpeechBrain attendu : > 0.40 (seuil actuel)
# Si scores négatifs (-0.13…) → bruit ambiant seul, normal
# Si score < 0.40 sur votre voix → ré-enrôler le profil vocal
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.secondcerveau.jarvis-daemon.plist
for svc in jarvis jarvis-bridge jarvis-daemon; do
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.secondcerveau.${svc}.plist
done
# 2. Ré-enrôler (parler 3 segments de 25–30s quand demandé)
cd ~/SecondCerveau/6-Outils/jarvis-daemon
../jarvis-env/bin/python enroll.py
# 3. Relancer tous les services
for svc in jarvis jarvis-bridge jarvis-daemon; do
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.secondcerveau.${svc}.plist
done
Scores post-enrôlement attendus : 0.50–0.85. Seuil acceptation : 0.40.
10. n8n — Automatisations
URL : http://100.66.176.77:5678 (via Tailscale IP)
Workflows actifs : NC92 — Réception Bilans TDB (ID: RlvmnfxTfcjLhTvu)
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.secondcerveau.n8n.plist
11. Dépannage fréquent
# Si timeout → relancer server.py
launchctl bootout gui/$(id -u)/com.neuralcare92.startup
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.neuralcare92.startup.plist
docker ps) et que PostgreSQL tourne.
docker logs nc92-postgres
# Redémarrer toute la stack
cd ~/SecondCerveau/6-Outils/nc92-backend && docker compose up -d
tail -50 ~/SecondCerveau/6-Outils/jarvis-daemon.log2. Si scores SpeechBrain tous négatifs = bruit ambiant seul (normal si personne ne parle).
3. Si score < 0.40 sur votre voix → ré-enrôler (section 9 ci-dessus).
4. Vérifier Tailscale actif (Jarvis utilise bridge via réseau Tailscale).
tail -50 ~/SecondCerveau/6-Outils/memoria/logs/pipeline.log
# Vérifier que server.py répond
curl http://localhost:8888/api/memoria-upload
# Vérifier la clé Mistral dans .env
grep MISTRAL_API_KEY ~/SecondCerveau/6-Outils/nc92-backend/.env
# Attendu : 100.66.176.77
tailscale serve status
# Port 443 → 8888 doit être actif
# Port 3000 HTTPS doit être actif
tailscale status
# Affiche tous les appareils connectés au réseau NC92
# Port 443 → server.py
tailscale serve --bg --https=3000 3000
# Port 3000 HTTPS → PostgREST
echo "SCALEWAY_ACCESS_KEY=votre_cle" >> ~/SecondCerveau/6-Outils/nc92-backend/.env
echo "SCALEWAY_SECRET_KEY=votre_secret" >> ~/SecondCerveau/6-Outils/nc92-backend/.env
# 2. Tester sans activer
python3 ~/SecondCerveau/6-Outils/nc92-backend/backup_pg.py --dry-run
# 3. Activer le service launchd
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.neuralcare92.backup.plist