Logique déterministe
Étapes TypeScript pures pour fetches, transformations, branches, loops, travail parallèle, waits et appels de pipelines imbriqués. Vérifiez les types, refactorisez, testez et versionnez-les comme du code ordinaire.
Créez des pipelines TypeScript typés qui mélangent code déterministe, inférence ponctuelle et boucles agent complètes derrière des permissions default-deny et un gateway que vous contrôlez. Exécutez automatisations rapides, cron jobs, webhooks, validations durables et workflows de chat persistants avec la même forme de module.
$ npm install -g skelm
$ skelm init my-bot && cd my-bot && npm install
$ skelm run workflows/hello.workflow.mts --input '{"name":"world"}'
Un workflow est un module TypeScript typé. Utilisez directement du code déterministe, l’inférence de modèle et les boucles agent, puis hébergez le même workflow via le gateway quand il lui faut schedules, webhooks, queues ou état durable.
Étapes TypeScript pures pour fetches, transformations, branches, loops, travail parallèle, waits et appels de pipelines imbriqués. Vérifiez les types, refactorisez, testez et versionnez-les comme du code ordinaire.
Un appel de modèle avec entrée typée et output structuré. `infer()` sert au jugement du LLM sans boucle d’outils, avec des providers comme les endpoints compatibles OpenAI, Anthropic, Pi, Vercel AI ou des backends personnalisés.
Étapes agent complètes avec tools, serveurs MCP, skills, workspaces et permissions default-deny. Les backends incluent @skelm/agent, Opencode, Pi, Codex, Vercel AI, les agents ACP et les providers personnalisés.
Chaque action privilégiée passe par le gateway avec des permissions déclarées dans le code. Un backend qui ne peut pas appliquer une permission déclarée échoue au démarrage de l’étape au lieu de la contourner silencieusement.
Incident response depuis les exemples actuels : triage déterministe en parallèle, puis une étape agent avec permissions explicites pour tools, MCP, filesystem et réseau.
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 est livré sous forme de paquets ciblés. Installez le méta-paquet `skelm` pour le runtime et la CLI, puis ajoutez des paquets backend, integration, memory, metrics ou tracing selon vos besoins.
skelmMéta-paquet — installez celui-ci. Ré-exporte @skelm/core, fournit le binaire CLI skelm et dépend des parties CLI, scheduler et integration SDK nécessaires à l’exécution locale.
@skelm/coreRuntime, types, builders, schemas, events, permissions, registries, interface backend, composition du system prompt et primitives d’exécution pipeline.
@skelm/cliInterface en ligne de commande et primitives programmatiques. Les commandes non exemptées dispatchent vers le gateway local ; `init`, `validate` et `gateway *` peuvent fonctionner sans gateway actif.
@skelm/gatewayOrchestrateur longue durée qui possède config, registries, permissions, audit, lifecycle agent, triggers, HTTP/SSE, dashboard API et trust boundary d’exécution.
@skelm/schedulerGestion des triggers pour schedules cron, interval et webhook avec déduplication et politiques d’overlap ; utilisé par le gateway pour le travail planifié.
@skelm/integrationsPaquet d’intégrations typées pour services tiers comme GitHub, Slack, Jira, Telegram, Matrix et sources de trigger chat UI.
@skelm/integration-sdkSDK d’auteur pour intégrations skelm et trigger sources personnalisés. Utilisez-le pour créer des connecteurs branchés au gateway.
@skelm/agentBackend agent natif first-party. Exécute infer() et agent() contre des endpoints chat compatibles OpenAI avec contrôles de permissions TrustEnforcer in-process.
@skelm/agentmemoryClient REST typé et AgentmemoryHandle câblé au gateway pour le recall entre sessions. Les opérations sont default-deny et passent par l’enforcement du gateway.
@skelm/opencodeBackend coding-agent Opencode.ai avec mapping natif des permissions, enforcement granulaire et prise en charge du lifecycle supervisé par le gateway.
@skelm/piBackend SDK coding-agent Pi avec enforcement natif de tool allowlist, support infer(), defaults sandbox et contrôles de queue.
@skelm/codexBackend OpenAI Codex via @openai/codex-sdk avec mapping des permissions à la boundary, injection MCP, chargement des skills, session lifecycle et streaming.
@skelm/vercel-aiBackend Vercel AI SDK qui pilote infer() et agent() avec filtrage des tools et contrôles de permission à chaque appel sous la policy skelm.
@skelm/metricsMétriques au format Prometheus pour les skelm event streams : compteurs de runs, durées de steps, permission denials, approvals et trigger fires.
@skelm/otelTracing OpenTelemetry pour skelm event streams, émettant des spans run et step sans configurer les exporters pour vous.
Installez la CLI, générez un projet ou utilisez `skelm builder` pour ébaucher un workflow depuis une spécification en langage naturel.