https://github.com/franckolv-dev/elyagent
Self-hosted, GDPR-native AI agent for sovereign organisations. Multi-LLM, multi-channel (web, voice, mobile, Telegram, Slack), HITL on every irreversible action, native PII anonymisation pipeline. Free for personal use, commercial licence for business deployment.
https://github.com/franckolv-dev/elyagent
ai-agent fastapi french gdpr hitl human-in-the-loop langchain langgraph memory multi-account multi-llm nextjs pii-pipeline polyform-strict python rgpd rgpd-compliant self-hosted sovereign-ai web-automation
Last synced: 2 days ago
JSON representation
Self-hosted, GDPR-native AI agent for sovereign organisations. Multi-LLM, multi-channel (web, voice, mobile, Telegram, Slack), HITL on every irreversible action, native PII anonymisation pipeline. Free for personal use, commercial licence for business deployment.
- Host: GitHub
- URL: https://github.com/franckolv-dev/elyagent
- Owner: franckolv-dev
- License: other
- Created: 2026-03-09T18:33:11.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-06-10T01:40:02.000Z (3 days ago)
- Last Synced: 2026-06-10T03:10:40.935Z (2 days ago)
- Topics: ai-agent, fastapi, french, gdpr, hitl, human-in-the-loop, langchain, langgraph, memory, multi-account, multi-llm, nextjs, pii-pipeline, polyform-strict, python, rgpd, rgpd-compliant, self-hosted, sovereign-ai, web-automation
- Language: Python
- Homepage: https://agent-ely.fr
- Size: 14.6 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.fr.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README

