Client HTTP pour le test d'API — du test fonctionnel au pentest.
Workflows — Orchestrateur de requêtes avec moteur d'exécution local. Blocs Start, HTTP Request, Set Data, If/Else, For Loop, Assert, Delay. Sous-workflows, expressions {{ctx.*}}, exécution pas à pas. Import Arazzo → workflow exécutable.
Red Team — Scanner OWASP API Top 10 en 2 phases (déterministe + IA deep scan). Fuzzing paramètres, tests BOLA, analyse JWT/JWE/opaque token/cookie, diff de réponses. Auth multi-type : Bearer JWT, jeton opaque, JWE, cookie de session, header personnalisé. Rapports Markdown avec annexe requêtes/réponses.
Blue Team — Analyse security-by-design de specs OpenAPI. L'IA audite auth, chiffrement, input validation, logging. Rapports SSDLC multi-rounds personnalisables.
Grey Team — OSINT passif sur domaine (DNS, WHOIS, SSL/TLS, certificats crt.sh, headers HTTP, empreinte technologique, énumération email, Wayback Machine, GitHub/Google dorks, analyse frontend). Score de risque agrégé.
Ely Copilot — Agent IA contextuel omniprésent (panneau latéral sur chaque page). Context-aware : détecte la page active et adapte ses actions. Function calling : 8+ actions natives (créer requêtes, lancer scans Red/Grey/Blue Team, générer workflows). Memory : profil utilisateur persistant qui s'enrichit automatiquement (compaction LLM tous les 6 rounds). Permissions miroir : même token JWT que l'utilisateur, audit complet. Slash commands (/scan, /osint, /analyze, /create, /help). Multi-provider (OpenAI, Anthropic, Ollama, LM Studio, DeepSeek). Hub → onglet Ely pour l'historique et les stats.
Collections — Arborescence dossiers/requêtes. Multi-teams avec permissions. Import OpenAPI, Postman. Export curl.
Éditeur JSON — Auto-pairing {}[]"", validation en temps réel, formatage (Ctrl+Shift+F) sur tous les champs JSON.
GED — Gestion Électronique de Documents. Stockage de specs OpenAPI, Arazzo, markdown et autres fichiers. Upload par glisser-déposer, visualisation intégrée (markdown rendu, JSON formaté), téléchargement, suppression. Picker GED pour lier des documents aux profils Red/Blue/Purple Team.
Auth — Login/email, Argon2id, JWT HS512 éphémère, 12 mots de récupération BIP39. Envelope encryption (AES-256-GCM) — master key + DEK par collection. Zero-knowledge at rest : DB dump = données illisibles. Connecteur OIDC modulaire (Google, Azure, Keycloak…).
git clone https://github.com/dreaft/elyria.git
cd elyria
pip install -r requirements.txt
cd app && python entrypoint.pyDémarre sur https://127.0.0.1:8000. Hot-reload activé.
Docker : docker compose up --build → http://localhost:8000. Volume ./data pour la persistence.
Prérequis : Python 3.12+.
Le fichier elyria.cfg à la racine remplace le .env. C'est un INI standard :
[server] host, port, reload
[ssl] cert_path, key_path, verify
[database] backend (sqlite/postgres), pg_*
[logging] level (DEBUG/INFO/WARNING/ERROR), dir
[oidc] enabled, issuer, client_id, client_secret
[security] server_wrap_key, blocked_hostsOverride par variable d'environnement : ELYRIA_SERVER_PORT=9000 → [server].port.
Dans elyria.cfg, section [oidc] :
enabled = 1
issuer = https://accounts.google.com
client_id = …
client_secret = …
button_label = GoogleTest local : python tools/oidc_test_provider.py → user alice / password123.
- SQLite embarqué (PostgreSQL supporté)
- Python pur — moins de 100 Mo RAM au repos
- Argon2id + envelope encryption (AES-256-GCM) — master key, DEK, TVK
- JWT HS512 éphémères (clés dérivées HMAC, durée 1h, rotation par session)
- Static files servis par FastAPI/Starlette
- 153 tests automatisés — architecture crypto, OWASP Top 10, garde-fous
| Local | Remote |
|---|---|
| Ollama | OpenAI |
| LM Studio | Anthropic |
| DeepSeek |
Multi-provider : chaque slot (Flash/Pro) peut utiliser un provider différent.
Elyria tourne sur un Raspberry Pi 4 (carte SD 64 Go) derrière ma box.
- LLM rapide / tests → provider externe (OpenAI, Anthropic, DeepSeek)
- LLM local / hors-ligne → GPT-OSS-20B via LM Studio sur mon poste principal — le Pi appelle
http://<ip-du-poste>:1234/v1
Le Pi gère le serveur, la DB, et les workflows. L'inférence locale reste sur la machine principale qui a le GPU. Zero lag en usage solo.
- OpenAPI → collections
- Arazzo → workflows
- Postman, Bruno → import