Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CLI Commands

OpenCrabs a une CLI complète avec plus de 20 sous-commandes pour gérer chaque aspect de l’agent.

Utilisation

opencrabs [COMMAND] [OPTIONS]

Commandes

CommandeDescription
chat (par défaut)Lance l’interface de chat TUI
daemonTourne en arrière-plan (channels uniquement, sans TUI)
agentChat interactif multi-turn ou mode message unique
runExécute un prompt unique de façon non interactive ; --quiet supprime le chrome de l’UI pour un stdout pur machine, --format choisit text/json/markdown (v0.5.4)
cronGère les tâches planifiées (add/list/remove/enable/disable/test)
channelGestion des channels (list, doctor)
memoryGestion de la mémoire (list, get, stats, prune)
sessionGestion des sessions (list, get)
dbGestion de la base de données (init, stats, clear)
logsGestion des logs (status, view, clean, open)
serviceGestion du service système (install/start/stop/restart/status/uninstall)
statusAffiche l’état de l’agent
doctorLance un contrôle de santé des connexions ; --fix répare les lignes cron bloquées, markers périmés et permissions (v0.3.83)
onboardLance l’assistant de configuration
completionsGénère les completions shell (bash/zsh/fish/powershell)
versionAffiche les informations de version
!commandOpérateur bang: Exécute n’importe quelle commande shell instantanément sans aller-retour LLM. La sortie s’affiche en message système. Ex. : !git status, !ls -la
/evolveAuto-update: Télécharge la dernière release et fait un hot-restart. S’exécute automatiquement au démarrage quand [agent] auto_update = true
/restartRedémarrer (v0.3.79): Relance le même binaire avec les mêmes arguments, donc rien de la façon dont il a été lancé n’a à être connu ou répété. Les turns inachevés reprennent automatiquement au démarrage. Dans le TUI, il reprend la session en cours. Réservé au owner sur les channels ; annonce avant d’agir.
/exitArrêt (v0.3.79): Éteint OpenCrabs. Le relancer nécessite l’accès à la machine où il tourne, donc c’est l’unique commande sans retour possible depuis le chat. Réservé au owner sur les channels ; annonce avant d’agir.
/clearSession fraîche (v0.5.2): Ferme la session courante et en démarre une vierge sur place, sans l’appel au summariser, donc c’est instantané. Réservé à l’owner sur les channels.
/btwAgent parallèle: Crée un sous-agent isolé pour une tâche annexe pendant que la conversation principale continue. Ex. : /btw research the latest Rust async patterns
/mission-controlMission Control: Tableau de bord plein écran montrant l’inbox RSI (propositions en attente), le log d’activité (améliorations appliquées) et le planning cron. Naviguez aux touches vim, appliquez/rejetez les propositions avec a/r.
/skillsSélecteur de skills: Parcourez et lancez des templates de workflow avec fuzzy-finding. Chaque skill chargée s’enregistre automatiquement comme slash command.
/security-auditAudit de sécurité: Audit de sécurité et CVE complet, agnostique du langage. Détecte le type de projet, lance le bon scanner, examine le diff récent pour des motifs d’injection/auth/crypto, note de 0 à 100.
/cost-estimateEstimation de coût: Estimation du coût de construction du codebase, décomposition du ROI assisté par IA et valorisation au prix du marché. Demande le contexte business avant de produire la fourchette de valorisation.
/repo-auditAudit de repo: Contrôles de santé du dépôt, agnostiques du langage. Pipeline en 5 phases : détection du langage → exécution d’outils natifs → métriques git → analyse AST → scoring + recommandations. Couvre Rust, JS/TS, Python, Go.
/goalBoucle d’objectif autonome: Fixez un objectif avec /goal <texte> et l’agent boucle en autonomie : exécution, auto-évaluation par un juge LLM, et continuation jusqu’à satisfaction de l’objectif ou épuisement du budget de turns (20 par défaut). Supporte /goal pause, /goal resume, /goal status, /goal clear.
/models <provider/model>Changement de model direct (v0.3.66): Changez directement vers un model précis sur chaque channel. Utilisez /models anthropic/claude-sonnet-4-20250514 pour basculer immédiatement. Le sélecteur de portée vous laisse choisir session seule ou portée globale.
opencrabs session set-modelChangement de model headless (v0.3.66): Changez de models depuis la CLI sans le TUI. Utile pour les scripts et l’automatisation.

Flags de configuration

FlagDéfautDescription
[agent] auto_updatetrueInstalle automatiquement les nouvelles releases au démarrage et fait un hot-restart. Mettez false pour garder le dialogue manuel.
[agent] force_defaultfalse(v0.3.66) Quand true, pousse le couple provider/model par défaut vers toutes les sessions au reload de la config. Utile pour imposer un changement de model global.
[agent] config_drift_warningstrue(v0.3.66) Affiche des avertissements au démarrage quand une valeur de config dérive silencieusement du défaut attendu. Aide à attraper les changements de config non intentionnels.

