Open source · MIT · TypeScript · v0.4.7

skelm — workflows agênticos que você realmente pode levar para produção

Crie pipelines TypeScript tipados que combinam código determinístico, inferência de chamada única e loops completos de agent atrás de permissões default-deny e de um gateway que você controla. Rode automações rápidas, cron jobs, webhooks, aprovações duráveis e workflows de chat persistentes com o mesmo formato 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"}'

Um modelo de autoria, de scripts a agents duráveis.

Um workflow é um módulo TypeScript tipado. Use código determinístico, inferência de modelo e loops de agent diretamente; depois hospede o mesmo workflow pelo gateway quando ele precisar de schedules, webhooks, queues ou estado durável.

code()

Lógica determinística

Etapas TypeScript puras para fetches, transformações, branches, loops, trabalho paralelo, waits e chamadas de pipelines aninhados. Verifique tipos, refatore, teste e versione como código comum.

infer()

Inferência de chamada única

Uma chamada ao modelo com entrada tipada e output estruturado. `infer()` é para julgamento do LLM sem loop de ferramentas, com providers como endpoints compatíveis com OpenAI, Anthropic, Pi, Vercel AI ou backends customizados.

agent()

Loops de agent multi-turno

Etapas agent completas com tools, servidores MCP, skills, workspaces e permissões default-deny. Backends incluem @skelm/agent, Opencode, Pi, Codex, Vercel AI, agents ACP e providers customizados.

Trust boundary controlada pelo gateway

Permissões fazem parte da API, não são detalhe posterior

Toda ação privilegiada passa pelo gateway sob permissões declaradas em código. Um backend que não consegue aplicar uma permissão declarada falha no início da etapa em vez de contorná-la silenciosamente.

  • As dimensões default-deny cobrem tools, executables, servidores MCP, skills, egress de rede, raízes do filesystem, delegation e operações agentmemory.
  • O gateway hospeda workflows via HTTP + SSE, dirige triggers de scheduler, queue, file-watch, poll, webhook e event-source, e possui a superfície de execução.
  • Runs podem pausar para approval humana, retomar de estado durável e preservar conversas persistentes com session key entre reinicializações.
  • Audit, secrets, isolamento de workspace, ciclo de vida MCP e supervisão de agent ficam dentro da mesma trust boundary do gateway.

Um workflow real, de ponta a ponta

Incident response dos exemplos atuais: triagem determinística paralela, depois uma etapa agent com permissões explícitas para tools, MCP, filesystem e rede.

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,
    }),
  ],
})

Pacotes

skelm é distribuído como pacotes focados. Instale o meta-pacote `skelm` para runtime e CLI; depois adicione pacotes de backend, integration, memory, metrics ou tracing conforme necessário.

skelm

Meta-pacote — instale este. Re-exporta @skelm/core, inclui o binário CLI skelm e depende das partes CLI, scheduler e integration SDK necessárias para execução local.

@skelm/core

Runtime, tipos, builders, schemas, events, permissões, registries, interface backend, composição de system prompt e primitivas de execução de pipeline.

@skelm/cli

Interface de linha de comando e primitivas programáticas. Comandos não isentos despacham para o gateway local; `init`, `validate` e `gateway *` podem rodar sem gateway ativo.

@skelm/gateway

Orquestrador de longa duração que possui config, registries, permissões, audit, ciclo de vida de agent, triggers, HTTP/SSE, dashboard API e trust boundary de execução.

@skelm/scheduler

Gerenciamento de triggers para schedules cron, interval e webhook com deduplicação e políticas de sobreposição; usado pelo gateway para trabalho agendado.

@skelm/integrations

Pacote de integrações tipadas para serviços de terceiros como GitHub, Slack, Jira, Telegram, Matrix e trigger sources de chat UI.

@skelm/integration-sdk

SDK de autoria para integrações skelm e trigger sources customizados. Use para criar conectores que se plugam ao gateway.

@skelm/agent

Backend agent nativo first-party. Executa infer() e agent() contra endpoints de chat compatíveis com OpenAI com verificações de permissão TrustEnforcer in-process.

@skelm/agentmemory

Cliente REST tipado e AgentmemoryHandle ligado ao gateway para recall entre sessões. Operações são default-deny e passam pelo enforcement do gateway.

@skelm/opencode

Backend coding-agent Opencode.ai com mapeamento nativo de permissões, enforcement granular e suporte a ciclo de vida supervisionado pelo gateway.

@skelm/pi

Backend SDK coding-agent Pi com enforcement nativo de tool allowlist, suporte infer(), defaults de sandbox e controles de queue.

@skelm/codex

Backend OpenAI Codex via @openai/codex-sdk com mapeamento de permissões na boundary, injeção MCP, carregamento de skills, session lifecycle e streaming.

@skelm/vercel-ai

Backend Vercel AI SDK que alimenta infer() e agent() com filtragem de tools e verificações de permissão por chamada sob a policy skelm.

@skelm/metrics

Métricas em formato Prometheus para skelm event streams: contadores de runs, tempos de steps, permission denials, approvals e trigger fires.

@skelm/otel

Tracing OpenTelemetry para skelm event streams, emitindo spans de run e step sem configurar exporters por você.

Pronto para shippar um workflow?

Instale a CLI, gere um projeto ou use `skelm builder` para rascunhar um workflow a partir de uma especificação em linguagem natural.