02
RETOUR À LA LISTEArche
DevTools / Agents IA
CLI auto-hébergé qui relie un ticket Jira à une merge request GitLab via un pipeline plan → exécution → revue avec validations humaines. Le code tourne dans des sandbox Docker par exécution ; les appels LLM passent par OpenRouter.
Contexte
Projet personnel / DevTools
~3 semaines (9 avr – 1er mai 2026)
Solo
Faire tourner une boucle planification → code → revue sur un ticket Jira sans dépendre d'un SaaS d'agents. Tout doit tourner sur un VPS que l'opérateur contrôle, avec isolation Docker autour de l'exécution du code et approbation humaine aux étapes importantes.
Mon rôle
Créateur solo
RESPONSABILITÉS
- —Architecture en 3 processus (CLI, serveur Fastify, worker Node) partageant une base SQLite via better-sqlite3 + Drizzle
- —Machine à états plan / exécution / revue avec cycles bornés, réessai automatique sur changements de relecteur, délais sur les approbations humaines
- —Cycle de vie de la sandbox Docker avec liste blanche de commandes tokenisées (pas d'échappement shell implicite)
- —Orchestration Jira + GitLab + GitHub avec authentification git distante
- —18 fichiers vitest couvrant policy, sandbox, SQLite, lease/heartbeat, flux manual-run
LIVRABLES
v0.1.0 d'un orchestrateur auto-hébergé privé : CLI + API HTTP + worker + tableau de bord React, déployable sur un seul VPS
Résultats
- ✓Démontrable de bout en bout sur la machine de l'auteur : ticket Jira → branche + commits → merge request GitLab
- ✓Sandbox durcie par défaut : rootfs read-only, no_new_privileges, liste blanche de commandes tokenisées
ACCOMPLISSEMENTS
- •Liste blanche de commandes tokenisées (sans shell) qui empêche les échappements du type pnpm test && rm -rf /
- •Lease/heartbeat du worker pour la concurrence sûre sur SQLite partagé
- •Liaison réseau en refus par défaut : le serveur refuse de démarrer sur un hôte non-loopback sans ARCHE_SERVER_AUTH_TOKEN
Stack technique
TECHNOLOGIES
TypeScriptNode.jsFastifySQLiteDrizzle ORMDockerOpenRouterAgents IAJira APIGitLab APICLIViteAuto-hébergéAutomatisation DevOps
FONCTIONNALITÉS CLÉS
- —CLI avec assistant arche init, vérifications arche doctor, et arche runs manual <KEY> pour déclencher une exécution
- —API HTTP Fastify (~15 endpoints) protégée par jeton bearer, avec un webhook Jira en entrée
- —Tableau de bord web React 19 + daisyUI pour suivre les exécutions, approuver les plans, consulter diffs et logs
- —Sandbox Docker par exécution (rootfs read-only, cap_drop ALL, no_new_privileges, limites pids/mémoire/CPU) avec liste blanche de commandes tokenisées (pas de shell)
- —Machine à états plan / exécution / revue avec max_review_cycles borné et validations humaines
- —Profils d'exécution multi-modèles (planner / executor / reviewer) via OpenRouter
Galerie
Projet similaire en tête ?
Discutons de comment je peux vous aider