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 tiene una CLI completa con más de 20 subcomandos para gestionar todos los aspectos del agente.

Uso

opencrabs [COMMAND] [OPTIONS]

Comandos

ComandoDescripción
chat (default)Lanza la interfaz de chat TUI
daemonEjecuta en segundo plano (solo canales, sin TUI)
agentChat interactivo multi-turno o modo de mensaje único
runEjecuta 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)
cronGestiona tareas programadas (add/list/remove/enable/disable/test)
channelGestión de canales (list, doctor)
memoryGestión de memoria (list, get, stats, prune)
sessionGestión de sesiones (list, get)
dbGestión de la base de datos (init, stats, clear)
logsGestión de logs (status, view, clean, open)
serviceGestión del servicio del sistema (install/start/stop/restart/status/uninstall)
statusMuestra el estado del agente
doctorEjecuta el chequeo de salud de conexiones; --fix repara filas de cron atascadas, marcadores obsoletos y permisos (v0.3.83)
onboardEjecuta el asistente de configuración
completionsGenera autocompletado de shell (bash/zsh/fish/powershell)
versionMuestra información de la versión
!commandOperador 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
/evolveAuto-actualización: Descarga el último release y reinicia en caliente. Se ejecuta automáticamente al arrancar cuando [agent] auto_update = true
/restartReinicio (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.
/exitApagado (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.
/clearSession 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.
/btwAgente 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-controlMission 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.
/skillsSelector de skills: Explora y lanza plantillas de workflow con búsqueda difusa. Cada skill cargada se auto-registra como comando slash.
/security-auditAuditorí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-estimateEstimació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-auditAuditorí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.
/goalBucle 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-modelCambio 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

FlagPor defectoDescripción
[agent] auto_updatetrueAuto-instala nuevos releases al arrancar y reinicia en caliente. Pon false para mantener el diálogo manual.
[agent] force_defaultfalse(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_warningstrue(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)

AtajoAcción
F12Activa/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.

ModoCómo lo arrancasQué esÚsalo en
TUI (interactiva)opencrabsLa 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 startSin 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 .desktop en ~/.config/autostart/ con Exec=x-terminal-emulator -e opencrabs.
    • macOS: Ajustes del Sistema > General > Elementos de Inicio > añade un script .command que ejecute opencrabs.
    • VPS por SSH: ejecuta dentro de tmux/screen y reengánchate. En un VPS headless normalmente quieres el daemon, no la TUI.

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:

  1. ¿Abriste la TUI? Abrir opencrabs apaga deliberadamente el daemon para que la sesión interactiva posea los canales. El daemon permanece apagado hasta que hagas opencrabs service start de nuevo.
  2. Las builds antiguas pueden tener aún Restart=on-failure en vez de Restart=always. Regenera la unidad con opencrabs service install (luego service start) para adoptar la política de reinicio siempre.
  3. La config, las claves, los comandos y las herramientas se recargan en caliente en tiempo de ejecución. Editar config.toml o keys.toml nunca necesita reiniciar el daemon. Si un cambio no surte efecto, busca en los logs una línea ConfigWatcher: reloaded en 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

TeclaAcción
EnterEnviar mensaje
EscCancelar / cerrar
Ctrl+NNueva sesión
Ctrl+LPantalla de sesiones
Ctrl+KLimpiar la sesión actual
Ctrl+OAlternar el plegado del grupo de herramientas
|Dividir panel horizontalmente
_Dividir panel verticalmente
Ctrl+XCerrar el panel enfocado
TabRotar el foco del panel / Aceptar autocompletado
Up/DownNavegar sugerencias / sesiones
/Iniciar comando slash (p. ej. /help, /models)
:Abrir el selector de emoji