Código abierto · MIT · TypeScript · v0.4.7

skelm — workflows agénticos que puedes llevar a producción

Construye pipelines TypeScript tipados que combinan código determinista, inferencia de un solo disparo y bucles completos de agent bajo permisos default-deny y un gateway propio. Ejecuta automatizaciones rápidas, cron jobs, webhooks, aprobaciones durables y workflows de chat persistente con la misma forma de módulo.

$ npm install -g skelm
$ skelm init my-bot && cd my-bot && npm install
$ skelm run workflows/hello.workflow.mts --input '{"name":"world"}'

Un modelo de autoría, desde scripts hasta agentes durables.

Un workflow es un módulo TypeScript tipado. Usa código determinista, inferencia de modelo y bucles de agent directamente, y hospeda el mismo workflow en el gateway cuando necesite schedules, webhooks, queues o estado durable.

code()

Lógica determinista

Pasos de TypeScript puro para fetches, transformaciones, branch, loop, parallel, wait y llamadas a pipelines anidados. Verifícalos por tipos, refactorízalos, testéalos y versiónalos como código normal.

infer()

Inferencia de un solo disparo

Una llamada al modelo con entrada tipada y output estructurado. `infer()` sirve para juicio del LLM sin bucle de herramientas, con backends como endpoints compatibles con OpenAI, Anthropic, Pi, Vercel AI o backends personalizados.

agent()

Bucles de agent multi-turno

Pasos agent completos con herramientas, servidores MCP, skills, workspaces y permisos default-deny. Los backends incluyen @skelm/agent, Opencode, Pi, Codex, Vercel AI, agentes ACP y proveedores personalizados.

Trust boundary propiedad del gateway

Los permisos son parte de la API, no una ocurrencia tardía

Cada acción privilegiada fluye por el gateway bajo permisos declarados en código. Un backend que no pueda hacer cumplir un permiso declarado falla al iniciar el paso en lugar de saltárselo silenciosamente.

  • Las dimensiones default-deny cubren tools, executables, servidores MCP, skills, egreso de red, raíces del filesystem, delegación y operaciones de agentmemory.
  • El gateway hospeda workflows por HTTP + SSE, maneja scheduler, queue, file-watch, poll, webhook y event-source triggers, y posee la superficie de ejecución.
  • Las ejecuciones pueden pausar por aprobación humana, reanudarse desde estado durable y preservar conversaciones persistentes con session key entre reinicios.
  • Audit, secrets, aislamiento de workspace, ciclo de vida MCP y supervisión de agentes permanecen dentro del mismo trust boundary del gateway.

Un workflow real, de principio a fin

Incident response desde los ejemplos actuales: triaje determinista en paralelo y luego un paso agent con permisos explícitos para tools, MCP, filesystem y red.

import { agent, code, parallel, pipeline } from 'skelm'
import { z } from 'zod'

export default pipeline({
  id: 'incident-response',
  input: z.object({
    incidentId: z.string(),
    service: z.string(),
    description: z.string(),
  }),
  output: z.object({
    rootCause: z.string(),
    immediateActions: z.array(z.string()),
  }),
  triggers: [{ kind: 'webhook', path: '/webhooks/incident' }],
  steps: [
    parallel({
      id: 'triage',
      steps: [
        code({ id: 'search-issues', run: () => ({ issues: [] }) }),
        code({ id: 'open-channel', run: () => ({ channel: 'inc-001' }) }),
      ],
    }),
    agent({
      id: 'root-cause',
      backend: 'opencode',
      prompt: (ctx) => `Analyze this incident:\n${ctx.input.description}`,
      permissions: {
        allowedTools: ['gh.search_issues', 'slack.post_message'],
        allowedMcpServers: ['github'],
        allowedExecutables: [],
        fsRead: [],
        fsWrite: [],
        networkEgress: { allowHosts: ['api.github.com', 'slack.com'] },
      },
      output: z.object({
        rootCause: z.string(),
        immediateActions: z.array(z.string()),
      }),
      maxTurns: 4,
    }),
  ],
})

Paquetes

skelm se distribuye como paquetes enfocados. Instala el meta-paquete `skelm` para runtime y CLI; agrega backends, integraciones, memoria, métricas o trazas según necesites.

skelm

Meta-paquete — instala este. Re-exporta @skelm/core, incluye el binario CLI skelm y depende de CLI, scheduler e integration SDK para ejecución local.

@skelm/core

Runtime, tipos, builders, schemas, eventos, permisos, registries, interfaz de backend, composición de system prompt y primitivas de ejecución de pipelines.

@skelm/cli

Interfaz de línea de comandos y primitivas programáticas. Los comandos no exentos despachan al gateway local; `init`, `validate` y `gateway *` pueden correr sin gateway activo.

@skelm/gateway

Orquestador de larga duración que posee config, registries, permisos, audit, ciclo de vida de agentes, triggers, HTTP/SSE, dashboard API y trust boundary de ejecución.

@skelm/scheduler

Gestión de triggers cron, interval y webhook con deduplicación y políticas de solapamiento; lo usa el gateway para trabajo programado.

@skelm/integrations

Paquete de integraciones tipadas para servicios de terceros como GitHub, Slack, Jira, Telegram, Matrix y trigger sources de chat UI.

@skelm/integration-sdk

SDK de autoría para integraciones skelm y trigger sources personalizados. Úsalo para construir conectores que se enchufen al gateway.

@skelm/agent

Backend agent nativo first-party. Ejecuta infer() y agent() contra endpoints de chat compatibles con OpenAI con checks de permisos TrustEnforcer en proceso.

@skelm/agentmemory

Cliente REST tipado y AgentmemoryHandle cableado al gateway para memoria entre sesiones. Las operaciones son default-deny y pasan por enforcement del gateway.

@skelm/opencode

Backend de coding-agent Opencode.ai con mapeo nativo de permisos, enforcement granular y soporte de ciclo de vida supervisado por el gateway.

@skelm/pi

Backend SDK de coding-agent Pi con allowlist nativa de tools, soporte infer(), defaults de sandbox y controles de cola.

@skelm/codex

Backend OpenAI Codex vía @openai/codex-sdk con mapeo de permisos en el boundary, inyección MCP, carga de skills, ciclo de vida de sesión y streaming.

@skelm/vercel-ai

Backend Vercel AI SDK que impulsa infer() y agent() con filtrado de tools y checks de permisos en cada llamada bajo la política de skelm.

@skelm/metrics

Métricas en formato Prometheus para streams de eventos skelm: contadores de runs, tiempos de step, denegaciones, approvals y disparos de triggers.

@skelm/otel

Trazas OpenTelemetry para streams de eventos skelm, emitiendo spans de run y step sin configurar exporters por ti.

¿Listo para enviar un workflow?

Instala la CLI, genera un proyecto o usa `skelm builder` para crear un workflow desde una especificación en lenguaje natural.