Una ejecución es un agente que trabaja en una tarea en su propia microVM. Envías un prompt, una entrada JSON y los archivos y conexiones que puede usar. Ephemeral la pone en cola, inicia una máquina nueva, registra cada paso y destruye la máquina cuando termina la ejecución.
De qué se compone una ejecución
Toda ejecución tiene un prompt y una entrada opcional. El resto de la definición decide qué modelo usa, qué puede leer, a qué puede llamar, cuánto puede tardar y cuánto puede gastar. Puedes enviar toda la definición en línea, o indicar el nombre de un flujo de trabajo guardado y enviar solo la entrada.
{
"prompt": "Find out why this payment failed. Follow the playbook.",
"input": { "payment_id": "pay_123" },
"model": "anthropic/claude-haiku-5.5",
"files": [{ "file": "playbook.md" }],
"connections": { "payments": { "ref": "payments-api", "allowed_methods": ["GET"] } },
"timeout_seconds": 120,
"shell": false,
"max_cost_micros": 500000
}Dentro de la microVM, el agente siempre puede leer los archivos que montaste. Con shell activado, que es lo predeterminado, también puede ejecutar comandos de shell y escribir archivos en su directorio de trabajo. Cada conexión que concedes añade herramientas a las que puede llamar, y con el acceso web activado puede leer páginas, buscar y llamar a API públicas. La máquina en sí no tiene internet. El directorio de trabajo se descarta junto con la máquina, así que nada pasa a la siguiente ejecución.
Ciclo de vida
Una ejecución pasa por estos estados. Los últimos cinco son finales; cuando una ejecución llega a uno de ellos, ya no vuelve a cambiar.
| Estado | Significado |
|---|---|
reserving | Solo en el servicio alojado. Se están reservando los créditos del presupuesto de la ejecución. |
queued | Esperando un hueco libre de worker. |
starting | Sacada de la cola. Se están cargando la definición y los archivos. |
running | La microVM se está iniciando o el agente está trabajando. |
succeeded | El agente terminó y devolvió un resultado. |
failed | El worker falló, o no se pudieron reservar los créditos. El campo error indica cuál de los dos. |
cancelled | Alguien canceló la ejecución. |
timed_ | La ejecución alcanzó su tiempo límite antes de terminar. |
interrupted | El motor se reinició durante la ejecución, o la admisión no se completó. |
Las ejecuciones salen de la cola en el orden en que se crearon. Una instalación autoalojada ejecuta dos a la vez por defecto; el resto espera en queued. El tiempo límite se cuenta desde el momento en que una ejecución sale de la cola, así que el tiempo de espera no lo consume.
Límites
| Límite | Valor |
|---|---|
timeout_ | De 1 a 3600. Por defecto 300. |
| Prompt | 128 KiB |
| Entrada | 1 MiB de JSON |
| Archivos | 32 por ejecución, 1 MiB cada uno, 4 MiB en total |
| Conexiones | 16 por ejecución |
| Llamadas al modelo | 100 por ejecución |
| Salida por respuesta del modelo | El límite propio del modelo, hasta 32000 tokens, reducido para ajustarse a lo que queda del presupuesto. Una respuesta cortada en el límite se continúa automáticamente, como máximo dos veces. |
| Solicitudes y búsquedas web | 50 por ejecución, cuando el acceso web está activado |
| Resultado | Hasta 1 MiB. Una respuesta más larga se corta ahí, y la ejecución registra que se cortó. |
| Eventos | El registro conserva hasta 256 KiB por evento y 10000 eventos o 16 MiB por ejecución. Los resultados de herramientas más grandes se acortan en el registro y se marcan; el agente los sigue recibiendo completos. Cuando el registro se llena, el detalle posterior se omite y se cuenta. Ninguno de los dos casos hace fallar nunca la ejecución. |
max_ | De 1 a 100000000 (hasta $100) |
Seguir una ejecución
Hay tres formas de saber qué está haciendo una ejecución y cuándo termina.
- Consulta
GET /v1/runs/{id}repetidamente hasta que el estado sea final. - Transmite
GET /v1/runs/{id}/events. Es un flujo de eventos enviados por el servidor que reproduce todo lo registrado hasta el momento y después continúa en vivo hasta que termina la ejecución. - Configura un callback en la ejecución. Ephemeral envía una solicitud firmada a tu servidor cuando la ejecución alcanza un estado final.
Cerrar el flujo de eventos no afecta a la ejecución. Puedes reconectarte con el último ID de evento que recibiste y continuar desde ahí.
Tipos de evento
| Tipo | Se registra cuando |
|---|---|
status | La ejecución empieza a ejecutarse o alcanza un estado final. |
microvm_ | Ephemeral solicita una microVM. |
microvm_ | La microVM está en marcha. |
worker_ | Se inicia el proceso del agente. Incluye si el shell está activado. |
connection_ | Una conexión MCP está lista, con las herramientas a las que puede llamar la ejecución. |
tool_ | El agente llama a una herramienta. Incluye los argumentos. |
tool_ | Una llamada a una herramienta devuelve un resultado. Incluye el resultado y si fue un error. Un resultado de más de 256 KiB se acorta aquí e incluye trimmed_from_bytes. |
text_ | El modelo transmite texto, en lotes unas diez veces por segundo. |
model_ | Termina una respuesta del modelo. Uso de tokens según informa el worker; no se usa para la facturación. |
usage | Ephemeral autoriza o concilia el coste de una llamada al modelo. |
connection | El motor hace una solicitud HTTP o una llamada a una herramienta MCP en nombre de la ejecución. |
web_ | El motor envía una solicitud web para el agente. Incluye la URL, el estado, el coste y la comprobación de seguridad. |
web_ | El motor realiza una búsqueda web para el agente. |
web_ | Una solicitud o búsqueda web se rechazó antes de enviarse. Incluye el motivo. |
result | El agente devuelve su resultado final. El campo output de la ejecución lo contiene entero; este evento puede estar acortado. |
model_ | Se rechazó una llamada al modelo, por ejemplo porque su coste en el peor caso supera lo que queda del presupuesto. Incluye el motivo. |
output_ | Una respuesta alcanzó el límite de salida del modelo y se pidió al agente que continuara. |
output_ | El resultado final superaba 1 MiB y se cortó ahí. |
events_ | El registro de la ejecución se llenó, así que los eventos posteriores no se almacenaron. Incluye cuántos. |
worker_ | El worker se detiene con un error. |
microvm_ | Se confirma que la microVM ha sido destruida. |
microvm_ | Aún no se pudo confirmar la terminación y se reintentará. |
done | Último mensaje del flujo. Lleva el objeto de ejecución final. |
Ephemeral elimina los valores de credenciales conocidos, como los tokens de las conexiones, de los eventos y del resultado antes de almacenarlos. La referencia de la API muestra el formato exacto del flujo.
Cancelar una ejecución
POST /v1/runs/{id}/cancel detiene una ejecución que está en reserving, queued, starting o running. Se detiene el worker y se termina la microVM. Cancelar una ejecución que ya ha terminado no cambia nada.
Retención cero de datos
Establece zero_data_retention en true en una ejecución, o en un flujo de trabajo guardado, cuando la tarea sea sensible. Ephemeral no registra entonces nada del contenido de la ejecución: solo recibes la salida.
| Se conserva | No se conserva |
|---|---|
| ID de la ejecución, organización, estado, marcas de tiempo, programación, cifras de coste y uso, y una categoría de error genérica sin texto del worker. | Los eventos y la salida una vez entregada, el texto de error del worker y la definición de la ejecución: prompt, entrada, lista de archivos y referencias a conexiones. La definición de una ejecución así no se puede consultar ni volver a ejecutar. |
- Los eventos siguen llegando en directo mientras la ejecución trabaja, con
GET /v1/runs/{id}/eventsen cualquier motor. Se guardan en un almacén transitorio y se eliminan unos minutos después de que termine la ejecución. - La salida se devuelve una vez. El primer
GET /v1/runs/{id}tras terminar la ejecución la incluye y la elimina. Si hay un callback, este entrega la salida y las lecturas la dejan en su sitio hasta entonces. En cualquier caso se elimina como máximo después de una hora.output_availableyoutput_expires_atindican si todavía se conserva. - Las llamadas al modelo van solo a proveedores que no conservan tus datos ni entrenan con ellos. Un modelo sin un proveedor así se rechaza con
400antes de reservar nada. - En el servicio alojado la ejecución cuesta un 10 % más: el recargo se aplica al cómputo, las llamadas al modelo y las solicitudes web, cuenta para el presupuesto y aparece en el desglose del coste. Las instalaciones autoalojadas no cobran nada extra.
- Los datos transitorios viven en tablas que todas las copias de seguridad omiten, así que una base de datos restaurada nunca los contiene.
Después de una ejecución
La ejecución conserva su resultado, mensaje de error, marcas de tiempo, eventos y coste. Considera el coste como definitivo cuando el estado es final y billing_pending es false; consulta presupuestos y facturación.
Las ejecuciones terminadas se eliminan 30 días después de finalizar, junto con sus eventos. Una ejecución se conserva más tiempo mientras su facturación, la entrega del callback o la limpieza de la microVM siguen pendientes. Las instalaciones autoalojadas pueden cambiar el periodo de retención.
Para volver a ejecutar la misma tarea, obtén GET /v1/runs/{id}/definition. Devuelve la definición que la ejecución usó realmente, sin credenciales, para que puedas revisarla, fijar un nuevo presupuesto y enviarla.