Ir al contenido

Máquinas

Una máquina en NORA representa un equipo físico o virtual —solo Windows o macOS— donde se instala el agente de NORA y donde realmente corren los robots. Cada máquina pertenece a una organización (tenant), tiene una credencial propia (la machine key) y puede ejecutar uno o varios jobs a la vez según su configuración.

Listado de máquinas en NORA, agrupadas por entorno, con su estado de conexión, clave, último latido y trabajos concurrentes.

Los campos principales de una máquina (modelo Machine) son:

CampoTipoDescripción
nametextoNombre legible de la máquina (mínimo 2 caracteres).
machine_keysecretoCredencial con la que el agente se autentica. Se guarda hasheada y, además, cifrada para poder revelarla una sola vez.
statusenumEstado operativo: online, offline, busy o maintenance.
is_activeboolSi está activa y puede recibir trabajo. Por defecto true.
max_concurrent_jobsenteroNúmero máximo de jobs simultáneos. Por defecto 1.
last_seen_atfechaÚltimo heartbeat recibido del agente.
missed_heartbeatsenteroLatidos perdidos consecutivos (sirve para marcarla offline).
system_infoobjetoInformación de sistema reportada por el agente.
display_resolution, color_depth, dpi_scaling, session_modevariosConfiguración de pantalla para la ejecución (ver más abajo).

El alta la hace un admin. Vía recomendada (panel):

  1. Máquinas → Crear máquina (nombre mínimo 2 caracteres).
  2. NORA muestra la machine_key una sola vez (cópiala) y ofrece Descargar agente (Windows/macOS).
  3. Instala el agente; al conectarse, la máquina pasa de offline a online.

El mismo alta también por API (sesión, no API key):

Ventana de terminal
curl -X POST https://nora-api.valisoftconsulting.com/api/v1/machines \
-H "Authorization: Bearer <token-de-sesion>" \
-H "Content-Type: application/json" \
-d '{"name": "BOT-CONTABILIDAD-01"}'

Respuesta (envuelta en data, ver introducción a la API):

{
"success": true,
"data": {
"id": "0f4c…",
"name": "BOT-CONTABILIDAD-01",
"machine_key": "nora_mk_…",
"status": "offline",
"created_at": "2026-06-19T10:00:00Z"
}
}

A continuación se descarga el paquete del agente para la plataforma deseada (platform=windows o platform=macos). NORA genera un ZIP con el ejecutable del agente, un README.txt con los pasos de instalación, el script de instalación y un archivo .env que ya contiene la NORA_MACHINE_KEY y la URL de la API. Al instalarse, el agente se registra para arrancar con el sistema y empieza a enviar heartbeats; entonces la máquina pasa de offline a online.

No existe un paso manual de “aprobación”: la máquina queda lista en cuanto el agente, autenticado con su machine key, se conecta por primera vez. Para retirar una máquina, desactívala (is_active=false) o elimínala (solo si no tiene jobs en su historial).

flowchart TD
    A[Admin crea la máquina] --> B[Descarga el paquete del agente]
    B --> C[Instala el agente en Windows o macOS]
    C --> D[Agente se autentica con la machine key]
    D --> E[Heartbeats: status pasa a online]
    E --> F[Lista para ejecutar jobs]
EstadoSignificado
offlineSin conexión. Es el estado inicial al crearla.
onlineConectada y disponible para recibir trabajo.
busyOcupada ejecutando uno o más jobs.
maintenanceEn mantenimiento; no se le asigna trabajo.

El filtro status de los listados de la API privada acepta online, offline, busy y maintenance. El endpoint público acepta online, offline y busy.

Un grupo de máquinas (MachineGroup) reúne varias máquinas bajo un nombre para repartir trabajo entre ellas en lugar de fijar un job a un equipo concreto. La pertenencia es una relación muchos-a-muchos (MachineGroupMember).

Operaciones disponibles bajo el prefijo /api/v1/machine-groups (rol admin para crear, modificar y borrar; operator/viewer pueden listar):

Método y rutaAcción
GET /machine-groupsListar grupos del tenant.
POST /machine-groupsCrear grupo (name, opcional machine_ids).
PATCH /machine-groups/{group_id}Renombrar o cambiar las máquinas del grupo.
DELETE /machine-groups/{group_id}Eliminar el grupo.
Ventana de terminal
curl -X POST https://nora-api.valisoftconsulting.com/api/v1/machine-groups \
-H "Authorization: Bearer <token-de-sesion>" \
-H "Content-Type: application/json" \
-d '{"name": "Contabilidad", "machine_ids": ["0f4c…", "1a2b…"]}'

El objeto de respuesta de un grupo incluye id, name, machine_ids (lista) y created_at.

Los robots de interfaz dependen de la pantalla en la que corren. Cada máquina lleva una configuración de display que el agente aplica a la sesión donde ejecuta el robot. Es el equivalente de NORA a los ajustes de resolución de UiPath:

CampoValores permitidosPor defectoNotas
display_resolutionANCHOxALTO, p. ej. 1920x10801920x1080Ancho 640–7680, alto 480–4320.
color_depth16, 24, 3232Profundidad de color (bits por píxel).
dpi_scaling100, 125, 150, 175, 200100Escalado DPI, en porcentaje.
session_moderdp, consolerdpTipo de sesión donde corre el robot.

Sobre session_mode:

  • rdp: el robot corre en una sesión RDP de bucle local con resolución, profundidad y DPI configurables. Es el modo recomendado para ejecución desatendida.
  • console: el robot corre en la sesión de consola física del equipo y usa la resolución del adaptador. Es el equivalente al “Login to Console” de UiPath.

En Windows se pueden definir además windows_username y windows_password (esta última se cifra en el backend y nunca se devuelve en las respuestas; la API solo expone windows_autologon_configured) para iniciar sesión automáticamente en la máquina antes de ejecutar.

Estos valores se modifican con PUT /api/v1/machines/{machine_id} (rol admin u operator):

Ventana de terminal
curl -X PUT https://nora-api.valisoftconsulting.com/api/v1/machines/0f4c… \
-H "Authorization: Bearer <token-de-sesion>" \
-H "Content-Type: application/json" \
-d '{"display_resolution": "1920x1080", "color_depth": 32, "dpi_scaling": 125, "session_mode": "rdp"}'

Para integraciones externas, NORA expone un endpoint de solo lectura autenticado con API key:

GET /api/v1/machines/list
X-API-Key: nora_ak_...

Requiere el scope machines:read (o una key sin restricciones) y está limitado a 60 peticiones por minuto. Admite el filtro opcional ?status=online|offline|busy.

Ventana de terminal
curl https://nora-api.valisoftconsulting.com/api/v1/machines/list \
-H "X-API-Key: nora_ak_..."
{
"data": [
{
"id": "0f4c…",
"name": "BOT-CONTABILIDAD-01",
"status": "online",
"is_active": true,
"max_concurrent_jobs": 1,
"last_seen_at": "2026-06-19T10:05:00Z"
}
],
"total": 1
}