Raccourcis clavier (TUI)

RaccourciAction
F12Active/désactive la capture de la souris pour la sélection de texte native du terminal

Invite de mise à jour au démarrage

Quand une nouvelle version est disponible, un dialogue centré apparaît sur l’écran de splash pour accepter (Entrée) ou passer (Échap). Accepter déclenche /evolve automatiquement. Après la mise à jour, le binaire redémarre et le splash affiche la nouvelle version.

Commandes de channel

Le /doctor, /help, /usage, /evolve, /restart, /exit et les commandes système fonctionnent directement sur Telegram, Discord, Slack et WhatsApp sans passer par le LLM. Elles s’exécutent instantanément et renvoient les résultats dans le channel.

Le /restart et le /exit s’annoncent avant d’agir, parce qu’une fois le processus disparu, il ne reste rien pour signaler un échec. Les deux sont réservés au owner, comme chaque commande qui modifie le processus en cours. Le /exit est l’unique commande sans retour depuis le chat, la récupération nécessite l’accès à la machine où tourne OpenCrabs.

Depuis la v0.3.80, un stop parlé est aussi respecté, dire au bot d’arrêter en langage naturel fonctionne sur les channels et dans le TUI, pas seulement le mot sec « stop ».

Toute la logique de commandes de channel est centralisée dans src/channels/commands.rs (847 lignes), un handler partagé qui élimine la logique dupliquée à travers 5 implémentations de channel. Chaque channel délègue à try_execute_text_command() pour un comportement cohérent.

Le /evolve sur les channels s’exécute maintenant directement (télécharge + installe le binaire) sans demander d’aller-retour LLM. Auparavant il passait par l’agent.

Mode chat

# Par défaut: lancer le TUI
opencrabs

# Identique à ci-dessus
opencrabs chat

Mode agent

Mode non interactif pour le scripting et l’automatisation :

# Chat interactif multi-turn
opencrabs agent

# Mode message unique
opencrabs agent -m "What files changed today?"

Mode daemon vs TUI

OpenCrabs tourne dans un de deux modes. Choisissez celui qui convient à la machine. Pour un profile donné, n’en lancez qu’un à la fois.

ModeComment vous le lancezCe que c’estÀ utiliser sur
TUI (interactif)opencrabsL’interface terminal complète : panneaux de chat, sessions, réglages. Vos channels tournent aussi et partagent votre session.Une machine où vous êtes assis (laptop/desktop)
Daemon (headless)opencrabs daemon, or install as a service: opencrabs service install && opencrabs service startPas d’UI. Channels uniquement (Telegram, Discord, Slack, WhatsApp) + cron. Survit aux reboots, déconnexions SSH et plantages.Une machine toujours allumée ou un VPS

Pourquoi pas les deux à la fois ?

Une credential de bot (ex. un token Telegram) ne peut tenir qu’un seul poll getUpdates actif. Si un daemon et un TUI possèdent tous deux le token du même profile, ils se battent (HTTP 409) et le channel tombe.

Le TUI gagne toujours

Quand vous ouvrez le TUI pendant qu’un daemon du même profile tourne, le TUI ferme d’abord ce daemon, reprend les channels et affiche un banner pour le dire. Vos channels étaient déjà configurés, donc ils reprennent simplement, sans reconnexion. Le daemon reste éteint jusqu’à ce que vous le relanciez (opencrabs service start, ou relancez opencrabs daemon).

Sur une machine où le daemon tourne habituellement, le flux quotidien est : ouvrez opencrabs quand vous voulez vous y mettre ; fermez le TUI et opencrabs service start quand vous le voulez à nouveau headless.

Démarrage auto au boot

  • Daemon: utilisez l’installeur de service (opencrabs service install) ; il câble systemd (Linux) / launchd (macOS) pour démarrer au boot et redémarrer après un plantage. C’est la configuration always-on recommandée.
  • TUI: pour que l’interface terminal s’ouvre automatiquement à la connexion, utilisez un autostart de terminal/desktop, pas l’installeur de service :
    • Desktop Linux : déposez un fichier .desktop dans ~/.config/autostart/ avec Exec=x-terminal-emulator -e opencrabs.
    • macOS : Réglages Système > Général > Éléments de connexion > ajoutez un script .command qui lance opencrabs.
    • VPS par SSH : tournez dans tmux/screen et rattachez-vous. Sur un VPS headless, vous voulez généralement le daemon, pas le TUI.

