Plataforma avanzada que permite crear y ejecutar comandos de terminal remotamente a través de una interfaz web intuitiva. Integra inteligencia artificial para generar comandos personalizados
Octubre 06, 2024
React, Node.js, Electron, OpenAI API, WebSocket, Express
Full Stack Developer
Command Executor es una solución integral para la automatización de tareas y la gestión de servidores, diseñada para centralizar la ejecución de comandos de terminal desde una única interfaz web. La plataforma permite a los desarrolladores y administradores de sistemas crear, guardar y ejecutar flujos de trabajo complejos de forma remota, optimizando la eficiencia y reduciendo errores manuales. Incorpora un potente asistente de IA, basado en la API de OpenAI, capaz de generar comandos a partir de descripciones en lenguaje natural, ideal para tareas complejas o poco frecuentes. La comunicación y ejecución se realizan en tiempo real gracias a un cliente de escritorio nativo (Electron) que utiliza WebSockets para un enlace directo y seguro con el servidor, garantizando una experiencia fluida y sin interrupciones.
Execute terminal commands remotely with Command Executor, a web platform featuring OpenAI, an Electron desktop client, and real-time communication.
command-executor.vercel.app
Plataforma avanzada que permite crear y ejecutar comandos de terminal remotamente a través de una interfaz web intuitiva. Integra inteligencia artificial para generar comandos personalizados
Command Executor es una solución integral para la automatización de tareas y la gestión de servidores, diseñada para centralizar la ejecución de comandos de terminal desde una única interfaz web. La plataforma permite a los desarrolladores y administradores de sistemas crear, guardar y ejecutar flujos de trabajo complejos de forma remota, optimizando la eficiencia y reduciendo errores manuales. Incorpora un potente asistente de IA, basado en la API de OpenAI, capaz de generar comandos a partir de descripciones en lenguaje natural, ideal para tareas complejas o poco frecuentes. La comunicación y ejecución se realizan en tiempo real gracias a un cliente de escritorio nativo (Electron) que utiliza WebSockets para un enlace directo y seguro con el servidor, garantizando una experiencia fluida y sin interrupciones.
Octubre 06, 2024
React, Node.js, Electron, OpenAI API, WebSocket, Express
Full Stack Developer
Interfaz principal del Command Executor donde los usuarios pueden ver todos sus comandos disponibles y crear nuevos comandos personalizados.
Herramienta avanzada para crear y editar comandos con asistencia de IA. Incluye validación en tiempo real y sugerencias inteligentes.
Aplicación de escritorio que permite la ejecución local de comandos con interfaz nativa y comunicación en tiempo real vía WebSocket.
Como desarrollador, mi día a día implica conectarme a múltiples servidores y máquinas locales. Siempre me encontraba haciendo SSH a un servidor, cd
a un directorio, ejecutar un script de deploy, luego SSH a otro para reiniciar un servicio, y así una y otra vez. Mantenía un Notion
lleno de comandos que copiaba y pegaba, pero el proceso era lento, repetitivo y propenso a errores.
Me pregunté: ¿Y si pudiera tener un único panel de control para todos mis comandos? Un lugar donde pudiera guardar, organizar y ejecutar cualquier tarea en cualquier máquina con un solo clic, viendo la salida en tiempo real, sin importar dónde estuviera.
De esa necesidad nació Command Executor. No quería crear otro cliente SSH, sino un centro de mando personal para automatizar mi flujo de trabajo, con la ayuda de una IA que pudiera incluso escribirme los comandos que no recordaba.
Tu Dashboard, Tus Máquinas: Define un comando en la interfaz web y ejecútalo en cualquier máquina que tenga el cliente de escritorio instalado. Ideal para reiniciar servidores, hacer deploys o correr scripts de mantenimiento.
De Lenguaje Natural a Comando de Terminal: ¿No recuerdas cómo liberar memoria RAM en Ubuntu o buscar archivos de más de 100MB? Simplemente pídelo en español (“liberar memoria ram en ubuntu”) y la IA de OpenAI te generará el comando exacto, listo para usar.
Observa la Magia Ocurrir: Gracias a los WebSockets, puedes ver la salida (stdout
y stderr
) de tus comandos en la interfaz web en tiempo real, como si tuvieras la terminal abierta frente a ti.
El Puente Seguro a Tus Máquinas: La aplicación de escritorio actúa como un agente seguro que instalas en tus máquinas. Recibe las órdenes desde el servidor y las ejecuta localmente, garantizando que solo tú tienes control sobre tus dispositivos.
Para llevar la automatización a un nuevo nivel, se está trabajando en una skill de Amazon Alexa para conectarla con Command Executor, la cual se encuentra en un 80% de desarrollo. El objetivo es que puedas ejecutar tus scripts y comandos guardados usando solo la voz. Imagina decir: “Alexa, dile a Command Executor que reinicie el servidor de staging” y ver cómo se ejecuta la tarea al instante. Esta integración convertirá cualquier dispositivo con Alexa en un punto de control por voz para tu infraestructura, haciendo la gestión de sistemas aún más rápida y accesible.
El mayor desafío era obvio y crítico: ¿cómo permitir que una aplicación web ejecute comandos en mi máquina local de forma segura? Abrir un puerto directamente era impensable. La solución fue diseñar una arquitectura de tres componentes:
El flujo es el siguiente: Usuario hace clic en React
-> React envía petición a Node.js
-> Node.js reenvía la orden por WebSocket al Electron correcto
-> Electron ejecuta el comando y devuelve la salida
. Este desacoplamiento fue la clave para lograr la funcionalidad sin comprometer la seguridad.
Una vez que un comando se estaba ejecutando en el cliente Electron, necesitaba una forma de enviar su salida (que puede ser un flujo de datos constante) de vuelta al navegador. Un simple request/response HTTP no serviría.
Aquí es donde los WebSockets brillaron. Implementé un sistema donde el proceso hijo (child_process
) que ejecuta el comando en Electron streamea su stdout
y stderr
. Cada trozo de datos (chunk
) se empaqueta y se envía inmediatamente a través del WebSocket al backend, que a su vez lo retransmite al frontend. En React, un useEffect
escucha estos eventos y va añadiendo la salida a un estado, simulando una terminal en vivo.
Este reto fue una lección profunda sobre el manejo de flujos de datos (streams) y la comunicación bidireccional en aplicaciones web.
Construir Command Executor fue un ejercicio intensivo de arquitectura de software. La lección más importante fue cómo diseñar sistemas distribuidos donde cada componente tiene una única y clara responsabilidad, garantizando la seguridad a través del diseño y no de parches.
A futuro, el roadmap incluye:
Construido con ❤️ por Yamir Alejandro Rodas Elvir