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
| Commande | Description |
|---|---|
chat (par défaut) | Lance l’interface de chat TUI |
daemon | Tourne en arrière-plan (channels uniquement, sans TUI) |
agent | Chat interactif multi-turn ou mode message unique |
run | Exé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) |
cron | Gère les tâches planifiées (add/list/remove/enable/disable/test) |
channel | Gestion des channels (list, doctor) |
memory | Gestion de la mémoire (list, get, stats, prune) |
session | Gestion des sessions (list, get) |
db | Gestion de la base de données (init, stats, clear) |
logs | Gestion des logs (status, view, clean, open) |
service | Gestion du service système (install/start/stop/restart/status/uninstall) |
status | Affiche l’état de l’agent |
doctor | Lance un contrôle de santé des connexions ; --fix répare les lignes cron bloquées, markers périmés et permissions (v0.3.83) |
onboard | Lance l’assistant de configuration |
completions | Génère les completions shell (bash/zsh/fish/powershell) |
version | Affiche les informations de version |
!command | Opé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 |
/evolve | Auto-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 |
/restart | Redé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. |
/exit | Arrê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. |
/clear | Session 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. |
/btw | Agent 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-control | Mission 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. |
/skills | Sélecteur de skills: Parcourez et lancez des templates de workflow avec fuzzy-finding. Chaque skill chargée s’enregistre automatiquement comme slash command. |
/security-audit | Audit 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-estimate | Estimation 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-audit | Audit 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. |
/goal | Boucle 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-model | Changement 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
| Flag | Défaut | Description |
|---|---|---|
[agent] auto_update | true | Installe automatiquement les nouvelles releases au démarrage et fait un hot-restart. Mettez false pour garder le dialogue manuel. |
[agent] force_default | false | (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_warnings | true | (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)
| Raccourci | Action |
|---|---|
F12 | Active/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.
| Mode | Comment vous le lancez | Ce que c’est | À utiliser sur |
|---|---|---|---|
| TUI (interactif) | opencrabs | L’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 start | Pas 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
.desktopdans~/.config/autostart/avecExec=x-terminal-emulator -e opencrabs. - macOS : Réglages Système > Général > Éléments de connexion > ajoutez un script
.commandqui lanceopencrabs. - VPS par SSH : tournez dans
tmux/screenet rattachez-vous. Sur un VPS headless, vous voulez généralement le daemon, pas le TUI.
- Desktop Linux : déposez un fichier
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 :
- 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 relanciezopencrabs service start. - Les anciennes builds peuvent encore avoir
Restart=on-failureau lieu deRestart=always. Régénérez l’unit avecopencrabs service install(puisservice start) pour adopter la politique de redémarrage permanent. - Config, clés, commandes et outils se rechargent à chaud à l’exécution. Éditer
config.tomloukeys.tomlne nécessite jamais de redémarrage du daemon. Si un changement ne prend pas effet, cherchez dans les logs une ligneConfigWatcher: reloadedplutô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
| Touche | Action |
|---|---|
Enter | Envoyer le message |
Esc | Annuler / fermer |
Ctrl+N | Nouvelle session |
Ctrl+L | Écran des sessions |
Ctrl+K | Effacer la session en cours |
Ctrl+O | Basculer le repli du groupe d’outils |
| | Diviser le panneau horizontalement |
_ | Diviser le panneau verticalement |
Ctrl+X | Fermer le panneau actif |
Tab | Cycler le focus des panneaux / Accepter l’autocomplétion |
Up/Down | Naviguer les suggestions / sessions |
/ | Démarrer une slash command (ex. /help, /models) |
: | Ouvrir le sélecteur d’emoji |