Plataforma
CLI
Instala @eventpipe/cli desde npm. Empaqueta tus nodos de código con esbuild y publica una nueva versión del pipeline vía POST /api/account/pipelines/:id/versions—la misma ruta que Pipe Studio. Ejecuta eventpipe login una vez por máquina; la sesión se guarda en ~/.eventpipe/credentials.json.
Resumen
La CLI refleja los flujos habituales del panel: iniciar sesión, crear endpoints de webhook, recibir tráfico capturado en tu máquina, compilar handlers en TypeScript y publicar versiones inmutables del pipeline.
- Cuenta: inicio de sesión en el navegador (login) con credenciales guardadas en disco para los siguientes comandos.
- Webhooks: crear endpoints (create) y suscribirte al relay en tiempo real (listen), con reenvío HTTP opcional a una URL local.
- Bundles: compilar cada entrada a .eventpipe/ (build) con tamaño y prefijo sha256.
- Despliegue: publicar una nueva versión del pipeline (push) con la misma sesión que la app.
- Herramientas: mostrar la versión instalada (--version), actualizar la CLI (update) y avisos opcionales de npm en stderr tras la mayoría de comandos.
Cuándo usarla
Úsala para builds repetibles desde Git, CI o iteración local rápida. Publicar desde Pipe Studio sigue siendo una opción completa; la CLI mantiene eventpipe.json y el código en el repo y encaja en automatización con Node en el runner.
Requisitos
- Se requiere Node.js 20 o superior.
- Cuenta en eventpipe (registro en la app).
- Para build y push: un eventpipe.json en la raíz del proyecto con pipelineId y settings.pipe (esquema v3).
- Para create, listen y push: ejecuta eventpipe login antes (salvo que ya exista sesión en esta máquina).
Instalación
- Global (recomendado): npm install -g @eventpipe/cli — añade los comandos eventpipe y eventpipe-cli al PATH.
- Como dependencia de desarrollo: npm add -D @eventpipe/cli, luego npx eventpipe … o scripts npm.
Instalación global
npm install -g @eventpipe/cliInstalación por proyecto
npm add -D @eventpipe/cli
npx eventpipe --versionAutenticación
login abre el navegador para autenticarte con la misma cuenta que la web. Los tokens se guardan en disco y los reutilizan create, listen y push. No hay flujo solo con API key en la CLI: usa la sesión guardada por login.
- La URL base por defecto es https://eventpipe.app. En despliegues propios, define EVENTPIPE_BASE_URL con el origen de tu app (sin barra final) antes de login.
- Ruta de credenciales: ~/.eventpipe/credentials.json en Unix; en el perfil de usuario en Windows.
- Obligatorio antes de create, listen y push (salvo sesión válida existente).
eventpipe login
export EVENTPIPE_BASE_URL=https://tu-app.example
# opcional; omite para eventpipe.app
eventpipe loginInicio rápido
Endpoints y streaming
Crea un webhook y pasa el id del endpoint (no el id del pipeline) a listen.
Crear y escuchar
eventpipe create --name mi-endpoint
eventpipe listen <webhookId>Publicar desde un repositorio
Desde una carpeta con eventpipe.json y src/handler.ts:
Build y push
eventpipe login
eventpipe build # opcional; push ejecuta build
eventpipe pushEstructura del proyecto y manifiesto
El pipelineId en eventpipe.json es el UUID del pipeline en Pipe Studio, no el id del endpoint de webhook. En Pipe Studio → Event → IDs for CLI & API, copia Pipeline id. El id del endpoint se usa en las URLs /webhook/… y con listen.
Con un solo nodo de código, el id del nodo en settings.pipe debe coincidir con el que empaquetas (entrada por defecto: src/handler.ts). Con varios nodos, define un mapa codeNodes: ruta de entrada → id de nodo.
- Campos opcionales: nodeId y entry (atajo de una sola entrada), o codeNodes (mapa multi-entrada).
- La salida generada queda en .eventpipe/ tras build o push.
- En producción, los secretos se leen en context.env en el handler, configurados en la pestaña Event de la app—no uses process.env dentro del bundle.
eventpipe.json (mínimo, un solo nodo code)
{
"pipelineId": "TU_UUID_DE_PIPELINE",
"settings": {
"pipe": {
"schemaVersion": 3,
"nodes": [
{ "id": "code", "type": "code", "config": {} }
],
"edges": []
}
}
}eventpipe.json (varios nodos code)
{
"pipelineId": "TU_UUID_DE_PIPELINE",
"codeNodes": {
"src/handler.ts": "ID_DE_NODO_1",
"src/other.ts": "ID_DE_NODO_2"
},
"settings": {
"pipe": {
"schemaVersion": 3,
"nodes": [
{ "id": "ID_DE_NODO_1", "type": "code", "config": {} },
{ "id": "ID_DE_NODO_2", "type": "code", "config": {} }
],
"edges": []
}
}
}src/handler.ts
type FlowEvent = {
method: string;
headers: Record<string, string>;
body: unknown;
};
type FlowContext = { env?: Record<string, string> };
export async function handler(event: FlowEvent, _context: FlowContext) {
return { ok: true, received: event.body };
}build
Lee eventpipe.json desde el directorio actual o desde --dir. Empaqueta cada entrada con esbuild en .eventpipe/ e imprime tamaño en bytes, prefijo sha256 y rutas de salida. Cada bundle debe respetar el límite del plan (habitualmente 200KB UTF-8), validado en local y en el servidor.
- Flags: --dir <ruta> para otro directorio raíz del proyecto.
- Si hay varios nodos code y no defines codeNodes, la CLI resuelve una sola entrada cuando puede; si no, debes definir codeNodes (o nodeId + entry) explícitamente.
Ejemplos
eventpipe build
eventpipe build --dir ./packages/apipush
Ejecuta el mismo empaquetado que build y luego hace POST de bundles y settings para crear una nueva versión inmutable del pipeline. La autenticación usa solo la sesión guardada por login.
- Flags: --dir <ruta>; --pipeline <uuid> o --flow <uuid> para sustituir pipelineId del eventpipe.json solo en esta ejecución.
- Si tiene éxito, la CLI imprime el id del pipeline, el número de la nueva versión y el tamaño total de bundles.
Ejemplos
eventpipe push
eventpipe push --pipeline 00000000-0000-0000-0000-000000000000
eventpipe push --dir ./mi-pipelinecreate
Crea un nuevo endpoint de webhook en tu cuenta. Requiere login.
- Opcional --name <slug> para pedir un slug de URL; si está ocupado, la CLI puede asignar otro id y avisar.
- La salida incluye la URL del webhook y el id—usa el id con listen.
Ejemplos
eventpipe create
eventpipe create --name mi-endpointlisten
Transmite los webhooks capturados para ese id de endpoint a través del relay. Requiere login. El despliegue debe exponer un relay compatible (comportamiento por defecto del producto).
Opciones
| Opción | Corta | Descripción |
|---|---|---|
| --verbose | -v | Tras la línea resumida, imprime el JSON completo del evento (método, cabeceras, query, cuerpo). |
| --json | Un objeto JSON por línea en stdout (NDJSON)—fácil de canalizar a jq o scripts. | |
| --forward-to <url> | Reenvío HTTP: envía cada evento a tu URL (p. ej. servidor local). El estado va a stderr para no mezclar con --json en stdout. |
Ejemplos
eventpipe listen abc123
eventpipe listen abc123 -v
eventpipe listen abc123 --json | jq .
eventpipe listen abc123 --forward-to http://127.0.0.1:3000/webhookMCP para agentes de IA
La CLI incluye un servidor MCP (Model Context Protocol) integrado para que agentes de IA en Cursor, Claude Code, Claude Desktop u otro cliente compatible con MCP puedan inspeccionar y depurar tus pipelines directamente. Un solo comando crea la API key, guarda credenciales en ~/.eventpipe/mcp.json y fusiona la misma entrada del servidor en cada configuración de editor que elijas.
Configuración
Ejecuta mcp setup una vez después de login. Por defecto configura todos los clientes soportados: Cursor (.cursor/mcp.json y la skill eventpipe-debug), Claude Code (.mcp.json del proyecto y CLAUDE.md) y Claude Desktop (config de la app). Usa --client cursor solo para Cursor. La API key aparece como eventpipe MCP (auto) en Account → API keys.
Setup en un comando
eventpipe login
eventpipe mcp setup
eventpipe mcp setup --client cursorHerramientas disponibles
Tras el setup, tu cliente MCP arranca el servidor automáticamente (eventpipe debe estar en PATH). El agente puede llamar a estas herramientas sin curl ni scripts manuales:
| Herramienta | Propósito |
|---|---|
| list_endpoints | Listar todos los endpoints de webhook de tu cuenta. |
| list_pipelines | Listar pipelines asociados a un endpoint de webhook. |
| get_pipeline | Detalle del pipeline, versiones y settings.pipe. |
| execute_pipeline | Ejecutar la versión live con un payload de prueba (sin publicar). |
| list_executions | Ejecuciones recientes de un pipeline (estado, duración, errores). |
| get_execution | Detalle completo de una ejecución: logs, output y error. |
| get_request_executions | Todas las ejecuciones disparadas por un webhook request específico. |
Resources
El servidor MCP también expone dos recursos que el agente puede consultar: eventpipe://guide/debug-local (flujos de listen, forward-to y execute) y eventpipe://guide/ids (referencia de webhook id vs pipeline id). Esto asegura que el agente nunca confunda identificadores ni sugiera el flujo incorrecto.
Qué puede y qué no puede hacer el agente
- Puede: listar endpoints y pipelines, inspeccionar versiones, leer logs de ejecución, reproducir fallos con execute y sugerir comandos CLI para debug local.
- No puede: ejecutar listen o forward-to (procesos de larga duración que corren en terminal), publicar nuevas versiones (excluido intencionalmente por seguridad).
- La Cursor skill instalada enseña al agente cuándo usar las herramientas MCP y cuándo sugerir comandos CLI.
Revocar acceso
La API key creada por mcp setup aparece como eventpipe MCP (auto) en Account → API keys. Revócala cuando quieras desde el panel. Elimina ~/.eventpipe/mcp.json y la entrada eventpipe de cada configuración que añadiste (.cursor/mcp.json, .mcp.json o claude_desktop_config.json de Claude Desktop) para desconectar por completo.
update
Ejecuta npm install -g @eventpipe/cli@latest (en Windows usa npm.cmd). Úsalo cuando la CLI sugiera una versión más reciente en stderr.
Versión, ayuda y avisos de actualización
- eventpipe --version o eventpipe -v muestra la versión instalada del paquete.
- eventpipe, eventpipe help o eventpipe --help muestra el uso (banner, comandos, entorno).
- Tras la mayoría de comandos, la CLI puede consultar npm por una versión más nueva de @eventpipe/cli e imprimir una pista en stderr. Define EVENTPIPE_SKIP_UPDATE_CHECK=1 para desactivarlo (recomendado en CI ruidoso).
Variables de entorno
| Variable | Propósito |
|---|---|
| EVENTPIPE_BASE_URL | Origen de la app para login (por defecto https://eventpipe.app). Configúrala antes de login en instancias autoalojadas. |
| EVENTPIPE_SKIP_UPDATE_CHECK | Ponla a 1 para desactivar el mensaje de “hay una versión más nueva” en stderr. |
Límites y automatización
Cada bundle de nodo code debe respetar el tope de tu plan (habitualmente 200KB). Los pipelines con varios nodos code requieren mapear cada nodo con codeNodes (o un diseño inequívoco de un solo nodo); los grafos grandes también se pueden publicar desde Pipe Studio.
En CI, ejecuta login en un runner seguro o restaura credenciales en ~/.eventpipe antes del push; trata ese directorio como material secreto.
- Los límites por plan se resumen en Precios.
- El contrato de publicación coincide con POST /api/account/pipelines/{id}/versions en la referencia API.