Fortement recommandé pour les utilisateurs quotidiens. Si vous comptez utiliser OpenCrabs tous les jours, demandez-lui de s’installer comme service système. Dites simplement « installe-toi pour démarrer avec mon ordinateur » ou « retire le service de démarrage auto ». L’agent gère la mise en place et la suppression launchd (macOS) ou systemd (Linux) automatiquement pour vous.

Garder le TUI actif sur un VPS (tmux)

Si vous voulez le TUI interactif complet toujours disponible sur un serveur distant (pas le daemon headless), tmux est la solution. Votre session survit aux déconnexions SSH, à la veille du laptop et aux connexions capricieuses.

1. Installez tmux

# Debian / Ubuntu
sudo apt install tmux

# RHEL / CentOS / Fedora
sudo yum install tmux

2. Trouvez où opencrabs est installé

which opencrabs

# Si cela ne renvoie rien, cherchez tout le système de fichiers
find / -name "opencrabs" -type f 2>/dev/null

3. Démarrez une session tmux nommée

tmux new -s opencrabs

4. Lancez opencrabs dedans

opencrabs

5. Détachez (opencrabs continue de tourner)

Pressez Ctrl+B puis D. Vous pouvez maintenant fermer SSH et opencrabs continue de tourner.

6. Rattachez-vous plus tard

tmux attach -t opencrabs

C’est tout. Revenez de n’importe quelle machine, rattachez-vous, et reprenez où vous en étiez. Si vous n’avez besoin que des channels (Telegram, Discord, Slack, WhatsApp) en headless sans le TUI, le daemon convient mieux : opencrabs service install && opencrabs service start.

Endpoint de santé

Ajoutez au config.toml pour exposer un health check :

[daemon]
health_port = 8080

Ensuite GET http://localhost:8080/health renvoie 200 OK avec un statut JSON. Utile pour un watchdog systemd, des moniteurs d’uptime ou des load balancers.

Gestion du service

Installez OpenCrabs comme service système (launchd sur macOS, systemd sur Linux) :

opencrabs service install
opencrabs service start
opencrabs service stop
opencrabs service restart
opencrabs service status
opencrabs service uninstall

Services sensibles au profile

Chaque profile reçoit son propre service indépendant :

# Installer un profile précis comme service
opencrabs -p hermes service install
opencrabs -p hermes service start

# Chaque profile reçoit son propre nom de service
# macOS: com.opencrabs.daemon.hermes
# Linux: opencrabs-hermes.service

# Gérer indépendamment
opencrabs -p hermes service status
opencrabs -p hermes service stop
opencrabs -p hermes service uninstall

Plusieurs profiles peuvent tourner comme services daemon simultanés avec isolation complète.

Variable d’environnement OPENCRABS_PROFILE

Définissez OPENCRABS_PROFILE=hermes pour sélectionner un profile sans le flag -p. Utile pour les services systemd, les cron jobs et le mode daemon.

Dépannage : le daemon ne remonte pas

Si opencrabs service status dit stopped :

  1. Avez-vous ouvert le TUI ? Ouvrir opencrabs éteint délibérément le daemon pour que la session interactive possède les channels. Le daemon reste éteint jusqu’à ce que vous relanciez opencrabs service start.
  2. Les anciennes builds peuvent encore avoir Restart=on-failure au lieu de Restart=always. Régénérez l’unit avec opencrabs service install (puis service start) pour adopter la politique de redémarrage permanent.
  3. Config, clés, commandes et outils se rechargent à chaud à l’exécution. Éditer config.toml ou keys.toml ne nécessite jamais de redémarrage du daemon. Si un changement ne prend pas effet, cherchez dans les logs une ligne ConfigWatcher: reloaded plutôt que de redémarrer.

Gestion du cron

# Lister tous les cron jobs
opencrabs cron list

# Ajouter un nouveau cron job
opencrabs cron add \
  --name "Daily Report" \
  --cron "0 9 * * *" \
  --tz "America/New_York" \
  --prompt "Check emails and summarize" \
  --provider anthropic \
  --model claude-sonnet-4-20250514 \
  --thinking off \
  --deliver-to telegram:123456

# Remove a cron job (accepts name or ID)
opencrabs cron remove "Daily Report"

# Enable/disable (accepts name or ID)
opencrabs cron enable "Daily Report"
opencrabs cron disable "Daily Report"

Raccourcis clavier du TUI

ToucheAction
EnterEnvoyer le message
EscAnnuler / fermer
Ctrl+NNouvelle session
Ctrl+LÉcran des sessions
Ctrl+KEffacer la session en cours
Ctrl+OBasculer le repli du groupe d’outils
|Diviser le panneau horizontalement
_Diviser le panneau verticalement
Ctrl+XFermer le panneau actif
TabCycler le focus des panneaux / Accepter l’autocomplétion
Up/DownNaviguer les suggestions / sessions
/Démarrer une slash command (ex. /help, /models)
:Ouvrir le sélecteur d’emoji