결정적 로직
fetches, transforms, branches, loops, parallel work, waits, nested pipeline calls를 위한 순수 TypeScript steps. 일반 code처럼 type-check, refactor, test, version 관리할 수 있습니다.
타입이 있는 TypeScript pipelines 안에서 결정적 code, 단발 inference, 완전한 agent loops를 default-deny 권한과 직접 소유한 gateway 뒤에 결합하세요. 같은 모듈 형태로 빠른 자동화, cron jobs, webhooks, durable approvals, persistent chat workflows를 실행할 수 있습니다.
$ npm install -g skelm
$ skelm init my-bot && cd my-bot && npm install
$ skelm run workflows/hello.workflow.mts --input '{"name":"world"}'
workflow는 타입이 있는 TypeScript 모듈입니다. 결정적 code, model inference, agent loops를 직접 사용하고, schedules, webhooks, queues, durable state가 필요해지면 같은 workflow를 gateway를 통해 host합니다.
fetches, transforms, branches, loops, parallel work, waits, nested pipeline calls를 위한 순수 TypeScript steps. 일반 code처럼 type-check, refactor, test, version 관리할 수 있습니다.
타입이 있는 input과 structured output을 가진 하나의 model call. `infer()`는 tool loop 없이 LLM 판단이 필요할 때 쓰며, OpenAI-compatible endpoints, Anthropic, Pi, Vercel AI, custom backends 등이 지원합니다.
tools, MCP servers, skills, workspaces, default-deny permissions를 갖춘 완전한 agent steps. Backends에는 @skelm/agent, Opencode, Pi, Codex, Vercel AI, ACP agents, custom providers가 포함됩니다.
모든 privileged action은 code에 선언된 permissions 아래 gateway를 통과합니다. 선언된 permission을 강제할 수 없는 backend는 조용히 우회하지 않고 step start에서 실패합니다.
현재 examples의 incident response: 병렬 deterministic triage 이후 tools, MCP, filesystem, network permissions가 명시된 agent step을 실행합니다.
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은 focused packages로 배포됩니다. runtime과 CLI에는 meta-package `skelm`을 설치하고, 필요에 따라 backend, integration, memory, metrics, tracing packages를 추가하세요.
skelmMeta-package — 이것을 설치하세요. @skelm/core를 re-export하고 skelm CLI binary를 제공하며 local execution에 필요한 CLI, scheduler, integration SDK에 의존합니다.
@skelm/coreRuntime, types, builders, schemas, events, permissions, registries, backend interface, system prompt composition, pipeline execution primitives.
@skelm/cliCommand-line interface와 programmatic primitives. 비 exempt commands는 local gateway로 dispatch됩니다. `init`, `validate`, `gateway *`는 live gateway 없이 실행할 수 있습니다.
@skelm/gatewayconfig, registries, permissions, audit, agent lifecycle, triggers, HTTP/SSE, dashboard API, execution trust boundary를 소유하는 long-running orchestrator.
@skelm/schedulerdeduplication과 overlap policies를 갖춘 cron, interval, webhook schedules용 trigger management. gateway가 scheduled work에 사용합니다.
@skelm/integrationsGitHub, Slack, Jira, Telegram, Matrix, chat UI trigger sources 같은 third-party services용 typed integration package.
@skelm/integration-sdkcustom skelm integrations와 trigger sources를 만들기 위한 authoring SDK. gateway에 plug in되는 connectors를 만들 때 사용합니다.
@skelm/agentFirst-party native agent backend. OpenAI-compatible chat endpoints에 대해 infer()와 agent()를 실행하며 in-process TrustEnforcer permission checks를 수행합니다.
@skelm/agentmemorycross-session recall을 위한 typed REST client와 gateway-wired AgentmemoryHandle. Operations는 default-deny이며 gateway enforcement를 통해 route됩니다.
@skelm/opencodenative permission mapping, granular enforcement, gateway-supervised lifecycle support를 갖춘 Opencode.ai coding-agent backend.
@skelm/pinative tool allowlist enforcement, infer() support, sandbox defaults, queue controls를 갖춘 Pi coding-agent SDK backend.
@skelm/codex@openai/codex-sdk 기반 OpenAI Codex backend. boundary permission mapping, MCP injection, skill loading, session lifecycle, streaming을 지원합니다.
@skelm/vercel-aiskelm policy 아래 tool filtering과 call-time permission checks로 infer()와 agent()를 구동하는 Vercel AI SDK backend.
@skelm/metricsskelm event streams용 Prometheus-format metrics: run counters, step timings, permission denials, approvals, trigger fires.
@skelm/otelexporters를 대신 구성하지 않고 run 및 step spans를 emit하는 skelm event streams용 OpenTelemetry tracing.