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.
Antes de empezar
Sección titulada «Antes de empezar»Necesitas tres cosas (si ya las tienes, salta al paso 1):
- Una cuenta de NORA — ver Primeros pasos.
- Python 3.11+ y el SDK instalado:
pip install nora-sdk. - 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.

Paso 1 — Crea el proyecto
Sección titulada «Paso 1 — Crea el proyecto»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ódigonora.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.
Paso 2 — Pruébalo en tu máquina
Sección titulada «Paso 2 — Pruébalo en tu máquina»No hace falta publicar nada para probarlo. Inicia sesión una vez y ejecútalo en local con datos en vivo:
# 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á.
Paso 3 — Publícalo
Sección titulada «Paso 3 — Publícalo»Cuando estés conforme, empaqueta y sube el robot. Dos comandos:
# 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 pushnora release push te devuelve el paquete y la versión publicada. Más detalle en
Procesos y paquetes.
Paso 4 — Crea el Proceso y lánzalo
Sección titulada «Paso 4 — Crea el Proceso y lánzalo»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.

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.

Paso 5 — Mira el resultado
Sección titulada «Paso 5 — Mira el resultado»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.

🎉 ¡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.
Siguientes pasos
Sección titulada «Siguientes pasos»- Argumentos de entrada/salida — profundiza en
get_input/set_outputy los tipos de argumentos. - Tutorial 1: RPA Challenge con colas — un robot real que lee su trabajo desde una cola, con automatización de navegador.
- Lámina de comandos — la chuleta del SDK y la CLI.