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.
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 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.
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.
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.
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.
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.
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,
}),
],
})
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.
skelmMeta-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/coreRuntime, tipos, builders, schemas, events, permissões, registries, interface backend, composição de system prompt e primitivas de execução de pipeline.
@skelm/cliInterface 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/gatewayOrquestrador 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/schedulerGerenciamento de triggers para schedules cron, interval e webhook com deduplicação e políticas de sobreposição; usado pelo gateway para trabalho agendado.
@skelm/integrationsPacote de integrações tipadas para serviços de terceiros como GitHub, Slack, Jira, Telegram, Matrix e trigger sources de chat UI.
@skelm/integration-sdkSDK de autoria para integrações skelm e trigger sources customizados. Use para criar conectores que se plugam ao gateway.
@skelm/agentBackend 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/agentmemoryCliente 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/opencodeBackend coding-agent Opencode.ai com mapeamento nativo de permissões, enforcement granular e suporte a ciclo de vida supervisionado pelo gateway.
@skelm/piBackend SDK coding-agent Pi com enforcement nativo de tool allowlist, suporte infer(), defaults de sandbox e controles de queue.
@skelm/codexBackend 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-aiBackend 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/metricsMétricas em formato Prometheus para skelm event streams: contadores de runs, tempos de steps, permission denials, approvals e trigger fires.
@skelm/otelTracing OpenTelemetry para skelm event streams, emitindo spans de run e step sem configurar exporters por você.
Instale a CLI, gere um projeto ou use `skelm builder` para rascunhar um workflow a partir de uma especificação em linguagem natural.