Documentation
Panoptic audite un site sur sa production et, si vous connectez le dépôt, sur son code source. Chaque constat est vérifié, chiffré en euros et priorisé. Cette page couvre le scan gratuit, le CLI, le MCP, l'action GitHub, l'API et l'auto-hébergement.
Démarrer
Le plus rapide : ouvrez la console et collez l'URL de votre site.
# scan gratuit, sans compte
https://panopticaudit.com/console/
Le scan gratuit analyse une page en boîte noire (production, sans accès au code) sur les 15 domaines et renvoie un score de santé et les constats. Les correctifs détaillés font partie de l'audit complet.
Gratuit vs complet
| Capacité | Scan gratuit | Audit complet |
|---|---|---|
| Périmètre | 1 page, production | Multi-pages + code source |
| Agents actifs | ~11 (prod) | 15 (dont sécurité code, dépendances, archi, données) |
| Rendu JS (SPA) | non | oui (Chromium) |
| axe-core / Lighthouse réels | non | oui |
| Scan authentifié (derrière login) | non | oui |
| Correctifs détaillés + PR | non | oui |
CLI
Auditez depuis le terminal ou une CI. Le CLI exécute le moteur localement.
node cli/panoptic.mjs scan https://exemple.fr
node cli/panoptic.mjs scan https://exemple.fr --pages 10
node cli/panoptic.mjs scan https://exemple.fr --repo . --json > audit.json
node cli/panoptic.mjs scan https://exemple.fr --fail-on high # exit 1 si finding >= high
| Option | Effet |
|---|---|
--pages N | Crawl multi-pages (1-30). >1 active axe-core / Lighthouse. |
--repo <chemin> | Audite aussi le code source local (secrets, CVE, architecture). |
--cookie / --bearer | Scan authentifié (session derrière un login). |
--json | Sortie JSON brute (pour scripts ou pipe vers un agent IA). |
--fail-on <sev> | Code de sortie ≠ 0 si un finding atteint la sévérité (casse le build en CI). |
--quiet | Sans progression. |
MCP — Claude Code, Cursor
Panoptic s'expose comme outil MCP : votre agent de code lance l'audit puis corrige les constats lui-même. Le moteur reste déterministe — votre code n'est jamais envoyé à un LLM tiers.
# Claude Code
claude mcp add panoptic -- node /chemin/panoptic-audit/mcp/server.mjs
L'agent dispose alors de l'outil panoptic_scan :
panoptic_scan({
url: "https://exemple.fr",
maxPages: 10, // optionnel
repoPath: ".", // optionnel: audite le code
failOn: "high" // optionnel: renvoie shouldFail
})
Il reçoit les constats vérifiés (sévérité, localisation, correctif) au format texte et structuré, puis peut appliquer les corrections.
Action GitHub
Auditez à chaque déploiement et cassez le build sur régression.
- uses: Chakirbader13/panoptic@main
with:
url: https://mon-site.fr
pages: 10
fail-on: high
Slack & Jira
Sur l'offre continue, une régression (finding ≥ medium apparu depuis le dernier déploiement) déclenche une alerte Slack et/ou un ticket Jira — uniquement les régressions, pas tout l'audit. Configuration côté serveur via notify dans la requête d'audit, ou les variables d'environnement SLACK_WEBHOOK / JIRA_*.
Audit complet (code + production)
Connectez un dépôt Git : Panoptic le clone en lecture seule, l'analyse le temps de l'audit, puis le supprime. Il relie alors un symptôme en production à sa cause dans le code (fichier:ligne).
# via l'API (voir Référence API)
POST /api/audits
{ "target": "https://exemple.fr", "repoUrl": "https://github.com/org/repo", "maxPages": 10 }
Les agents supplémentaires activés avec le code : sécurité applicative (semgrep + secrets), dépendances (CVE via OSV), architecture, données.
Comptes & équipe
Le dashboard (offre payante) utilise un compte : créez-le avec un email et un mot de passe, puis vos audits et tendances y sont rattachés et isolés.
- Rôles : owner (gère l'équipe et les clés), member (lance des audits), viewer (lecture seule).
- Clés d'API : un owner peut générer des clés (pour le CLI/CI) avec un rôle. Envoyées via l'en-tête
x-api-key. - Session : le token utilisateur voyage dans l'en-tête
Authorization: Bearer.
Référence API
Base : https://panoptic-audit.onrender.com. Authentification : Authorization: Bearer <token> (compte) ou x-api-key: <clé> (CLI/CI).
| Méthode | Route | Rôle |
|---|---|---|
| POST | /api/auth/signup · /api/auth/login | public |
| GET | /api/me | tous |
| POST | /api/audits — lance un audit {target, repoUrl?, maxPages?, auth?, businessParams?} | member+ |
| GET | /api/audits — liste les audits du compte | tous |
| GET | /api/audits/:id — un audit complet | tous |
| GET | /api/audits/:id/events — progression live (SSE) | tous |
| GET | /api/audits/:id/report — rapport HTML/PDF | tous |
| GET | /api/audits/:id/fixbundle — correctifs (md) | tous |
| POST | /api/audits/:id/pr — ouvre une pull request | member+ |
| GET | /api/trends?target= — tendances par déploiement | tous |
| GET | /api/team · POST /api/team/members · /api/team/keys | owner |
# exemple: lancer un audit puis suivre la progression
curl -X POST https://panoptic-audit.onrender.com/api/audits \
-H "authorization: Bearer $TOKEN" -H "content-type: application/json" \
-d '{"target":"https://exemple.fr","maxPages":10}'
Auto-hébergement
Le backend est un serveur Node sans framework (server/server.mjs), déployable via le Dockerfile et render.yaml fournis. Le scan gratuit tourne en fonction serverless (Netlify).
| Variable | Rôle |
|---|---|
SUPABASE_URL · SUPABASE_SERVICE_KEY | Persistance + comptes (sinon stockage local éphémère). |
PANOPTIC_BROWSER | off coupe axe-core/Lighthouse/rendu JS (coupe-circuit coût). |
GITHUB_TOKEN | Ouverture réelle des pull requests (sinon dry-run). |
SLACK_WEBHOOK · JIRA_* | Alertes de régression. |
AGENT_CONCURRENCY | Concurrence du fan-out des agents (défaut 3). |
Les 15 agents
| Famille | Agents |
|---|---|
| Technique | Sécurité applicative · Code & architecture · Infra/DevOps · Données & BDD · Dépendances/supply-chain · Performance/CWV |
| Visibilité | SEO technique · GEO (visibilité IA) · Analytics · Email/délivrabilité |
| Humain | Accessibilité (WCAG) · UX/parcours · Contenu/i18n |
| Risque | Juridique/RGPD · CRO/conversion |
Sans dépôt connecté, les agents qui nécessitent le code (dépendances, architecture, données, sécurité complète) ne peuvent pas tout évaluer : ils sont marqués « non évalué » dans le rapport plutôt que notés à tort.
Lire un constat
Chaque constat porte une sévérité (critique, élevé, moyen, faible, info), une localisation (fichier:ligne ou URL), une preuve, un correctif, un effort et un verdict de vérification :
- confirmé — reproduit indépendamment depuis la reconnaissance, ou observé en live avec preuve.
- plausible — affirmé mais non reproductible ici : à confirmer (priorité pondérée à la baisse).
- rejeté — la reconnaissance contredit le constat (faux positif) : exclu du score et du rapport.
Les montants en euros sont des estimations, toujours étiquetées comme telles : fourchette par gravité, ou calibrées sur votre trafic et la valeur d'une conversion si vous les fournissez.