Ir al contenido

Tutorial 0: tu primer robot mínimo

Antes de meternos con colas, assets o automatización de navegador, hagamos lo más importante: ver un robot tuyo corriendo en NORA de principio a fin. Este robot no hace nada espectacular —saluda y termina— pero recorre todo el ciclo real: escribir el código, probarlo en tu máquina, publicarlo y ejecutarlo desde el panel. Cuando esto te funcione, lo demás es solo añadir lógica.

Necesitas tres cosas (si ya las tienes, salta al paso 1):

  1. Una cuenta de NORA — ver Primeros pasos.
  2. Python 3.11+ y el SDK instalado: pip install nora-sdk.
  3. Una máquina conectada (el agente instalado y en línea) — ver Instalar el agente. La necesitarás solo en el paso 4, para la ejecución gestionada.

Lista de Máquinas en el panel de NORA con un agente conectado y en línea.

Crea una carpeta con dos archivos. Eso es un robot de NORA: nada más.

mi-primer-robot/
├── nora.json # el manifiesto: nombre, versión, punto de entrada y argumentos
└── main.py # tu código

nora.json — declara el robot y un argumento de entrada opcional (nombre):

{
"name": "mi-primer-robot",
"version": "1.0.0",
"entry_point": "main.py",
"inputs": [
{ "name": "nombre", "type": "text", "default": "mundo", "description": "A quién saludar" }
]
}

main.py — lee el argumento, deja un par de logs y reporta progreso y un resultado:

from nora_agent import sdk
def main() -> None:
# 1) Leer un argumento de entrada (lo escribes al lanzar; usa el default si no viene).
nombre = sdk.get_input("nombre", "mundo")
# 2) Registrar mensajes — se ven en vivo en el detalle del job.
sdk.log("info", f"¡Hola, {nombre}! Mi primer robot en NORA está corriendo.")
# 3) (Aquí iría tu automatización real: abrir una app, leer un Excel, etc.)
sdk.update_progress(50, "Trabajando")
# 4) Devolver un resultado — queda guardado en el job (pestaña Salida).
sdk.set_output("saludo", f"Hola {nombre}")
sdk.update_progress(100, "Listo")
sdk.log("info", "Terminado ✅")
if __name__ == "__main__":
main()

Eso es todo el robot. sdk.get_input, sdk.log, sdk.update_progress y sdk.set_output son las cuatro funciones que usarás en casi todos tus robots.

No hace falta publicar nada para probarlo. Inicia sesión una vez y ejecútalo en local con datos en vivo:

Ventana de terminal
# Inicia sesión (abre el navegador para autorizar)
nora login
# Ejecuta el robot pasándole el argumento "nombre"
nora dev run main.py --input '{"nombre": "Kathy"}'

Verás en tu terminal los logs del robot. nora dev run usa un token de desarrollo corto y corre el mismo código que correrá en producción: lo que funciona aquí, funciona allá.

Cuando estés conforme, empaqueta y sube el robot. Dos comandos:

Ventana de terminal
# 1) Empaqueta en un .zip (excluye venv, cachés y secretos automáticamente)
nora package --entry main.py
# 2) Sube el .zip como una versión (Release). Crea el paquete si no existe.
nora release push

nora release push te devuelve el paquete y la versión publicada. Más detalle en Procesos y paquetes.

Un Release es solo código subido; para ejecutarlo necesitas un Proceso que lo apunte. En el panel ve a Procesos → Nuevo proceso, elige tu paquete mi-primer-robot y su versión, ponle un nombre y guárdalo.

Listado de Procesos en el panel de NORA.

Ahora ábrelo y pulsa Ejecutar. Como declaraste el argumento nombre, NORA te muestra un formulario precargado: escribe un valor (o deja el default), elige la máquina y lanza.

Modal "Ejecutar Proceso" con el formulario de argumentos: el campo "nombre" precargado desde el robot.

NORA crea el job, lo asigna a tu máquina y el agente ejecuta el robot. Abre el job desde Trabajos: verás su estado, el progreso que reportaste, los logs en vivo y, en la pestaña Salida, el saludo que devolviste con set_output.

Detalle de un job en NORA con su estado, progreso, logs y la salida del robot.

🎉 ¡Eso es! Acabas de recorrer el ciclo completo: escribir → probar → publicar → ejecutar → ver resultado. Todo lo demás en NORA es añadir capacidades a este mismo esqueleto.