La pila

La pila en detalle

De la solución a las personas, cada capa con su sello.

La pila de GrailAOS en detalleCinco capas: la solución, el compilador, el runtime, los canales y las personas.01La soluciónCorre hoyLo que declara el negocio, endocumentos de texto versionados.Corre hoyDocumentos versionados02El compiladorCorre hoyLa compuerta: verifica la soluciónentera en seis etapas.Corre hoyVersión nuevaSi no compila,no se crea.Corre hoyAl arrancarInforma sinfrenar elarranque.03El runtimeCorre hoyVarios pods atienden la mismasolución, con un turno a la vez porconversación si se prende la cola.Corre hoyPodCorre hoyPodCorre hoyPodParcialPostgresFuente deverdad.ParcialRedisSe vacía sinperderconversaciones.Corre hoyClaudeCorre hoyReintentosCorre hoyIntegracionesCorre hoyProcesos que corren solos04Los canalesCorre hoyEl agente no depende del canal.Corre hoyWhatsAppCorre hoyChat webCorre hoyAPICorre hoyDispositivos05Las personasCorre hoyCuando hace falta, la conversaciónse deriva a una persona.Corre hoyConsolaCorre hoyChatwootCorre hoyCorre hoyParcialParcial
El sello de una capa es el de su descripción.

El diagrama en texto

  1. La soluciónCorre hoy

    Lo que declara el negocio, en documentos de texto versionados.

    • Corre hoyDocumentos versionados
  2. El Corre hoy

    La compuerta: verifica la solución entera en seis etapas.

    • Corre hoyVersión nueva. Si no compila, no se crea.
    • Corre hoyAl arrancar. Informa sin frenar el arranque.
  3. El runtimeCorre hoy

    Varios pods atienden la misma solución, con un turno a la vez por conversación si se prende la cola.

    • Corre hoyPod
    • Corre hoyPod
    • Corre hoyPod
    • Parcial. Fuente de verdad.
    • Parcial. Se vacía sin perder conversaciones.
    • Corre hoyClaude
    • Corre hoyReintentos
    • Corre hoyIntegraciones
    • Corre hoyProcesos que corren solos
  4. Los canalesCorre hoy

    El agente no depende del canal.

    • Corre hoyWhatsApp
    • Corre hoyChat web
    • Corre hoy
    • Corre hoyDispositivos
  5. Las personasCorre hoy

    Cuando hace falta, la conversación se deriva a una persona.

    • Corre hoyConsola
    • Corre hoyChatwoot

Disponibilidad

Varios pods, una fuente de verdad

Varios pods atienden la misma solución, y Postgres guarda lo que importa.

Varios pods, un turno a la vez

Corre hoy
  • Varios pods atienden la misma solución: comparten las colas de turnos y de trabajos programados, atienden un solo turno a la vez por conversación, y la respuesta del chat web llega en vivo aunque el turno corra en otro pod.

    Límite La cola por conversación y la de turnos compartida se prenden en la configuración del .

Si se cae Redis

Parcial
  • Postgres es la fuente de verdad: la en Redis se puede vaciar sin perder conversaciones y, sin Redis, el servicio puede seguir en modo degradado, coordinando los pods por Postgres.

    Límite Si se pierde Redis, se pierden los trabajos diferidos que estaban ahí; el modo sin Redis se activa por configuración.

Salud a la vista

Corre hoy
  • El runtime informa su salud y si está listo: le manda tráfico sólo a los pods listos y reinicia los que dejan de responder, y cada solución tiene una lista de puesta a punto que dice si compila, si tiene un canal activo y una versión publicada.

Kubernetes

Hecho para Kubernetes

Los pods no guardan estado y avisan cuándo están listos.

Kubernetes estándar

Corre hoy
  • GrailAOS™ corre en Kubernetes estándar, hoy sobre , desde imágenes versionadas: una solución escala sumando réplicas del runtime, y una versión nueva del runtime sale con un , sin corte cuando hay más de una réplica.

    Límite Probado sobre k3s; no hay escalado automático por carga, y un pedido que llega justo cuando un pod se apaga puede fallar.

En la infraestructura de Omniatix™

