À propos du projet

Shoggoth est un multitool de développement agentique auto-hébergé destiné à un usage personnel, assemblé à partir de services conteneurisés déployés sur K3s et accessibles sous un domaine configurable (s.local par défaut). Le projet se décrit comme expérimental et en phase initiale, conçu pour un réseau local sans priorité de sécurité, et adapté à une pile Ubuntu/C++/Python avec un workflow tout-en-code sans IDE. Ses objectifs sont de créer un environnement où les agents de codage travaillent comme des membres d’équipe, exécutent des tâches assignées et participent aux revues de code, avec tous les composants open source, auto-hébergeables et remplaçables par des logiciels similaires. Le README le distingue des outils de codage agentique de type kanban, en soulignant son focus sur l’intégration de composants tiers et la couverture d’un éventail plus large de fonctionnalités, tandis que les workflows agentiques sont moins avancés que certaines alternatives. Groupes de services décrits : Networking — Serveur VPN WireGuard avec une interface de gestion web, un proxy inverse Angie terminant le TLS pour fournir un accès HTTPS à l’interface VPN depuis l’extérieur du VPN, et CoreDNS pour l’aliasing de domaine et le blocage DNS. Caching — Proxy de mise en cache apt pour Debian/Ubuntu, registre de conteneurs zot avec mise en cache pull-through, proxy de mise en cache de paquets Python et cache de construction ccache/sccache, ces deux derniers servis par Angie. Development — Suite Gitea (serveur Git, hébergement statique Git Pages, runner Actions), orchestration de workflows Kestra, service Docker-in-Docker slave avec un terminal web interactif basé sur ttyd, tmux et Qwen Code, et CDash pour les tableaux de bord de résultats de tests. Project management — Serveur Redmine. LLM and coding agents — Proxy LiteLLM avec une passerelle MCP, serveur de modèle local LocalAI, serveur MCP Gitea et serveur MCP Basic Memory. Observability — Suite Grafana utilisant la pile LGTM : Loki pour les logs, Tempo pour les traces, VictoriaMetrics pour les métriques et un pipeline OpenTelemetry Collector pour l’ingestion. Identity and secrets — Annuaire OpenLDAP avec une interface web, plus OpenBao pour la gestion des secrets. Architecture and operations : le système se compose de manifestes K3s dans un dossier shoggoth/k3s, d’utilitaires pour le contrôle à distance du déploiement exposés via des cibles Makefile (up, down, log, ssh, sync_restart), et d’un script de configuration exécuté sur les machines clientes pour générer des fichiers de configuration, configurer le proxy de mise en cache Docker et le registre, mettre à jour /etc/hosts, installer les paramètres de cache apt et obtenir des jetons de passerelle API. Le conteneur slave combine un environnement de construction ccws avec des compilateurs et des outils d’analyse statique, l’agent de terminal Qwen Code et des utilitaires spécifiques à shoggoth, et est destiné à la CI/CD simple, aux flux agentiques non interactifs tels que le codage ou les revues, et au développement interactif. L’authentification utilise OpenLDAP avec trois comptes (admin pour l’administration de l’annuaire et la connexion admin Grafana, sldapauth comme compte de liaison de service, sslave pour la CI et l’automatisation), et deux groupes (admins, mappé à une politique shoggoth-admin dans OpenBao, et shoggoth-auth pour les comptes de liaison de service). OpenBao est la source de vérité pour les mots de passe, générés automatiquement à la première exécution, et les services basés sur LDAP incluent Gitea, Redmine, CDash et OpenBao lui-même. Les mises en garde documentées incluent que les clients CLI gitea et redmine ne peuvent pas être configurés uniquement par des variables d’environnement, que zot laisse des répertoires de staging de synchronisation obsolètes après des synchronisations à la demande interrompues (contourné par un initContainer de nettoyage), et des problèmes connus de rappel OpenTelemetry de LiteLLM et de surveillance WAL de Tempo.