# ELY
### Un agent IA auto-hébergé qui anonymise les données sensibles *avant* tout appel LLM.
Multi-utilisateur · multi-canal · RGPD natif · validation humaine sur chaque action irréversible.
Conçu pour les particuliers, les familles et les PME qui ne peuvent pas se permettre de fuiter leurs données vers une IA tierce.
[**Site web**](https://agent-ely.fr) ·
[**Documentation**](./docs/START_HERE.md) ·
[**Licence**](https://agent-ely.fr/pricing.html) ·
[**Discussions**](https://github.com/franckolv-dev/ElyAgent/discussions)
[](LICENSE)
[](https://github.com/franckolv-dev/ElyAgent/releases)
[](https://github.com/franckolv-dev/ElyAgent/actions)
[](https://github.com/franckolv-dev/ElyAgent/stargazers)
[](https://github.com/franckolv-dev/ElyAgent/discussions)
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://nextjs.org/)
[](https://langchain-ai.github.io/langgraph/)
[](https://docs.docker.com/compose/)
> **À propos de la licence.** ELY est sous **[Elastic License v2](LICENSE)** — gratuit pour tout usage personnel ET tout usage professionnel interne, quelle que soit la taille de l'organisation. Vous pouvez exécuter, modifier, redistribuer. La seule restriction : pas de revente comme service hébergé / managé à des tiers (pas de SaaS). Code source intégralement publié et auditable.
---
## Pourquoi ELY existe
Les agents IA cloud — ChatGPT, Claude, Gemini, le futur Google Remy, OpenAI Operator, Microsoft Copilot — sont puissants, mais ils partagent tous la même architecture : **vos données brutes partent vers un serveur tiers aux États-Unis.** E-mails, IBAN, noms de clients, dossiers médicaux, projets de contrats — tout transite par des modèles que vous ne contrôlez pas, dans des juridictions qui ne sont pas la vôtre.
Pour un particulier curieux, c'est un compromis. **Pour un cabinet d'avocats, un cabinet médical, une PME qui traite des contrats ou des dossiers clients — c'est un non-sujet.** Le secret professionnel, le RGPD, les secteurs réglementés ne permettent pas ce compromis.
ELY est la réponse pour les particuliers et les organisations qui ont besoin d'un agent IA **qui tourne sur leur matériel, anonymise les données sensibles avant tout appel modèle, demande l'autorisation avant chaque action irréversible, et respecte la souveraineté européenne par défaut.**
---
## Les quatre piliers
### Souveraineté
**Votre matériel. Vos données. Votre juridiction.**
- Auto-hébergé sur Mac, serveur, NAS, on-premise ou cloud souverain
- Routage local-first — les tiers simples/moyens utilisent votre modèle local (Ollama, LM Studio MLX). Mistral privilégié pour le tier C cloud, données conservées dans l'UE.
- RGPD natif par construction · DPA disponible · modèle d'AIPD fourni
- Zéro télémétrie · zéro phone-home · aucune dépendance cloud forcée
- Code source auditable (Elastic License v2)
### Sécurité
**Les données sensibles n'atteignent jamais le LLM. Les actions irréversibles ne s'exécutent jamais sans autorisation.**
- **Anonymisation PII native** — e-mails, IBAN, cartes bancaires, jetons d'API, numéros de téléphone, SIRET, identifiants salariés masqués avant la construction du prompt. Non désactivable silencieusement.
- **HITL structurel** — chaque outil irréversible (envoi de mail, suppression, SSH, partage) attend une validation explicite. Autoriser une fois · refuser une fois · **bannir définitivement**.
- Coffre chiffré (AES-256-GCM, zero-knowledge) pour les identifiants.
- Journal d'audit immuable — chaque validation tracée, exportable pour la conformité.
### Intégration
**Branché sur les outils que vos équipes utilisent déjà.**
- **Google Workspace complet** — Gmail, Calendar, Drive, Docs, Sheets, Tasks, Contacts (75 outils, lecture/écriture intégrale avec HITL sur chaque action destructive)
- 10 canaux — Web · Voix (mot-clé « Éli ») · PWA · iOS natif · Android natif · Telegram · WhatsApp · Slack · Discord · push ntfy
- Notifications push natives pour les validations HITL (FCM + APNs) — la plupart des concurrents ne proposent qu'un proxy via bot de messagerie
- 181 outils sur web automation, système, RAG, coffre, missions, auto-amélioration
### Architecture
**Multi-utilisateur. Multi-LLM. Conçu pour passer à l'échelle d'une famille ou d'une organisation.**
- **Multi-utilisateur natif** — un déploiement sert une famille, une équipe, une PME. Chaque utilisateur a sa mémoire, son coffre, sa file de validation.
- **Multi-LLM avec tiers de complexité** — assignez des modèles différents aux Tiers A (rapide) / B (standard) / C (profond) / IMG / SYS. Local pour les tâches simples, Mistral ou Anthropic pour les complexes — votre choix, sans redémarrage.
- 11 fournisseurs LLM supportés · bascule automatique en cas de panne · cache de prompt Anthropic activé
- Mappage canal-utilisateur empêchant l'usurpation entre plateformes
---
## Ce qui rend ELY différent : elle s'améliore toute seule
La plupart des agents sont statiques. **ELY observe ses propres échecs et progresse — en toute transparence, avec vous aux commandes.**
- **Agent auto-développant (compétences auto-apprises).** Quand ELY refuse, hallucine ou rate une tâche de façon répétée, une boucle en arrière-plan analyse l'échec, rédige un *playbook* réutilisable en Markdown, et un LLM externe le note. Les meilleurs deviennent des **candidates que vous validez et promouvez** depuis l'UI admin — rien ne pilote l'agent tant qu'un humain n'a pas approuvé. *(C'est la fondation de la V2 : ELY écrivant et validant ses propres outils Python.)*
- **Auto-critique par LLM-juge.** Chaque mission autonome est notée *a posteriori* par un modèle séparé qui lit toute la trace d'étapes et détecte le **« succès en façade »** — quand l'agent prétend avoir réussi alors que les étapes montrent le contraire. Le verdict alimente la boucle d'apprentissage.
- **Transparence radicale.** Deux tableaux de bord — `/me/learning` et `/me/state` — vous montrent exactement ce qu'ELY a appris de vous et le modèle qu'elle se fait de vous (humeur, focus, dossiers ouverts). Lisibles, modifiables, supprimables, jamais cachés.
- **Mémoire cognitive typée.** Cinq types de mémoire (épisodique · sémantique · procédurale · erreur · contrainte) au lieu d'un blob opaque — rappelés par type, entre conversations, 100 % en local.
- **Client MCP.** Consommez n'importe quel serveur Model Context Protocol — l'outillage d'ELY s'étend sans changement de code.
- **Banc de régression 50 scénarios + CI nocturne.** L'auto-amélioration ne ship en sécurité que parce que chaque sous-système est verrouillé par un banc déterministe qui tourne chaque nuit.
---
## ELY face aux alternatives — comparatif honnête
Nous respectons ce que les autres projets font bien. Nous sommes explicites sur ce qui nous distingue.
| | **ELY** | Autres agents auto-hébergés | Assistants IA hébergés |
|---|:---:|:---:|:---:|
| Auto-hébergé sur votre matériel | ✅ | ✅ | ❌ |
| **PII anonymisées avant l'appel LLM** | ✅ Natif | ⚠️ Plugin ou absent | ❌ |
| **HITL actif par défaut, non désactivable** | ✅ Structurel | ⚠️ Configurable | N/A |
| **Multi-utilisateur (famille / équipe / PME)** | ✅ | ❌ Souvent mono-user | ✅ (cloud éditeur) |
| **Routage hybride local / cloud** | ✅ Tiers explicites | ⚠️ Manuel / partiel | ❌ |
| Apps mobiles natives (iOS + Android) | ✅ | ❌ Rare | ✅ |
| Coffre chiffré (zero-knowledge) | ✅ AES-256-GCM | ❌ Rare | ❌ |
| Interface française complète | ✅ | ⚠️ Souvent EN only | ⚠️ Partielle |
| Licence | Source-available | Variable | Propriétaire |
> **Notre lecture honnête.** D'autres agents auto-hébergés ont des communautés plus larges et plus d'adaptateurs de canaux. **Si vous traitez des données que vous ne pouvez pas vous permettre de divulguer — les vôtres, celles de votre famille, celles de vos clients — le pipeline d'anonymisation et le HITL structurel d'ELY sont les raisons qui vous le feront choisir face aux alternatives.**
---
## À qui s'adresse ELY
ELY est conçu pour deux audiences distinctes. Toutes deux exécutent le même code.
**Particuliers et familles soucieux de leur vie privée** — vous voulez un assistant IA puissant mais vous refusez d'envoyer votre boîte mail, vos relevés bancaires et votre historique médical à OpenAI ou Anthropic. Gratuit sous la licence personnelle. Jusqu'à 4 membres de la famille sur un déploiement.
**PME en secteurs réglementés** — cabinets d'avocats, expertise comptable, cabinets médicaux, conseil RH, notaires, collectivités. Vous traitez des données couvertes par le secret professionnel ou le RGPD. Le pipeline d'anonymisation d'ELY fait la différence entre *« on a envisagé l'IA »* et *« on a déployé l'IA »*. L'usage professionnel interne est entièrement couvert par la licence Elastic v2 — aucun contrat additionnel requis.
→ Personas détaillés et scénarios de déploiement sur **[agent-ely.fr](https://agent-ely.fr)**.
---
## Démarrage rapide
**Pré-requis :** Docker · Docker Compose · 16 Go RAM (32 Go pour les LLM locaux) · 20 Go disque · `make` (préinstallé sur Mac et la plupart des Linux) · `openssl` (préinstallé partout).
```bash
# 1. Cloner
git clone https://github.com/franckolv-dev/ElyAgent.git
cd ElyAgent
# 2. Configurer — minimum requis : un secret JWT
cp .env.example .env
# Génère un secret hex de 64 caractères et remplace le placeholder dans .env :
sed -i.bak "s|^JWT_SECRET_KEY=.*|JWT_SECRET_KEY=$(openssl rand -hex 32)|" .env && rm .env.bak
# 3. Choisir un fournisseur LLM (OBLIGATOIRE — sans ça, ELY ne peut rien répondre)
# Option gratuite la plus simple : clé Google Gemini (Anthropic / Mistral / OpenAI marchent aussi)
# 1. Récupérer une clé gratuite sur https://aistudio.google.com/apikey
# 2. La coller dans .env sur la ligne GEMINI_API_KEY=
# 3. Changer ACTIVE_LLM_PROVIDER de "ollama" à "gemini" dans .env
#
# Liste complète des fournisseurs et liens de configuration : docs/SETUP_AI_PROVIDERS.md
# 4. Lancer la stack (le premier `make up` télécharge ~2 Go d'images, durée 5-10 min)
make up
# 5. Surveiller les logs jusqu'à ce que le backend soit prêt
make logs s=backend # ctrl-C dès que tu vois "Application startup complete"
# 6. Ouvrir http://localhost:3000 — la première inscription devient admin
# Politique de mot de passe : min 12 caractères, au moins 1 majuscule + 1 caractère spécial (!@#$%^&*…)
```
> **Sans clé LLM** : ELY démarre mais chaque message de chat échouera avec
> une erreur de connexion. La valeur par défaut `ACTIVE_LLM_PROVIDER=ollama`
> suppose qu'un Ollama tourne en local sur la machine hôte — installe-le
> depuis https://ollama.ai ou bascule sur un fournisseur cloud dans `.env`.
→ **[Guide d'installation complet pour non-développeurs →](./docs/START_HERE.md)**
Quatre scénarios, du POC local en 30 minutes (Scénario A) au déploiement à distance complet avec Cloudflare Tunnel et tous les canaux de messagerie (Scénario D).
→ **[Configuration de l'extension navigateur →](./extension/chrome/README.md)** pour qu'ELY agisse dans tes vrais onglets Chrome (LinkedIn, Gmail, GitHub, Amazon…) avec tes sessions existantes. Optionnel mais c'est la fonctionnalité tueuse.
→ **[Dépannage →](./docs/TROUBLESHOOTING.md)** si `make up` plante, le premier chat échoue ou des ports sont déjà occupés.
---
## Ce qu'ELY sait faire
Une vraie UI produit sur chaque surface — **pas un terminal déguisé en site web.** Beaucoup d'agents auto-hébergés sont d'abord des outils en ligne de commande ; ELY traite l'UI comme un citoyen de première classe, y compris pour les utilisateurs non techniques.
Pipeline de sécurité — masquage PII · HITL · coffre · journal d'audit
- **Pipeline de masquage PII.** Détection regex + heuristiques ML pour e-mails, IBAN, cartes bancaires, jetons d'API, numéros de téléphone, SIRET, identifiants salariés. Placeholders déterministes. Restitution uniquement à l'affichage côté utilisateur.
- **Validation humaine.** Bloque par défaut plus de 30 catégories d'outils. Trois actions : autoriser une fois, refuser une fois, **bannir définitivement** (persisté entre toutes les sessions futures).
- **Coffre chiffré.** AES-256-GCM, clé dérivée du mot de passe utilisateur. Zero-knowledge — le serveur ne peut rien lire après verrouillage. Stocke clés API, jetons OAuth, identifiants de canaux.
- **Journal d'audit.** Chaque décision de validation est journalisée de manière immuable (JSON Lines). Exportable pour la conformité.
[Modèle de sécurité complet →](./docs/security.md)
Moteur multi-LLM — vos clés, routage par complexité
Configurez les fournisseurs dans **Réglages → Modèles IA**. Assignez chaque tier (A/B/C/IMG/SYS) à un modèle. Changez à tout moment, sans redémarrage. Les modèles locaux (Ollama, LM Studio) bénéficient de prompts compacts auto-détectés pour que les modèles 7B obéissent réellement à `tool_choice="required"`.
- **Cloud :** OpenAI · Anthropic · Gemini · Qwen API · Moonshot Kimi K2.x · Mistral · DeepSeek · Zhipu · OpenRouter
- **Local :** Ollama · LM Studio (MLX sur Apple Silicon)
- **Bascule automatique** si un fournisseur tombe — désactivable par tier pour des tests 100 % locaux.
- **Cache de prompt Anthropic** activé là où c'est supporté (jusqu'à 90 % de réduction de coût).
Missions — boucle orientée objectif, persistante entre redémarrages
Donnez un objectif à ELY — elle le décompose en étapes, choisit les outils, exécute, évalue, replanifie en cas d'échec et vous notifie quand c'est terminé. Survit aux redémarrages backend (checkpointer LangGraph SQLite).
Cinq garde-fous : budget de tokens · budget d'itérations · deadline optionnelle · HITL sur outils critiques · anti-boucle après 3 échecs consécutifs. Notifications en parallèle : web · DM Telegram · push ntfy. Chaque mission terminée est notée par un **LLM-juge** externe qui détecte le « succès en façade ».
Auto-amélioration & compétences apprises — ELY transforme ses échecs en playbooks que vous validez
Les signaux d'échec (refus HITL, blocages d'hallucination, critiques de mission) alimentent une boucle d'apprentissage. Un modèle Tier-S rédige un **playbook** Markdown réutilisable, un juge externe le note, et les meilleurs deviennent des **candidates** que vous promouvez depuis l'UI admin (`/admin/learning/candidates`). Seules les compétences promues (actives) sont injectées dans le prompt de l'agent — l'humain est toujours le garde-fou. Un banc de régression 50 scénarios + CI nocturne garde toute la boucle honnête. C'est la fondation de la **V2** : ELY générant et validant ses propres outils Python.
Transparence radicale — voyez ce qu'ELY a appris de vous, et changez-le
`/me/learning` montre les signaux d'échec + verdicts qu'ELY a enregistrés ; `/me/state` montre le modèle vivant qu'elle a de vous (humeur, focus, sujets récents, dossiers ouverts, énergie). Tout est lisible, modifiable et supprimable par l'utilisateur — aucun profilage caché.
Canaux — 10 façons de joindre ELY
Web · Voix (mot-clé « Ély ») · PWA · iOS natif · Android natif · Telegram · WhatsApp · Slack · Discord · push ntfy.
Même agent, même mémoire, même sécurité sur toutes les surfaces. Apps natives iOS (SwiftUI) et Android (Kotlin/Compose) avec push FCM/APNs pour les validations HITL — la plupart des concurrents ne proposent qu'un proxy via bot de messagerie.
Mémoire & RAG — Qdrant local + SQLite FTS5
PDF · TXT · Markdown · CSV · JSON · DOCX. fastembed + Qdrant pour la recherche sémantique, SQLite FTS5 pour le mot-clé. ELY décide elle-même si une recherche est utile avant de répondre, classe les résultats, cite les sources. Aucune donnée envoyée à des services d'embeddings distants — tout est local.
Arena LLM — comparatif aveugle avec classement ELO
Choisissez deux fournisseurs configurés. Votez sans savoir lequel est lequel. Classement ELO K=32. Les fournisseurs locaux sont pingés avant d'être ajoutés — plus de matchs `[connection failed]`.
ELY Desktop — daemon Go natif pour l'automatisation locale
Connexion WebSocket sortante — votre poste n'a jamais besoin d'être joignable depuis l'extérieur. Capacités : capture d'écran · clavier/souris · lanceur d'app · presse-papier · opérations fichiers locales (HITL) · infos système.
Smart File Manager (Android) — nettoyage on-device
Détection de doublons exacts par MD5 (élagage par taille), doublons visuels par dHash perceptuel (Hamming ≤ 6), filtres déclaratifs (taille/âge/catégorie/extension). **Les fichiers ne transitent jamais par le backend** — tout reste sur votre téléphone.
---
## Architecture
```
┌──────────────────────────────────────────────────────────────────────┐
│ ENTRÉE ─→ SecurityFilter (masquage PII) ─→ Routeur complexité │
│ │ │
│ RÉPONSE ←─ Restitution réelle ←─ HITL ←─ LangGraph │
│ │ │
│ ┌───────────┼─────────┐ │
│ ▼ ▼ ▼ │
│ LLM local Outils Cloud│
│ (Ollama) (181) (PII- │
│ masqué)│
└──────────────────────────────────────────────────────────────────────┘
```
Un agent multi-canal, multi-utilisateur, hybride local/cloud bâti sur FastAPI + LangGraph (backend), Next.js 16 (frontend), clients natifs iOS/Android et un daemon desktop en Go.
→ [Architecture complète](./docs/architecture.md) · [Modèle de sécurité](./docs/security.md)
---
## Stack
| Couche | Technologie |
|--------|-------------|
| Backend | Python 3.12 · FastAPI · LangGraph · uv |
| Frontend | Next.js 16 · TypeScript · Tailwind · Three.js |
| Mobile | iOS SwiftUI · Android Kotlin/Compose |
| Daemon desktop | Go (Linux · macOS · Windows) |
| Fournisseurs LLM | 11 (cloud + local) |
| Mémoire | Qdrant · SQLite FTS5 · fastembed |
| Automation navigateur | Playwright |
| STT / TTS | faster-whisper · edge-tts |
| Auth | JWT HS256 · Argon2id · cookie HttpOnly |
| Coffre | AES-256-GCM, dérivation de clé par utilisateur |
| Push | FCM · APNs · Telegram · WebSocket |
| Infra | Docker Compose · nginx · Cloudflare Tunnel |
---
## Roadmap
**Livré** *(mai–juin 2026)*
- **Mémoire cognitive typée** — 5 types de mémoire, rappel transversal entre conversations
- **Transparence radicale** — tableaux de bord `/me/learning` + `/me/state`
- **Boucle d'auto-amélioration mesurée** — signaux d'échec, mission-critic LLM-juge, playbooks de compétences auto-apprises avec revue/promotion admin
- **Client MCP** — consommer n'importe quel serveur Model Context Protocol
- **Banc de régression 50 scénarios** + CI nocturne
- Registre d'outils auto-découvert · routage multi-domaines des tâches planifiées · garde-fous anti-hallucination durcis
**Suivant**
- **V2 — Agent auto-développant.** ELY génère et valide ses *propres* outils Python : whitelist AST → ruff/mypy → sandbox eval → régression banc → HITL admin avant toute mise en service.
- **Serveur MCP** — exposer ELY elle-même comme serveur MCP.
→ [Roadmap publique complète avec efforts annoncés →](https://agent-ely.fr/roadmap.html)
[Envie d'influencer la roadmap ? Ouvrez une discussion →](https://github.com/franckolv-dev/ElyAgent/discussions)
---
## Contribuer
ELY est source-available. Les contributions sont bienvenues dans le cadre de la licence :
✅ Corrections de bugs · documentation · traductions · adaptateurs de canaux · améliorations de performance · couverture de tests
⚠️ Changements architecturaux — ouvrez d'abord une issue
❌ Les forks sans accord préalable, les suppression des en-têtes de licence et le code désactivant HITL par défaut ne sont pas autorisés
[Guide de contribution complet →](./CONTRIBUTING.md) · [Code de conduite →](./CODE_OF_CONDUCT.md) · [Politique de sécurité →](./SECURITY.md) (merci de signaler les vulnérabilités par e-mail, pas en issue publique)
---
## Licence
**Code source** — [Elastic License v2](LICENSE)
En langage clair (informatif — le fichier [LICENSE](LICENSE) fait foi) :
**Vous êtes libre de** — utiliser ELY pour tout usage personnel (foyer, famille) · l'utiliser pour tout usage professionnel interne, quelle que soit la taille de l'organisation · modifier le code source et exécuter votre version · le redistribuer (modifié ou non) en conservant le LICENSE + les notices de copyright.
**Vous ne pouvez pas** — proposer ELY comme service hébergé / managé à des tiers (pas de revente SaaS) · retirer ou masquer les notices de copyright / licence · désactiver ou contourner un éventuel mécanisme de clé de licence.
→ [Résumé en langage clair sur le site officiel →](https://agent-ely.fr/pricing.html)
**Marques.** Le nom **Ely** (acronyme de *« Exactly Like You »*, prononcé « Éli »), **agent-ely.fr**, l'avatar 3D et le logo éclair sont protégés indépendamment du code.
**Contact :** [contact@agent-ely.fr](mailto:contact@agent-ely.fr) — réponse sous 48 h, toujours.
---
**Construit en Nouvelle-Aquitaine, France **
[Site web](https://agent-ely.fr) · [Documentation](./docs/START_HERE.md) · [Newsletter](https://agent-ely.fr/newsletter.html)