Parcial
  • En la infraestructura que opera Omniatix, la base tiene un respaldo por día y relevo automático, la red de cada despliegue arranca cerrada, vaciar un nodo no corta las conversaciones con más de una réplica y un pod se apaga en orden.

    Límite Sólo el runtime tiene el resguardo de mantenimiento, y sin la cola por conversación un turno a medias puede perderse al apagar un pod.

  • Disponible a pedidoKubernetes administrado: Amazon EKS, Google GKE o Azure AKS

Entrega

Entrega resiliente e idempotencia

Un mensaje no se pierde y un reintento no duplica una escritura.

Lo que no sale, se reintenta

Corre hoy
  • En WhatsApp, la respuesta se guarda antes de entregarla, lo que no sale entra a una que reintenta y, si igual no sale, avisa al operador; un mensaje entrante no se confirma sin registrarlo y un reenvío no se procesa dos veces.

    Límite Sólo para las respuestas de la conversación en WhatsApp.

Idempotencia en integraciones

Corre hoy
  • Una integración HTTP puede mandar una clave de para que un reintento no duplique una escritura, si el sistema de destino la respeta.

    Límite Viene apagada y se declara herramienta por herramienta.

Versiones

Versiones sin reconstruir, con canary y vuelta atrás

Se publica sin reconstruir nada, y volver atrás es mover un puntero.

El ciclo de una versiónCinco etapas, del borrador a la vuelta atrás, con la compuerta del compilador y la de las pruebas; el canary y la vuelta atrás son opcionales.Otra versión01 BorradorCorre hoyLos archivos de laversión nueva, porAPI.Compuerta · El compiladorCorre hoySi no compila, no se crea.02 Vista previaCorre hoyLa ve sólo elcontacto de pruebadel dueño.03 CanaryCorre hoyUn porcentaje decontactos, siemprelos mismos.Compuerta · Las pruebasParcialSi bloquean, sigue la publicada.04 PromovidaCorre hoyAtiende a todos: semueve un puntero.05 Vuelta atrásCorre hoyEl puntero vuelve ala versión anterior.CanceladaCorre hoyAntes depromover.Corre hoy
Mientras tanto, la versión publicada sigue atendiendo.

El diagrama en texto

  1. Corre hoyBorrador. Los archivos de la versión nueva, por API.
  2. Corre hoyCompuerta: El compilador. Si no compila, no se crea.
  3. Corre hoyVista previa. La ve sólo el contacto de prueba del dueño.
  4. Corre hoy (opcional). Un porcentaje de contactos, siempre los mismos.
  5. ParcialCompuerta: Las pruebas. Si bloquean, sigue la publicada.
  6. Corre hoyPromovida. Atiende a todos: se mueve un puntero.
  7. Corre hoy (opcional). El puntero vuelve a la versión anterior.
  • Corre hoyCancelada. Antes de promover.
  • Corre hoyOtra versión. Una pendiente a la vez.

Sin reconstruir la imagen

Corre hoy
  • Una versión nueva de una solución se publica por API con sus archivos, sin reconstruir la imagen del runtime: antes, el compilador revisa la solución entera tal como quedaría y, si encuentra errores, la versión no se crea.

Vista previa y canary

Corre hoy
  • Por defecto, cada versión nueva nace en vista previa: la ve sólo el contacto de prueba del dueño, y el resto sigue atendido por la versión publicada.

  • Una versión puede salir en canary: un porcentaje de contactos, elegido por quien opera el deployment, la recibe, y cada contacto cae siempre del mismo lado.

Si la puerta bloquea

Parcial
  • Si la puerta de pruebas bloquea una promoción, la versión no se publica y sigue atendiendo la que estaba.

    Límite Mientras la puerta decide, y durante unos minutos después de un bloqueo, algunos turnos pueden recibir la versión nueva.

Promover y volver atrás

Corre hoy
  • Promover una versión y volver a la anterior no reconstruyen ni reinician nada: se mueve el puntero de la versión que atiende. Cada solución tiene a lo sumo una versión pendiente, que se puede cancelar en vista previa o en canary.

    Límite Volver atrás no deshace los datos que la versión nueva ya escribió.

Cambios que rigen sin reiniciar

Corre hoy
  • Sin reiniciar ni redesplegar, se cambian por API las funciones que el dueño prende y apaga, la zona horaria, el conocimiento, la configuración de tareas y campañas, los canales y cada pieza de una solución versionada, en todos los pods.

    Límite Editar una pieza así no pasa por vista previa ni por la puerta de pruebas, y lo estructural necesita una versión nueva.

Procesos

