Introduction
OpenCrabs est un agent d’orchestration IA auto-hébergé et agnostique du provider qui s’exécute comme un unique binaire Rust. Il automatise votre terminal, votre navigateur, vos channels (Telegram/Discord/Slack/WhatsApp/Trello) et votre codebase, tout en respectant votre vie privée et en vous gardant aux commandes.
11,091 tests sur les providers, les outils, les channels, le TUI, le self-healing et l’automatisation de browser.
Ce qui distingue OpenCrabs
Zéro télémétrie, même pas en opt-in
- OpenCrabs ne téléphone jamais à la maison. Jamais. Pas d’analytics, pas de tracking, pas de statistiques d’utilisation, pas de logs distants, pas de rapports de plantage
- Vos conversations, outils, mémoire, configuration et clés API ne quittent jamais votre machine
- Le seul trafic sortant est celui que vous initiez explicitement : appels d’API LLM, recherches web, commandes GitHub, automatisation du navigateur
- Pas une case de politique de confidentialité : il n’y a aucun code de télémétrie à désactiver, aucun flag d’opt-out, aucun service d’analytics à bloquer. Il n’y a simplement rien à envoyer
Agnostique du provider par conception
- 16 providers intégrés + Custom OpenAI Compatible : Anthropic Claude, OpenAI, Gemini, Xiaomi MiMo, OpenRouter, Qwen (DashScope), MiniMax, Ollama, z.ai GLM, GitHub Copilot, Codex, Codex CLI, OpenCode, OpenCode CLI, Moonshot AI (Kimi), Command Code CLI
- Intégration CLI native: utilisez Claude Code CLI, OpenCode CLI, Codex CLI et Command Code CLI comme providers sans clés API
- Chaîne de fallback persistante: failover automatique sur rate limits ou erreurs, persistance sensible à l’état de santé qui survit aux redémarrages
- Prompt caching sur Anthropic, OpenRouter, Gemini et Qwen DashScope réduit les coûts jusqu’à 95 %
- Override de la fenêtre de contexte: plafonnez ou étendez le contexte de n’importe quel model via la config (le provider OpenCrabs intégré est l’exception : sa fenêtre est fixée à 200k)
- Xiaomi MiMo: plus de 30 models dont la série de reasoning MiMo, provider à clé
- Moonshot AI (Kimi): endpoints du plan API (api.moonshot.ai) et du plan Coding (api.kimi.com), config de reasoning-effort, fenêtre de contexte selon le palier de plan
Multi-Agent Orchestration
- Les sessions sont des agents totalement isolés, chacune avec son propre brain, provider, model, répertoire de travail et historique
- Sous-agents typés :
general,explore,plan,code,researchavec un accès aux outils adapté - Orchestration d’équipes :
team_create,team_broadcast,team_deletepour des workflows coordonnés - Overrides provider/model par appel: mélangez les models entre équipes (planifier avec GLM, coder avec Deepseek, relire avec Kimi)
- Protocole A2A: passerelle JSON-RPC 2.0 pour la communication agent-à-agent
Communication native des channels
- Telegram, Discord, Slack, WhatsApp, Trello, intégration bot complète avec DM, groupes et threads
- Messages riches sur Telegram: tableaux natifs, titres, listes, maths via la config
rich_messages - Streaming de brouillons: mises à jour “écrit…” en direct pendant la génération des tokens dans les DM
- Blocs repliables: sections
<details>/<summary>pour les sorties longues - Isolation de session par sujet de forum: chaque sujet dans les supergroupes Telegram a sa propre session
- Réactions Telegram: le bot lit les réactions emoji entrantes et peut répondre par une réaction plutôt qu’un message quand c’est approprié
- Réactions de cadrage (v0.3.61): réactions entrantes lues par sentiment, l’agent s’adresse à l’utilisateur par son prénom
- Réactions en cours de turn (v0.3.61): une réaction pendant un turn en cours s’injecte dans la boucle actuelle au lieu de déclencher un second turn
- Suggestions de suivi (v0.3.69): relances optionnelles tapez-pour-envoyer sur Telegram, Discord, Slack, WhatsApp ; remplir-sans-envoyer dans le TUI
- Réépinglage de la carte de plan Telegram (v0.3.71): réépingler la carte de plan et y replier le texte quand elle est enterrée
- Capture complète de l’historique de groupe (v0.3.73), persiste chaque message de groupe dans l’historique, même des expéditeurs et bots hors allowlist
- Interlocuteur de groupe correct (v0.3.73): ne plus traiter un expéditeur de l’historique du groupe comme l’interlocuteur actuel
- Héritage de session:
/newhérite du répertoire de travail de votre session la plus récente /goalsur tous les channels: définissez des objectifs autonomes depuis Telegram, Discord, Slack, WhatsApp- Support vocal: Whisper STT local + Piper TTS, entièrement hors ligne
- Récupération de plantage inter-channels: les requêtes en attente retournent au channel d’origine au redémarrage
/cowork: créez des workspaces partagés depuis les channels et le TUI/rename,/profiles,/cd, gérez sessions, profiles et répertoires depuis n’importe quel channel
Self-Healing et auto-amélioration
-
Recursive Self-Improvement (RSI): l’agent analyse ses performances, identifie des schémas et réécrit ses fichiers brain
-
Détection des phantom tool calls: détecte quand le model narre des changements sans exécuter d’outils
-
Self-heal des phantom calls (v0.3.72): détecte les turns sans outil qui prétendent à des effets critiques (ship/push/tag/release)
-
Éditions de config uniquement via config_manager (v0.3.74), l’agent n’édite jamais à la main config.toml/keys.toml ; chaque écriture est validée avant d’atterrir
-
Déduplication du brain (v0.3.75): la commande
/dedupplus des scans post-écriture et hebdomadaires inter-fichiers empêchent les fichiers brain de dériver vers la duplication, avec approbation par clavier inline Telegram -
Indices de fichiers brain sur échecs d’outils (v0.3.75), des notes brain pertinentes remontent automatiquement quand un appel d’outil échoue ou produit une erreur
-
Mémoire proactive (v0.3.76): une mémoire pertinente remonte sans qu’on la demande quand le contexte de conversation correspond au savoir stocké
-
Noms de models naturels (v0.3.76):
/models opusfonctionne ; les noms familiers se résolvent en IDs de model exacts -
Routage de provider plan/execute (v0.3.76): routez la planification et l’exécution vers des providers/models séparés
-
Timeout des thinking-loops (v0.3.78): détecte les boucles de reasoning infinies, déclenche l’application du phantom enforcement avec fallback persistant
-
Moteur épistémique (v0.3.78): suivi de croyances avec niveaux de confiance, maillage cognitif OODA/BDI, gate d’Orient avant l’exécution du plan
-
Gate de vérification Ralph (v0.3.78): vérification de tâches sensible aux critères avec plafond d’itérations ; les tâches doivent satisfaire les critères d’acceptation déclarés
-
Gates de sécurité TOML (v0.3.78): blocklist bash configurable à l’exécution avec hot-reload, rédaction des secrets entre guillemets, vérification des fichiers brain
-
Analytics Mission Control (v0.3.78): filtre D/W/M, grille de cartes 3 par ligne, onglets phantom/model/streaming, DB d’événements dédiée
-
Onboarding OpenAI TTS (v0.3.78): sélecteur de voix et champ de clé API dans l’assistant d’onboarding
-
Installation Homebrew (v0.3.79):
brew install opencrabsdepuis homebrew-core : binaire précompilé, les deux architectures, sans toolchain Rust -
/restartet/exit(v0.3.79): redémarrez ou arrêtez depuis n’importe quel channel ou le TUI ; réservé au owner sur les channels, annonce avant d’agir -
Circuit breaker de quota (v0.3.79): les providers à quota épuisé reçoivent un breaker à TTL et sont sautés dans les parcours de fallback ; l’épuisement de la chaîne est signalé explicitement
-
État des plans entre sessions (v0.3.79): les plans survivent aux frontières de session ; l’exécution isolée des tâches de plan est activée par défaut, Ralph vérifie dans le répertoire propre de la session
-
Système de thèmes (v0.5.0): des presets vérifiés, un sélecteur interactif et vos propres thèmes depuis
~/.opencrabs/themes/*.toml; le truecolor est détecté avec un niveau de repli ANSI-256, et un preset dont le contraste rendrait le texte illisible est refusé -
Mémoire structurelle du code (v0.5.0): tree-sitter construit un index de symboles et de graphe d’appels à côté de l’index textuel, si bien que « qui appelle X » parcourt de vraies arêtes d’appel tandis que les questions conceptuelles gardent la voie textuelle (#1324)
-
Transfert de fichier via SSH (v0.5.0): un fichier déposé dans une TUI exécutée sur un hôte distant est récupéré par la connexion déjà ouverte, avec un
opencrabs drop-agentcôté client (#1289) -
Verdicts de livraison de notify (v0.5.0):
session_notifyrenvoie un résultat d’envoi lisible par machine, les accusés d’injection de profondeur 3 rendent lenotify_idvérifiable, et la livraison est redirigée vers la session qui détient le channel à cet instant -
Compaction en arrière-plan (v0.5.0): le résumeur s’exécute hors du tour au lieu de retenir la session pendant son travail
-
Masquage du token à l’écriture (v0.5.0): une erreur de provider transportant une URL ne peut plus laisser fuir le token du bot dans un log, quelle qu’en soit l’origine (#1322)
-
Userbot Telegram en réception seule (v0.5.0, expérimental): capture MTProto derrière une feature, avec connexion locale par QR/code/2FA ; il stocke le texte autorisé pour consultation et n’agit jamais à la place de l’utilisateur
-
Ancrage temporel (v0.5.1): l’agent sait toujours l’heure qu’il est : chaque tour porte un horodatage dans le fuseau horaire de l’utilisateur, et le prompt système reste octet pour octet identique pour le cache du fournisseur (#1516)
-
Sessions cron par job (v0.5.1): chaque job programmé obtient sa propre session, afin que deux jobs simultanés ne partagent jamais leur contexte ou leurs fournisseurs (#1511)
-
Verrou par globs de skill (v0.5.1): la liste
globs:d’une skill peut refuser les appels d’outils sur les fichiers correspondants tant que l’agent n’a pas lu le corps de la skill (#1515) -
Écritures de config validées par la structure (v0.5.1), le garde d’écriture et les suggestions de section de config_manager dérivent désormais du type
Configlui-même, pour ne jamais diverger du code publié (#1508) -
Conceptions de plan refusées à l’écriture (v0.5.1), une conception de plan malformée rebondit immédiatement avec les sections manquantes nommées, et une écriture refusée restaure le scaffold au lieu d’effacer le brouillon (#1507)
-
Backpressure de budget fournisseur (v0.5.1): un fournisseur qui signale un budget de tokens en sortie déclenche une seule compaction bornée puis une nouvelle tentative, au lieu d’une cascade de 400 (#1518)
-
Jetons A2A liés et config réservée au owner (v0.5.1), les jetons A2A sont liés à la gateway qui les a émis, et config.toml/keys.toml passent en mode owner exclusif, les secrets étant purgés des logs
-
Mode serveur ACP (v0.5.2):
opencrabs acpparle l’Agent Client Protocol via stdio JSON-RPC, de sorte que Zed, MonoCode et tout client ACP pilotent le même brain que vos channels, avec le streaming de la progression et les approbations qui repartent vers l’éditeur (#1540) -
Navigation compatible shadow-DOM (v0.5.2): la résolution des sélecteurs traverse les shadow roots, de sorte que l’automatisation atteint les web components auparavant invisibles pour les outils
-
Surface WhatsApp complète (v0.5.2): notes vocales natives, vidéo/sticker/localisation/contact entrants, votes de sondage, récupération de la présence et des media, accusés de réaction, streaming avec édition sur place, messages éphémères, blocage de contacts, épingler/transférer/profil, mises à jour de statut, découverte des newsletters, boutons native flow, historique par conversation
-
Tracing en direct et tables natives sur Discord (v0.5.2), les tours longs sont diffusés comme une réponse live tracée, les réponses passent automatiquement en thread, les tables markdown s’affichent nativement et les tours avec outils ne publient plus deux fois la réponse finale (#1603, #1608)
-
Sujets de forum Telegram et /clear (v0.5.2): création/renommage de sujets de forum avec liaison de session, et /clear démarre une session fraîche sans l’appel au summariser (#1585)
-
Budget de payload du menu de commandes (v0.5.2): le setMyCommands de Telegram rejette silencieusement les corps de requête au-delà de ~7,8 Ko en signalant BOT_COMMANDS_TOO_MUCH ; les descriptions se raccourcissent désormais par paliers pour que tout le menu tienne (#1613)
-
Cron déclenché sur condition (v0.5.3): un job exécute un pre-flight check et ne s’exécute que si votre condition est remplie (output non vide, exit code, regex), les runs ignorés coûtent 0 token et un trigger déclenché peut dispatcher un goal vers une session (#233)
-
Windows natif (v0.5.3): gestion du shell par plateforme, lecture BOM/UTF-16, fallbacks tilde et cwd, avec une CI qui compile Windows et gate les PR (#627)
-
Mémoire épistémique (v0.5.3): les faits de MEMORY.md portent une confidence et un decay (#1643), les sections froides s’archivent d’elles-mêmes et
opencrabs memory prunemontre ce qui est devenu froid avant d’y toucher (#1657) -
Moteur de thèmes achevé (v0.5.3): chaque widget du TUI résout ses couleurs via le thème, avec un guard de suite contre tout nouveau site ANSI brut, et les thèmes peuvent déclarer un canvas background (#1634)
-
Sondages de suggestions WhatsApp (v0.5.3): les ensembles de follow-ups au-delà de la limite native de boutons s’affichent en sondage, et un vote sélectionne l’option (#1616)
-
Famille de sessions ACP (v0.5.4): les sessions sont first-class sur la surface ACP : le context meter est restauré au chargement et suit les usage updates,
session/loadrejoue la transcription et restaure le model de la session,set_modelpersiste entre processus, lesession/set_modenatif applique l’approval policy côté serveur,session/compactpousse, etsession/newpropose un catalogue de models en direct -
Prise en main interactive du terminal (v0.5.4):
!vi/!nanoprennent le terminal de façon interactive et le rendent avec la session intacte; terminaux Unix uniquement, Windows conserve la capture par pipe (#1744, #1759) -
Paste & drop universel (v0.5.4): un router d’attachments partagé accepte tout type de fichier au collage ou au dépôt et classifie code, docs, archives et données pour que chacun arrive dans le bon pipeline (#1740, #1743)
-
Moteur de recherche Serper (v0.5.4):
serper_searchajoute des résultats Google SERP, et le fan-out de web_search déduplique par URL entre engines (#1731) -
Decision cache (v0.5.4):
decide_cachedrépond aux décisions répétées depuis un anneau de réutilisation L1 avec tiers shadow/live et config[decisions](#1648) -
Coûts rapportés par le provider et une chaîne de timeouts unifiée (v0.5.4), le ledger d’usage préfère le coût réellement rapporté par le provider aux estimations de table (#1707), et les flags de timeout se résolvent
[providers.<name>]->[agent]-> default pour tous les providers (#1688) -
Commandes compilées /architecture et /attach, audit trail optionnel (v0.5.4), les deux commandes sont livrées comme arms compilés, et un audit trail optionnel enregistre ce qui a tourné avec un viewer
/audit(#933, #1705) -
Surface native de Discord (v0.5.5) : sondages natifs via
send_poll, réponses TTS livrées comme messages vocaux, etcommands.tomlprojeté sur les slash commands natifs pour que vos propres commandes apparaissent dans le sélecteur de Discord (#1848, #1849, #1850) -
Flow groups et governors d’écriture (v0.5.5) : Discord et Slack ouvrent le flow group au début du tour avec une horloge en direct couvrant la réflexion et le texte d’activité en tête de ligne, et un seul governor d’écriture partagé budgète chaque édition et se met en park sur les 429 (#1841, #1843, #1844, #1845, #1807, #1808, #1809, #1910, #1912, #2012)
-
/respond_to et /cowork (v0.5.5) : modes respond_to et open par canal dans la configuration, plus les deux commandes pour les définir depuis le canal lui-même (#2014, #2015)
-
Discipline de rate limit sur Telegram (v0.5.5) : polls getUpdates et handoffs de handler instrumentés pour le triage des stalls, un plancher d’espacement sub-seconde entre surfaces avec télémétrie d’admission, une pause 429 par chat derrière un seul accesseur Cooldown, et les liens markdown vers des fichiers locaux livrés comme documents (#1927, #1916, #1968)
-
Cycle de vie des sessions ACP v1 (v0.5.5) : les cinq méthodes v1 du cycle de vie des sessions sont implémentées et le plan est publié comme une mise à jour de plan v1 native (#1815)
-
Pied de dialogue partagé, URLs cliquables, timeline d’onboarding (v0.5.5) : tous les dialogues partagent un seul command footer avec des verbes d’approbation a/r directs, les URLs et les chemins de fichiers sont cliquables, et l’onboarding a été reconstruit en une timeline d’étapes à gauche avec des commandes de configuration directes (#1775, #1772, #1979, #1980, #1981, #1982)
-
Retraite des cron one-shot (v0.5.5) : les jobs one-shot se retirent à la livraison au lieu de se redéclencher un an plus tard, chaque exécution livrée porte son run id, et les rapports cron de Discord arrivent en un seul post de forum (#544, #1703, #1851)
-
Premier lancement sans configuration (v0.5.11) : une installation neuve arrive directement dans le chat avec le provider intégré déjà provisionné,
config.tomletkeys.tomlcréés, et l’agent qui vous salue. L’assistant est optionnel via/onboardou--onboard(#2079) -
Un premier tour qui ne peut plus interrompre le processus (v0.5.11) : les threads worker de l’agent tournent sur une pile de 16 MiB, donc le premier tour ne déborde plus la pile par défaut (#2080)
-
Tags de release conditionnés à un CI vert (v0.5.11) : le workflow de release lit la conclusion du run CI du commit lui-même avant de publier. Un run rouge fait échouer la release, un run encore en cours est attendu, et un commit sans run échoue aussi (#2078)
-
Evolve redémarre les bonnes unités (v0.5.11) : le redémarrage planifié cible des noms d’unités résolus au lieu du glob de découverte
opencrabs*.service, qui correspondait aussi à l’unité transitoire qui exécute le redémarrage et faisait que systemd arrêtait son propre exécuteur (#2081) -
Les guest queries de Telegram disposent de la surface complète (v0.5.12) : un tag dans un chat où le bot n’a jamais été invité exécute la même surface d’outils, le même bloc de statut en direct et le même rendu rich qu’un tour normal, avec un tour annulable par guest session et du rate limiting (#2087, #2109, #2133, #2135, #2138, #2143)
-
Un plan est exigé au-delà d’un seuil de tool calls (v0.5.12) : lorsqu’un tour dépasse un seuil de tool calls, l’agent doit s’arrêter et écrire un plan avant de continuer (#2128)
-
Le transcript survit au changement de session (v0.5.12) : la carte des plis est indexée par une ancre stable de role et de timestamp au lieu d’un UUID généré à chaque rendu, donc changer de session et revenir ne replie plus tous les tours que vous aviez ouverts (#2155)
-
Les installations headless provisionnent le provider intégré (v0.5.12) :
opencrabs run,daemon,agent,acpetcroncréent le token intégré sur un home neuf comme le faisait déjà la TUI, tandis questatusetdoctorrestent en lecture seule (#2151) -
Mode de réparation doctor –fix (v0.3.83): lignes cron bloquées, markers périmés et permissions cassées sont réparées sur-le-champ au lieu d’être seulement signalées
-
Verrous d’écriture par chemin (v0.3.83): les écritures concurrentes vers un même fichier se sérialisent ; le dernier écrivain ne gagne plus silencieusement
-
Isolation de worktree des sous-agents (v0.3.83): chaque agent enfant reçoit son propre worktree et branch, donc un fan-out ne peut pas écraser l’arbre partagé
-
Critères d’acceptation sensibles au type (v0.3.83): les critères du plan sont appliqués contre la toolchain que le projet utilise réellement (#1133)
-
Vérification de plan consciente du projet (v0.3.83), les plans vérifient avec les commandes propres du projet, pas toujours cargo, et trouvent le projet depuis le dossier de la session
-
/stop annule immédiatement (v0.3.83): interrompt pendant le handshake du provider et les backoffs de retry (#1148)
-
Reprise de session A2A (v0.3.83): les sessions reprennent par context id, la passerelle est adressée par profile (#1159, #1161)
-
Réglages de thinking DeepSeek (v0.3.83): DeepSeek reçoit les paramètres de thinking qu’il lit réellement, plus le traitement des turns à tool-call uniquement
-
Corrélation de logs par session_id (v0.3.82): chaque turn ouvre un tracing span portant son session id, et les cron jobs ainsi que le moteur RSI ont les leurs, donc un seul grep reconstruit un turn entier depuis un log quotidien partagé
-
Fiabilité du logger (v0.3.82): le logger cesse de perdre des événements et cesse d’écrire dans le terminal du TUI ; une écriture bloquée ne peut plus faire taire le logging de toutes les autres threads
-
Fichiers brain de l’utilisateur protégés (v0.3.82): SOUL.md, USER.md et MEMORY.md ne reçoivent jamais de merge depuis l’upstream, et les directives sont routées vers AGENTS.md, qui est toujours chargé
-
Unification des sections de config (v0.3.82): l’orthographe historique
[gateway]est migrée sur disque vers[a2a], donc un seul nom survit à un aller-retour de reload -
Cache par hash de chunk (v0.3.82): la mémoire saute le ré-embedding des chunks dont le contenu n’a pas changé
-
Binaires de pre-release (v0.3.82): cinq cibles de plateforme plus SHA256SUMS, publiés en pre-release continue pour que les contributeurs testent du code non publié sans attendre une tag. Lancé à la demande, pas à chaque push
-
Abandon sur rate-limit (v0.3.82): une longue fenêtre de rate-limit Telegram rend la main immédiatement au lieu de parquer l’envoi en file
-
Store de mémoire in-tree (v0.3.81): la dépendance qmd est abandonnée ; recherche vectorielle + SQLite FTS5 détenue in-tree
-
Chemins d’index externes (v0.3.81): la recherche de mémoire lit des index hors du répertoire du profile, default-deny dans les sessions partagées
-
Mermaid en images sur Telegram (v0.3.81): les diagrammes s’affichent en images tandis que les tableaux gardent le formatage natif
-
Reasoning Qwen entre les turns (v0.3.81): preserve_thinking, réglages de thinking gated par famille, palier d’effort recommandé par défaut, Qwen hébergé accessible partout
-
Correctif de perte de clés keys.toml (v0.3.81), les clés API des providers ne se perdent plus à l’exécution ; les clés empoisonnées s’auto-réparent
-
Détection précoce de boucles (v0.3.81): les rondes d’outils répétitives sont interceptées avant que le provider rejette le turn
-
Gate du moteur RSI (v0.3.81): RSI autonome désactivé par défaut pour les daemons headless, activez avec
rsi_enabled -
Portée du memory_search (v0.3.80): fouillez les logs quotidiens (
memory), les fichiers brain (brain), ou les deux (all) ; les fichiers brain sont indexés à l’écriture -
Récupération de mémoire par chunks (v0.3.80): documents découpés en chunks avant embedding pour que les chunks ultérieurs soient cherchables ; rappel classé avec BM25
-
Rendu natif Slack (v0.3.80): tableaux et titres arrivent dans la forme propre de Slack au lieu de markdown brut
-
Commandes de channel réservées au owner (v0.3.80): commandes et skills personnalisés sont réservés au owner sur le bras catch-all des channels en groupe
-
Gates de convergence RSI (v0.3.80): l’auto-amélioration se met en pause à la convergence, recule sur les séries sans amélioration, hache les constats par identité stable
-
Gardes de boucle (v0.3.80): gardes de répétition d’annonces et de quasi-correspondances sur tous les outils ; les kills du détecteur de boucle atteignent la chaîne de fallback
-
Mode inventaire du navigateur (v0.3.80):
browser_findnu énumère chaque élément cliquable de la page -
Mise à jour des templates de fichiers brain (v0.3.80), les templates AGENTS.md, BOOT.md et SOUL.md ont changé ; le seeding n’écrase jamais les fichiers existants, donc faites un diff contre
src/docs/reference/templates/et fusionnez à la main si vous voulez les nouveaux défauts -
Reconstruction du brain système: fichiers brain reconstruits depuis le disque quand ils changent, sans redémarrage
-
Découverte proactive d’outils: cherche les outils disponibles avant de prétendre une incapacité
-
Analyseur de prompts multilingue (v0.3.67): PromptAnalyzer partagé avec soft-nudge sur TUI et Telegram, 6 packs de langue (EN/ES/FR/ID/PT/RU)
-
Mode plan (v0.3.67-v0.3.68): tracks design/checklist, carte de plan persistante, commande
/plan <query>, auto-appréciation de l’agent quand l’utilisateur accorde l’autonomie -
Clic-pour-déplier (v0.3.69): clic gauche sur un bloc de tool-call ou de reasoning pour déplier juste ce bloc, en complément de Ctrl+O
-
review_gate des skills (v0.3.70): déclaration frontmatter pour les skills critiques qui exigent l’approbation de l’utilisateur avant les effets de bord
-
Activation JIT des outils: outils étendus activés à la demande, sans pré-enregistrement
-
Auto-réparation de la config: répare automatiquement un config.toml cassé, n’empoisonne jamais la dernière bonne config
-
Gestion du budget de contexte: seuils de compaction 65 % souple / 90 % strict avec fallback LLM
-
Détection de streams bloqués: une fenêtre glissante de 2048 octets intercepte les motifs répétitifs
-
Défense contre le gaslighting: retire les préambules de refus d’outils en cours de turn
-
Livraison des résultats de build (v0.3.61): les résultats de rebuild/evolve atteignent celui qui a demandé, à travers les channels et le TUI
Interface terminal (TUI)
- Rendu markdown natif: emphase, listes, liens et éléments de tâche s’affichent directement dans le terminal
- Compteur de tok/s en temps réel: tokens par seconde en direct pendant le streaming
- Affichage de la version (v0.3.73): affiche la version en cours dans l’en-tête du TUI et dans le /help + /usage des channels
- Dépliage de reasoning en 3 états (v0.3.74): clic ou Ctrl+O fait cycler un bloc de reasoning replié → plafonné → complet, pour ne jamais noyer la vue
- En-têtes par turn (v0.3.75): chaque turn reçoit un en-tête de résumé d’une ligne, son raisonnement s’y replie, et les turns sont repliés par défaut pour garder la vue propre
- Groupement des tool calls (v0.3.61): les appels d’outils consécutifs se replient en un seul bloc dépliable, gardant le TUI propre pendant les opérations multi-étapes
- Repli du texte intermédiaire (v0.3.61): le texte de traitement intermédiaire se replie dans le même log en place que les tool calls, donc seule la réponse finale reste visible
- Recherche de sessions: filtre de recherche + défilement de viewport sur toutes les sessions
- Panneaux divisés: sessions parallèles façon tmux avec persistance du layout
- Collage d’images du presse-papiers: collez des images du navigateur ou de n’importe quelle app directement dans le TUI
- Épinglage du plan: le plan actif est épinglé en fin de prompt à chaque turn
- Onboarding piloté par l’agent: configuration initiale personnalisée avec flux guidé
- Boucle autonome
/goal: fixez un objectif et l’agent boucle jusqu’à ce qu’un juge LLM dise que c’est fini, avec contrôles pause/resume/status - Auto-objectifs (v0.3.61): l’agent peut fixer et piloter ses propres objectifs multi-turn via l’outil
goal_managesans que l’utilisateur invoque/goal
Expérience développeur
- Plus de 50 outils intégrés: opérations fichiers, bash, recherche web, exécution de code, automatisation de navigateur, génération d’images, voix, rendu PDF
- Recherche web parallèle unifiée (v0.3.73): web_search, exa_search et brave_search se déploient en parallèle sous un unique outil web_search
- web_scrape: scraping natif d’URL vers markdown avec protection SSRF, crawl de sitemaps, détection de JS-shell et export conscient du profile
- Détection de captcha DDG (v0.3.73): détecte le captcha DuckDuckGo via HTTP 202 + vérification structurelle de formulaire
- Skill /github intégrée: contrôle total du gh CLI pour issues, PR, revues de code, gestion de repo
- Découverte proactive d’outils: l’agent trouve les outils avant de dire “je ne peux pas”
- Système de skills: templates de workflow avec fuzzy-finding, enregistrées automatiquement comme slash commands
- Outils dynamiques: définis à l’exécution via TOML (exécuteurs HTTP + shell)
- Système de projets: sessions dédiées avec overlays de brain par projet, archivage de fichiers et badges couleur
- Édition hashline: édition de fichiers ancrée par hash avec support de lot et détection de collisions
- Mission Control: tableau de bord plein écran avec inbox RSI, log d’activité et planning cron
- RTK auto-download: proxy de 4 Mo inclus pour 53,5 % d’économie de tokens sur plus de 100 commandes
- Protection des fichiers confidentiels: clés SSH, .env, identifiants protégés par défaut
- AGENTS toujours chargé: règles strictes et gouvernance appliquées à chaque turn
- debug_logs piloté par la config (v0.3.71): basculez les logs de debug avec hot-reload, sans redémarrage
- Portée de la rédaction des secrets (v0.3.71): limitez la rédaction à global/groupe/DM avec la commande
/redact - Portée de la rédaction des secrets (v0.3.71): limitez la rédaction à global/groupe/DM avec la commande
/redact - debug_logs piloté par la config (v0.3.71): basculez les logs de debug avec hot-reload, sans redémarrage
- Watchdog tmux (v0.3.71): kill du seul panneau, avis de 30 s, re-attach automatique
- Plan-gate à trois états (v0.3.71): GateDecision avec bash passant à l’approbation dans l’Editing post-init
- ToolHints façon MCP (v0.3.71): modèle de risque pour la classification des outils, pilote le plan gate
Browser Automation
- Support CDP complet: naviguer, cliquer, saisir, screenshot, évaluer du JS, trouver des éléments
- Mode headless ou headed avec screenshots spécifiques par élément
- Persistance des cookies/sessions entre les sessions de navigateur
- Isolation d’onglets par session: pas de piétinement de DOM entre sessions
Découverte des directives de projet (v0.3.59)
OpenCrabs découvre automatiquement les fichiers de règles que d’autres outils de codage IA déposent dans un repo. Pointez l’agent sur n’importe quel dépôt (via /cd, un workspace de channel, ou en le lançant à l’intérieur) et il scanne les conventions livrées par Claude Code, Cursor, Windsurf, Cline, Gemini CLI, GitHub Copilot, OpenCode et le standard inter-outils AGENTS.md. Pas de config, pas d’étape d’import.
| Source | Fichiers |
|---|---|
| Standard inter-outils | AGENTS.md |
| Claude Code | CLAUDE.md, CLAUDE.local.md, .claude/CLAUDE.md, .claude/rules/**/*.md |
| Cursor | .cursorrules, .cursor/rules/**/*.mdc |
| Windsurf | .windsurfrules |
| Cline | .clinerules (file or .clinerules/**/*.{md,txt}) |
| Gemini CLI | GEMINI.md |
| GitHub Copilot | .github/copilot-instructions.md |
| OpenCode | .opencode/AGENTS.md |
L’index se reconstruit quand vous faites /cd vers un nouveau répertoire, donc les fichiers de directives sont toujours à jour.
Démarrage rapide
# Installer (Linux/macOS)
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
OS=$(uname -s | tr A-Z a-z)
TAG=$(command -v jq >/dev/null 2>&1 && curl -s https://api.github.com/repos/opencrabs/opencrabs/releases/latest | jq -r .tag_name || curl -s https://api.github.com/repos/opencrabs/opencrabs/releases/latest | grep -o '"tag_name":"[^"]*"' | cut -d'"' -f4)
curl -fsSL "https://github.com/opencrabs/opencrabs/releases/download/${TAG}/opencrabs-${TAG}-${OS}-${ARCH}.tar.gz" | tar xz
./opencrabs
# Ou via Cargo (nécessite Rust 1.94+)
cargo install opencrabs --locked
Auto-update activé par défaut. Désactivez avec [agent] auto_update = false dans ~/.opencrabs/config.toml.
Architecture
┌─────────────────────────────────────────┐
│ OpenCrabs Binary │
│ (Single 34-36 MB Rust executable) │
├─────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ TUI │ │ CLI Daemon │ │
│ │ (crossterm)│ │ (systemd/launchd)││
│ └─────────────┘ └─────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Provider Registry │ │
│ │ 15 built-in + Custom OpenAI │ │
│ │ Sticky fallback chain │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Tool Layer │ │
│ │ 50+ built-in tools │ │
│ │ Dynamic tools via TOML │ │
│ │ JIT activation │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Channel Adapters │ │
│ │ Telegram / Discord / Slack / │ │
│ │ WhatsApp / Trello / Voice │ │
│ └────────────────���────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Self-Healing Layer │ │
│ │ Context budget / Stuck stream │ │
│ │ Phantom detection / RSI │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Persistence │ │
│ │ SQLite + Brain files │ │
│ │ FTS5 + vector search │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
Prochaines étapes
- Installation: Installer et configurer
- Configuration: Toutes les options de config
- Providers: Connectez vos backends LLM
- Channels: Connectez Telegram, Discord, etc.
- Outils: Explorez plus de 50 capacités intégrées
- Self-Healing: Fonctionnalités de résilience
- Multi-Agent: Orchestrez sous-agents et équipes
Communauté et support
- Communauté Telegram: rejoignez le groupe OpenCrabs pour questions, astuces et discussions de release
- Sponsorisez sur GitHub: soutenez le projet et gardez les crabs nourris
- Buy Me a Coffee: soutien ponctuel si OpenCrabs vous a épargné un après-midi
Un bug ou une envie de fonctionnalité ? Ouvrez une issue sur GitHub.