CLI Commands
OpenCrabs tiene una CLI completa con más de 20 subcomandos para gestionar todos los aspectos del agente.
Uso
opencrabs [COMMAND] [OPTIONS]
Comandos
| Comando | Descripción |
|---|---|
chat (default) | Lanza la interfaz de chat TUI |
daemon | Ejecuta en segundo plano (solo canales, sin TUI) |
agent | Chat interactivo multi-turno o modo de mensaje único |
run | Ejecuta un prompt único de forma no interactiva; --quiet suprime el chrome del UI para stdout limpio de máquina, --format elige text/json/markdown (v0.5.4) |
cron | Gestiona tareas programadas (add/list/remove/enable/disable/test) |
channel | Gestión de canales (list, doctor) |
memory | Gestión de memoria (list, get, stats, prune) |
session | Gestión de sesiones (list, get) |
db | Gestión de la base de datos (init, stats, clear) |
logs | Gestión de logs (status, view, clean, open) |
service | Gestión del servicio del sistema (install/start/stop/restart/status/uninstall) |
status | Muestra el estado del agente |
doctor | Ejecuta el chequeo de salud de conexiones; --fix repara filas de cron atascadas, marcadores obsoletos y permisos (v0.3.83) |
onboard | Ejecuta el asistente de configuración |
completions | Genera autocompletado de shell (bash/zsh/fish/powershell) |
version | Muestra información de la versión |
!command | Operador bang: Ejecuta cualquier comando de shell al instante sin un round-trip al LLM. La salida se muestra como mensaje de sistema. P. ej. !git status, !ls -la |
/evolve | Auto-actualización: Descarga el último release y reinicia en caliente. Se ejecuta automáticamente al arrancar cuando [agent] auto_update = true |
/restart | Reinicio (v0.3.79): Relanza el mismo binario con los mismos argumentos, así que no hay que conocer ni repetir cómo se inició. Los turnos sin terminar se reanudan automáticamente al arrancar. En la TUI reanuda la sesión actual. Solo el owner en canales; anuncia antes de actuar. |
/exit | Apagado (v0.3.79): Apaga OpenCrabs. Arrancarlo de nuevo requiere acceso a la máquina donde corre, así que este es el único comando sin retorno desde el chat. Solo el owner en canales; anuncia antes de actuar. |
/clear | Session nueva (v0.5.2): Cierra la session actual y arranca una en blanco en el mismo sitio, sin la llamada al summariser, así que es instantáneo. Solo para el owner en los channels. |
/btw | Agente paralelo: Lanza un sub-agente aislado para una tarea lateral mientras la conversación principal continúa. P. ej. /btw research the latest Rust async patterns |
/mission-control | Mission Control: Panel a pantalla completa con la bandeja RSI (propuestas pendientes), log de actividad (mejoras aplicadas) y programación de cron. Navega con teclas vim, aplica/rechaza propuestas con a/r. |
/skills | Selector de skills: Explora y lanza plantillas de workflow con búsqueda difusa. Cada skill cargada se auto-registra como comando slash. |
/security-audit | Auditoría de seguridad: Auditoría de seguridad y CVEs completa e independiente del lenguaje. Detecta el tipo de proyecto, ejecuta el scanner adecuado, revisa el diff reciente en busca de patrones de inyección/auth/criptografía, puntúa de 0 a 100. |
/cost-estimate | Estimación de costes: Estimación del coste de construir el código base, desglose de ROI asistido por IA y valoración de mercado. Pide contexto de negocio antes de producir el rango de valoración. |
/repo-audit | Auditoría de repo: Chequeos de salud del repositorio independientes del lenguaje. Pipeline de 5 fases: detección de lenguaje → ejecución de herramientas nativas → métricas git → análisis AST → puntuación + recomendaciones. Cubre Rust, JS/TS, Python y Go. |
/goal | Bucle de objetivo autónomo: Define un objetivo con /goal <texto> y el agente itera de forma autónoma: ejecuta, se autoevalúa con un juez LLM y continúa hasta satisfacer el objetivo o agotar el presupuesto de turnos (20 por defecto). Soporta /goal pause, /goal resume, /goal status, /goal clear. |
/models <provider/model> | Cambio directo de modelo (v0.3.66): Cambia directamente a un modelo específico en cada canal. Usa /models anthropic/claude-sonnet-4-20250514 para cambiar al instante. El selector de ámbito te permite elegir solo-sesión o global. |
opencrabs session set-model | Cambio de modelo headless (v0.3.66): Cambia de modelo desde la CLI sin la TUI. Útil para scripts y automatización. |
Flags de Configuración
| Flag | Por defecto | Descripción |
|---|---|---|
[agent] auto_update | true | Auto-instala nuevos releases al arrancar y reinicia en caliente. Pon false para mantener el diálogo manual. |
[agent] force_default | false | (v0.3.66) Cuando es true, empuja el par proveedor/modelo por defecto a todas las sesiones al recargar la config. Útil para forzar un cambio de modelo global. |
[agent] config_drift_warnings | true | (v0.3.66) Muestra avisos al arrancar cuando un valor de config se desvía en silencio del valor esperado. Ayuda a detectar cambios de config no deseados. |
Atajos de Teclado (TUI)
| Atajo | Acción |
|---|---|
F12 | Activa/desactiva la captura de ratón para la selección de texto nativa de la terminal |
Aviso de Actualización al Arrancar
Cuando hay una versión nueva disponible, aparece un diálogo centrado en la pantalla de splash pidiendo aceptar (Enter) o saltar (Esc). Aceptar dispara /evolve automáticamente. Tras la actualización, el binario se reinicia y el splash muestra la nueva versión.
Comandos de Canal
/doctor, /help, /usage, /evolve, /restart, /exit y los comandos de sistema funcionan directamente en Telegram, Discord, Slack y WhatsApp sin pasar por el LLM. Se ejecutan al instante y devuelven resultados en el canal.
/restart y /exit se anuncian antes de actuar, porque una vez que el proceso desaparece no queda nada que reporte un fallo. Ambos son solo-owner, como cualquier otro comando que cambia el proceso en ejecución. /exit es el único comando sin retorno desde el chat: recuperar requiere acceso a la máquina donde corre OpenCrabs.
Desde v0.3.80, un stop hablado también se respeta, decirle al bot que pare en lenguaje natural funciona en los canales y en la TUI, no solo la palabra suelta “stop”.
Toda la lógica de comandos de canal está centralizada en src/channels/commands.rs (847 líneas), un handler compartido que elimina la lógica duplicada entre 5 implementaciones de canal. Cada canal delega en try_execute_text_command() para un comportamiento consistente.
/evolve en los canales ahora se ejecuta directamente (descarga + instala el binario) sin requerir un round-trip al LLM. Antes se enrutaba a través del agente.
Modo Chat
# Default: launch TUI
opencrabs
# Same as above
opencrabs chat
Modo Agente
Modo no interactivo para scripting y automatización:
# Interactive multi-turn chat
opencrabs agent
# Single-message mode
opencrabs agent -m "What files changed today?"
Modo Daemon vs TUI
OpenCrabs corre en uno de dos modos. Elige el que encaje con la máquina. Para un mismo perfil, ejecuta solo uno a la vez.
| Modo | Cómo lo arrancas | Qué es | Úsalo en |
|---|---|---|---|
| TUI (interactiva) | opencrabs | La interfaz de terminal completa: paneles de chat, sesiones, ajustes. Tus canales también corren y comparten tu sesión. | Una máquina donde te sientas (portátil/escritorio) |
| Daemon (headless) | opencrabs daemon, or install as a service: opencrabs service install && opencrabs service start | Sin UI. Solo canales (Telegram, Discord, Slack, WhatsApp) + cron. Sobrevive a reinicios, desconexiones SSH y fallos. | Una máquina siempre encendida o un VPS |
¿Por qué no ambos a la vez?
Una credencial de bot (p. ej. un token de Telegram) solo puede mantener un poll getUpdates vivo. Si un daemon y una TUI poseen el token del mismo perfil, se pelean (HTTP 409) y el canal se cae.
La TUI siempre gana
Cuando abres la TUI mientras corre un daemon del mismo perfil, la TUI apaga ese daemon primero, toma los canales y muestra un banner avisando de ello. Tus canales ya estaban configurados, así que simplemente se reanudan, sin reconectar. El daemon permanece apagado hasta que lo arranques de nuevo (opencrabs service start, o relanza opencrabs daemon).
En una máquina donde el daemon suele correr, el flujo diario es: abre opencrabs cuando quieras sentarte con él; cierra la TUI y opencrabs service start cuando lo quieras headless de nuevo.
Autoarranque al encender
- Daemon: usa el instalador de servicio (
opencrabs service install); conecta systemd (Linux) / launchd (macOS) para arrancar al encender y reiniciar ante fallos. Esta es la configuración always-on recomendada. - TUI: para que la interfaz de terminal se abra automáticamente al iniciar sesión, usa un autoarranque de terminal/escritorio, no el instalador de servicio:
- Escritorio Linux: deja un archivo
.desktopen~/.config/autostart/conExec=x-terminal-emulator -e opencrabs. - macOS: Ajustes del Sistema > General > Elementos de Inicio > añade un script
.commandque ejecuteopencrabs. - VPS por SSH: ejecuta dentro de
tmux/screeny reengánchate. En un VPS headless normalmente quieres el daemon, no la TUI.
- Escritorio Linux: deja un archivo
Muy recomendado para usuarios diarios. Si planeas usar OpenCrabs a diario, pídele que se configure como servicio del sistema. Solo di algo como “configúrate para arrancar con mi ordenador” o “quita el servicio de autoarranque”. El agente gestiona la configuración y eliminación de launchd (macOS) o systemd (Linux) automáticamente.
Mantén la TUI corriendo en un VPS (tmux)
Si quieres la TUI interactiva completa siempre disponible en un servidor remoto (no el daemon headless), tmux es el camino. Tu sesión sobrevive a desconexiones SSH, suspensión del portátil y conexiones inestables.
1. Instala tmux
# Debian / Ubuntu
sudo apt install tmux
# RHEL / CentOS / Fedora
sudo yum install tmux
2. Localiza dónde está instalado opencrabs
which opencrabs
# If that returns nothing, search the whole filesystem
find / -name "opencrabs" -type f 2>/dev/null
3. Arranca una sesión tmux con nombre
tmux new -s opencrabs
4. Lanza opencrabs dentro
opencrabs
5. Desconéctate (opencrabs sigue corriendo)
Pulsa Ctrl+B y luego D. Ya puedes cerrar SSH y opencrabs sigue corriendo.
6. Reengánchate después
tmux attach -t opencrabs
Eso es todo. Vuelve desde cualquier máquina, reengánchate y continúa donde lo dejaste. Si solo necesitas canales (Telegram, Discord, Slack, WhatsApp) corriendo headless sin la TUI, el daemon encaja mejor: opencrabs service install && opencrabs service start.
Endpoint de Salud
Añade a config.toml para exponer un chequeo de salud:
[daemon]
health_port = 8080
Entonces GET http://localhost:8080/health devuelve 200 OK con estado en JSON. Útil para watchdog de systemd, monitores de uptime o balanceadores.
Gestión del Servicio
Instala OpenCrabs como servicio del sistema (launchd en macOS, systemd en Linux):
opencrabs service install
opencrabs service start
opencrabs service stop
opencrabs service restart
opencrabs service status
opencrabs service uninstall
Servicios conscientes de perfil
Cada perfil recibe su propio servicio independiente:
# Install a specific profile as a service
opencrabs -p hermes service install
opencrabs -p hermes service start
# Each profile gets its own service name
# macOS: com.opencrabs.daemon.hermes
# Linux: opencrabs-hermes.service
# Manage independently
opencrabs -p hermes service status
opencrabs -p hermes service stop
opencrabs -p hermes service uninstall
Varios perfiles pueden correr como servicios daemon simultáneos con aislamiento total.
Variable de entorno OPENCRABS_PROFILE
Define OPENCRABS_PROFILE=hermes para seleccionar un perfil sin el flag -p. Útil para servicios systemd, cron jobs y modo daemon.
Solución de problemas: el daemon no arranca
Si opencrabs service status dice stopped:
- ¿Abriste la TUI? Abrir
opencrabsapaga deliberadamente el daemon para que la sesión interactiva posea los canales. El daemon permanece apagado hasta que hagasopencrabs service startde nuevo. - Las builds antiguas pueden tener aún
Restart=on-failureen vez deRestart=always. Regenera la unidad conopencrabs service install(luegoservice start) para adoptar la política de reinicio siempre. - La config, las claves, los comandos y las herramientas se recargan en caliente en tiempo de ejecución. Editar
config.tomlokeys.tomlnunca necesita reiniciar el daemon. Si un cambio no surte efecto, busca en los logs una líneaConfigWatcher: reloadeden vez de reiniciar.
Gestión de Cron
# List all cron jobs
opencrabs cron list
# Add a new 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"
Atajos de Teclado de la TUI
| Tecla | Acción |
|---|---|
Enter | Enviar mensaje |
Esc | Cancelar / cerrar |
Ctrl+N | Nueva sesión |
Ctrl+L | Pantalla de sesiones |
Ctrl+K | Limpiar la sesión actual |
Ctrl+O | Alternar el plegado del grupo de herramientas |
| | Dividir panel horizontalmente |
_ | Dividir panel verticalmente |
Ctrl+X | Cerrar el panel enfocado |
Tab | Rotar el foco del panel / Aceptar autocompletado |
Up/Down | Navegar sugerencias / sesiones |
/ | Iniciar comando slash (p. ej. /help, /models) |
: | Abrir el selector de emoji |