Procesos que corren solos

Un proceso corre sin conversación, y su corrida sobrevive a la caída de un servidor.

Procesos que corren solos

Corre hoy
  • Desde la versión 4.404 del runtime corren los procesos autónomos: un proceso sin conversación arranca por agenda, cuando alguien pide correrlo ahora, por API o porque lo lanza un agente, y encadena pasos de agente, bifurcaciones, variables, decisiones y llamadas directas a herramientas.

    Límite Un proceso no arranca por un mensaje de un canal: a la conversación la atiende un agente, que puede lanzarlo.

Listas y ramas en paralelo

Corre hoy
  • Un proceso recorre listas de hasta cinco mil ítems y corre ramas en paralelo, hasta diez a la vez, con una regla para cuando una rama falla: seguir con las demás, cancelarlas todas o cortar en la primera.

    Límite Las ramas en paralelo de una corrida corren en un mismo servidor.

Procesos dentro de procesos

Corre hoy
  • Un proceso llama a otros procesos, esperando su resultado o sin esperarlo; si se cancela, se cancelan también los que lanzó, y el compilador rechaza los ciclos.

    Límite Hasta tres niveles de procesos dentro de procesos.

Una persona aprueba

Corre hoy
  • Un paso de un proceso puede esperar la aprobación de una persona, que puede recibir un : aprueba o rechaza con un comentario desde la consola, y si nadie contesta a tiempo el paso vence; dos resoluciones a la vez no se pisan.

Una corrida durable

Corre hoy
  • Una corrida vive en Postgres y no en la memoria de un servidor: si el que la avanza se cae a mitad de un paso o se apaga, otro la retoma; puede esperar hasta treinta días y queda fijada a la versión de la solución con la que arrancó.

Cuando un paso falla

Corre hoy
  • Cuando un paso falla, el proceso hace lo que declara la solución: reintentar, reintentar contándole el error al modelo, tomar otro camino, usar un valor por defecto o saltear el paso, sin repetir lo que ya terminó.

    Límite Una escritura que se cortó sin saber si llegó no se repite: el paso queda interrumpido y sigue lo declarado para el error.

Tareas programadas

Corre hoy
  • Una tarea programada puede correr un proceso sin una conversación de por medio.

    Límite Un proceso no les escribe a los clientes: para eso están las campañas.

  • También corren como tareas programadas las campañas salientes, los reportes, la ingesta de datos tabulares y la sincronización de bases de conocimiento.

Canales y personas

Por dónde llega cada conversación

Un agente para todos los canales, y una persona cuando hace falta.

Los canales que corren

Corre hoy
  • El agente no depende del canal: atiende por WhatsApp, con plantillas, botones y listas; por el chat web, con la ; por una API de conversaciones, para integrarlo en otro sistema; y por dispositivos físicos de voz.

Una persona en el medio

Corre hoy
  • Cuando hace falta una persona, la conversación se deriva: el operador recibe un aviso push, responde desde la consola de operación, desde Chatwoot o desde la aplicación de WhatsApp Business, y el agente vuelve a atender cuando la persona termina.

Una consulta al equipo

Corre hoy
  • El agente le pregunta a una persona del equipo sin pasarle la conversación, sigue atendiendo y le lleva la respuesta al cliente en el mismo hilo, con los datos que dio esa persona y nunca su texto tal cual.

    Límite Se activa por configuración, y se responde desde la consola.

Voz por teléfono

Parcial
  • Llamadas de voz por teléfono, a través de Telnyx.

    Límite En un solo pod, y sin derivar a una persona durante la llamada.

Memoria

Lo que el runtime recuerda

Lo que cuenta cada cliente y lo que pide que le recuerden.

Lo que cuenta cada cliente

Corre hoy
  • Memoria de largo plazo de lo que cada cliente cuenta de sí mismo, con un tope y un aviso de «posiblemente desactualizado» por antigüedad: vence sola al año sin interacción y se borra a pedido, también cuando la persona le pide al agente que se olvide.

    Límite Viene apagada y se activa por configuración del deployment.

Los recordatorios que pide una persona

Corre hoy
  • Una persona le pide a un agente que le recuerde algo, en el chat web o por WhatsApp, y el recordatorio le llega a ella, por el mismo canal y a la hora pedida: el modelo no puede elegir a otra persona ni otro canal.

    Límite Necesita una identidad estable de la persona: en una conversación web anónima no se agenda.

