À propos du projet

Poindexter est un pipeline de contenu open-source (Apache 2.0, Glad Labs LLC) conçu pour s'exécuter sur la machine d'un opérateur unique. Selon le README, il s'agit du système de production derrière gladlabs.io, avec plus de 200 articles publiés et 2 000 exécutions de pipeline enregistrées ; il s'adresse explicitement aux opérateurs solos et aux éditeurs indépendants plutôt qu'aux équipes marketing recherchant une application hébergée en un clic. Voici le fonctionnement du pipeline : il découvre des sujets candidats via HackerNews, Dev.to et des flux de niche configurables ; recherche chaque sujet via des recherches web et une vérification des sources ; rédige des brouillons de format long en utilisant des modèles Ollama locaux ; examine chaque brouillon avec une QA contradictoire multi-modèles ; exécute une validation anti-hallucination sur les personnes, les statistiques et les citations ; et publie le travail terminé sous forme de JSON statique, RSS et JSON Feed 1.1 vers tout stockage compatible S3. Des étapes optionnelles ajoutent des images IA, de l'audio de podcast et de courts clips texte-vidéo. Le système s'auto-surveille via des tableaux de bord Grafana et un démon watchdog, avec des alertes via Telegram ou Discord. L'ensemble de modèles par défaut comprend quatre modèles Ollama : gemma3:27b comme rédacteur et solution de secours, phi4:14b comme critique QA contradictoire, qwen3:8b pour les tâches rapides telles que le SEO et le routage, et nomic-embed-text pour les embeddings dans pgvector. Le README note que le critique provient délibérément d'une famille de modèles différente de celle du rédacteur. Le routage des modèles (rédacteur, critique, recherche, résumé, embedder) est stocké dans la base de données et peut être modifié lors de l'exécution ; des modèles de vision et de voix supplémentaires ne sont appelés que pour les fonctionnalités qui en ont besoin. Les fournisseurs cloud (Anthropic, OpenAI, Groq, OpenRouter et autres) sont disponibles via un plugin LiteLLM optionnel protégé par un garde-coût. Le contrôle de la qualité est l'accent déclaré du projet. Le README décrit 15 rails de QA combinant des critiques LLM inter-modèles, des évaluations DeepEval et Ragas, des validateurs anti-hallucination déterministes, une vérification des citations par rapport au corpus de recherche et une QA de vision sur les images générées. Chaque rail est configurable dans la base de données comme consultatif ou bloquant, les seuils sont ajustables lors de l'exécution, et les brouillons presque conformes bénéficient d'une passe de révision limitée avant le rejet. Architecturalement, il s'agit d'un noyau plus des modules plus des plugins de capacité. Les composants ne s'importent pas entre eux ; PostgreSQL avec pgvector fait office de bus partagé. Le pipeline de contenu est un DAG LangGraph déclaratif stocké dans la base de données (environ 47 nœuds) avec un checkpointing Postgres pour des exécutions reprenables, dispatché via Prefect. Un démon watchdog autonome vérifie les services sur un cycle de 5 minutes et redémarre les défaillances lorsque possible. La configuration réside dans une table app_settings (plus de 1 700 paramètres) plutôt que dans des variables d'environnement, modifiable par CLI, SQL ou REST, et l'authentification utilise des identifiants de client OAuth 2.1 avec des JWT limités par consommateur. Les points d'extension sont organisés en 18 groupes de points d'entrée de plugins — Taps, TopicSources, fournisseurs LLM/image/TTS/vidéo/audio/caption, PublishAdapters, Probes, Jobs, Stages, Reviewers et Modules complets. Les plugins sont des packages pip ordinaires enregistrant des points d'entrée setuptools, et le README précise que le premier plugin de production est le fournisseur LiteLLM. L'installation nécessite Docker, Ollama, Python 3.13+ et un GPU NVIDIA avec 8 Go+ de VRAM (le CPU est supporté mais lent) ; cmd/PowerShell natif sous Windows n'est pas supporté et Git Bash ou WSL2 est requis. Les profils Docker Compose vont de 4 conteneurs pour une installation minimale à 45 pour la pile opérateur complète. Le README est franc sur l'état du projet : il est en phase alpha, il n'y a pas d'hébergement géré ni de recette multi-tenant, le schéma de la base de données n'est pas encore stable entre les versions, l'écosystème de plugins tiers est naissant, et le texte-vidéo reste en alpha avec un besoin d'environ 28 Go de VRAM. Il rapporte plus de 17 000 tests unitaires en CI ainsi que des tests de fumée de migration et des vérifications de liens morts, et chaque push exécute un scan de secrets, un scan CVE et la génération d'un SBOM. Le projet est sous licence Apache 2.0, relicencié depuis AGPL-3.0.