Introduction
ParusDB regroupe l’ingestion ELT, un data lakehouse complet et des agents conversationnels au sein d’une plateforme unifiée sous licence Apache 2.0. Le code source et les composants de déploiement sont accessibles sur le dépôt officiel : https://github.com/ParusDB/parusdb.
L’outil centralise l’accès aux données en permettant leur interrogation en langage naturel tout en conservant l’infrastructure sous contrôle strict, sans dépendance externe obligatoire.
Caractéristiques
| Critère | Détail |
|---|---|
| Licence | Apache 2.0 (100 % open source) |
| Moteur SQL | Trino (requêtage fédéré) |
| Catalogue & Stockage | Apache Polaris (Iceberg) et RustFS (compatible S3) |
| Ingestion (ELT) | dlt (data load tool), plus de 40 connecteurs natifs |
| Backend & Auth | Supabase self-hosted (PostgreSQL, Realtime, RBAC) |
| Agents IA | Ollama en local ou modèles distants via API, intégration MCP (mcp-trino) |
| Interface | Next.js (App Router), TypeScript, Tailwind CSS |
Architecture
Le flux repose sur l’ingestion de sources hétérogènes vers le stockage objet Iceberg, interrogeable en SQL direct ou via des agents IA branchés sur le Model Context Protocol.
Installation
Le déploiement local s’appuie sur Docker Compose, Node.js LTS et Git. Un script d’orchestration global est fourni à la racine, mais l’empilement peut être initialisé manuellement par sous-système.
Initialisation du socle Supabase avec le stockage S3 RustFS :
# Cloner le dépôt et accéder au module backend
git clone https://github.com/ParusDB/parusdb.git
cd parusdb/apps/supabase
# Générer les secrets et variables d'environnement
cp .env.example .env
sh utils/generate-keys.sh --update-env
sh utils/add-new-auth-keys.sh --update-env
# Activer le backend S3 RustFS avec persistance au reboot
sh run.sh config add rustfs
sh run.sh config add rustfs-restart
# Démarrer les conteneurs d'infrastructure
sh run.sh start
–> Le script racine sh setup.sh automatise l’ordre de démarrage des dépendances, la migration SQL et la configuration du runtime dlt.
Configuration
La liaison entre le moteur de requêtage Trino et les agents s’effectue via le connecteur MCP. Pour exploiter un modèle local avec Ollama, la configuration de l’agent s’ajuste dans l’interface ou dans les tables système :
# Exemple de configuration d'un agent local (config/agent-finance.yml)
agent:
name: "analyste-ventes"
provider: "ollama"
model: "mistral:latest"
endpoint: "http://localhost:11434"
context_protocol:
server: "mcp-trino"
catalog: "iceberg"
schema: "analytics"
rbac_role: "finance_reader"
–> Attribuez des comptes applicatifs restreints à chaque agent ; n’utilisez jamais le rôle administrateur pour l’exécution des requêtes générées par le LLM.
| Commande | Description |
|---|---|
sh setup.sh
| Déploie l'ensemble de la stack et applique les migrations |
sh apps/supabase/run.sh start
| Démarre les conteneurs du socle Supabase |
sh apps/supabase/run.sh stop
| Arrête proprement le backend transactionnel |
docker compose ps
| Vérifie l'état des services Trino, Polaris et RustFS |
ollama run mistral
| Valide l'exécution du LLM local avant raccordement MCP |
Conclusion
ParusDB assemble les briques standards de l’écosystème open source (Trino, Iceberg, Supabase) pour fournir une plateforme analytique souveraine immédiatement exploitable. La gouvernance fine couplée aux agents locaux évite toute fuite de données vers des services tiers.
Plus d’informations sur le dépôt : https://github.com/ravindrajob/InfraAtHome