Integraciones

Integraciones, secretos y código propio

A dónde llama una integración lo decide quien opera, no el modelo.

Sin acceso a la red privada

Corre hoy
  • Las integraciones HTTP no pueden llamar a la red privada, a la propia máquina ni a los datos internos de la nube, salvo que quien opera el deployment lo habilite en una lista.

MCP como cliente

Corre hoy
  • Un agente usa las herramientas de un servidor externo, con el runtime como cliente: la cuenta lo conecta una vez, con una clave o con , sus herramientas quedan fijadas en la solución y la conexión pasa por la misma guarda de red.

    Límite Sólo las herramientas, no los recursos ni los ; si el servidor cambia una, por defecto la llamada sigue con un aviso; la conexión es de la cuenta.

Herramientas y código propio

Corre hoy
  • El runtime trae 102 herramientas incluidas y rechaza los tipos de herramienta que no sabe ejecutar; con su propio código de arranque, un deployment registra herramientas propias y siembra datos, sin modificar el runtime.

    Límite Varias herramientas incluidas dependen de la configuración o del código de arranque del deployment.

Servicios de plataforma

Corre hoy
  • Incluye servicios de plataforma: contactos y oportunidades, agenda y reservas con sus recordatorios, Google Workspace, los recordatorios que pide una persona y avisos al dueño de la cuenta.

    Límite Contactos, oportunidades y agenda los conecta el código de arranque del deployment, y Google Workspace pide credenciales propias.

Seguridad

Tenants y seguridad

La identidad del contacto la pone el runtime, no el modelo.

Aislamiento entre tenants

Corre hoy
  • Varios comparten el runtime con aislamiento a nivel de aplicación, con una guarda contra el acceso cruzado y pruebas de punta a punta, y la identidad del contacto la pone el runtime en cada turno: el modelo no la puede cambiar.

    Límite Sin seguridad a nivel de fila en Postgres ni una auditoría externa del aislamiento.

Secretos y claves

Corre hoy
  • Los secretos se guardan cifrados con AES-256-GCM, los de las herramientas son de cada tenant y de sólo escritura, y cada solución tiene su propia clave de API, que no sirve para otra.

Observabilidad y consumo

Medir, trazar, avisar y cortar

Cada turno deja su ; los avisos llegan al cruzar un umbral y los topes cortan antes del turno siguiente.

La traza de cada turno

Corre hoy
  • Cada turno deja una traza en Postgres, con el modelo, los , el costo, la duración, el resultado y cada herramienta que llamó; cada tenant consulta las suyas por API, junto con una foto de su actividad, y vencen solas a los treinta días por defecto.

Costo real, desglosado

Corre hoy
  • El consumo de cada turno se mide por el costo real del modelo y se consulta por día, semana o mes, por solución, agente, conversación o tipo de operación, y cada consumo dice de dónde sale.

Topes y avisos de consumo

Corre hoy
  • Los topes de consumo, en dinero facturado o en turnos, se evalúan antes de cada turno y de cada paso de un proceso, y pueden bloquear lo que sigue o pausar la solución; al cruzar un umbral del mes, el tenant recibe un aviso.

    Límite El turno en curso siempre termina; los avisos de consumo vienen apagados y, como el tope en dinero, piden la facturación prendida.

Alertas a quien opera

Corre hoy
  • Quien opera el deployment recibe un correo cuando falla algo que de otro modo pasaría desapercibido, y al arrancar, el runtime lista lo que está construido pero no conectado.

Métricas y trazas para otras herramientas

Parcial
  • Métricas en formato , con el tenant y el entorno como etiquetas obligatorias, y exportación de trazas en formato .

    Límite OpenTelemetry manda un tramo por turno de agente: las corridas de los procesos no se envían.

Modelos

Los modelos de los agentes

Cada proveedor, con su sello.

Otros proveedores, por un gateway compatible con OpenAI

Disponible a pedido
  • Conectar los agentes a modelos de otros proveedores a través de un compatible con OpenAI: LiteLLM, OpenRouter o cualquier servidor que hable esa interfaz.

Claude, con respaldo ante fallas

Corre hoy
  • Hoy los agentes conversan sobre Claude, de Anthropic, con un respaldo ante fallas que se puede prender, por otra cuenta de Anthropic o por OpenRouter, y un aviso a quien opera cuando el proveedor falla; los se calculan con OpenAI.

    Límite El respaldo viene apagado y se prende con las alertas al operador.

Preguntas

Preguntas frecuentes

¿Qué procesos corre GrailAOS?

Procesos que corren solos, conversacionales y tareas programadas, con listas, ramas en paralelo y aprobaciones.

Cómo leer los sellos

¿GrailAOS puede operar un negocio entero?

Es el propósito para el que está diseñado, y el motor que lo sostiene ya corre: procesos que trabajan solos, con personas que aprueban.

  • VisiónOperar un negocio entero

¿Qué pasa si se cae Redis?

No se pierden conversaciones: Postgres es la fuente de verdad, y un modo degradado, si se activa, coordina los pods sin Redis; los trabajos diferidos sí se pierden.

  • ParcialPostgres como fuente de verdad y el modo sin Redis

¿Corre en Kubernetes?

Sí: en Kubernetes estándar, hoy sobre k3s, escalando con réplicas y actualizando pod por pod.

  • Disponible a pedidoAmazon EKS, Google GKE o Azure AKS

Hecho para Kubernetes

¿Cómo se publica un cambio?

Por API, sin reconstruir la imagen: vista previa, canary si se quiere, y promover o volver atrás.

¿Cómo se ve y se controla lo que hace y gasta una solución?

Con la traza de cada turno, las alertas por correo y los topes de consumo.

La observabilidad en detalle

Runtime El motor que hace correr un programa ya escrito. En GrailAOS, el que opera la solución ya compilada.Pod La unidad en la que Kubernetes corre una copia de un servicio: sumar pods es sumar copias que atienden a la vez.Compilador En GrailAOS, la pieza que revisa la solución entera antes de que algo corra y dice de cada error qué pasó, dónde y cómo arreglarlo.Postgres Una base de datos relacional muy usada, que guarda los datos de forma durable.Redis Un almacén en memoria, muy rápido, que se usa como caché y para coordinar varias copias de un servicio.API Una interfaz para que otro sistema use un servicio con pedidos y respuestas, sin pasar por una pantalla.Deployment Una instalación concreta de un sistema, con su configuración y sus datos.Caché Un almacén rápido de datos que también están en otro lado o se pueden volver a calcular.Kubernetes El sistema estándar para correr contenedores en varios servidores: reparte el trabajo, reinicia lo que falla y actualiza de a una copia.k3s Una distribución liviana de Kubernetes, con la misma interfaz estándar.Rolling update Una actualización que reemplaza las copias de un servicio de a una, así sigue atendiendo mientras cambia de versión.Outbox Una cola guardada en la base con lo que hay que enviar: si un envío falla, se reintenta desde ahí sin perderlo.Idempotencia Que repetir una operación tenga el mismo efecto que hacerla una vez: un reintento no duplica un pago ni un mensaje.Canary Una versión nueva que recibe primero sólo una parte de los usuarios, para verla andar antes de dársela a todos.Rollback Volver a la versión anterior cuando la nueva no anda bien. En este sitio, «vuelta atrás».Aviso push Una notificación que llega al teléfono o a la computadora aunque la aplicación no esté abierta.Streaming Mostrar una respuesta a medida que se genera, en vez de esperar a que esté entera.MCP Model Context Protocol: un protocolo abierto para que un modelo use las herramientas y los datos que ofrece otro servidor.OAuth Un estándar para que una aplicación acceda a otra en nombre de alguien sin conocer su contraseña.Prompt La consigna escrita que se le da a un modelo.Tenant y multi-tenant Un tenant es una cuenta, por ejemplo un negocio, con sus datos aparte; multi-tenant quiere decir que varios comparten la misma instalación sin ver lo de los otros.Traza El registro de lo que pasó en un turno: qué se hizo, qué herramientas se llamaron, cuánto tardó y cuánto costó.Token La unidad en que un modelo lee y escribe texto, y en la que cobran los proveedores: unas pocas letras por token.Prometheus Un sistema estándar que junta las métricas numéricas de un servicio para graficarlas y alertar.OpenTelemetry Un estándar abierto para mandar trazas y métricas a las herramientas de observación que use cada empresa.Gateway Un intermediario que recibe pedidos con una sola interfaz y los pasa a distintos proveedores.Embeddings Números que representan el significado de un texto, para buscar por cercanía de significado y no sólo por palabras.