惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
量子位
V
Visual Studio Blog
博客园 - Franky
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
罗磊的独立博客
小众软件
小众软件
V
V2EX
GbyAI
GbyAI
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
月光博客
月光博客
Recent Announcements
Recent Announcements
雷峰网
雷峰网
F
Fortinet All Blogs
M
MIT News - Artificial intelligence

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
GitHub - scottgl9/skelm: skelm - open-source framework fo...
scottgl · 2026-05-06 · via Hacker News - Newest: "AI"

Build secure, agentic, long-running workflows in TypeScript. Run them anywhere Node runs.

npm version License GitHub stars

skelm is a TypeScript framework for authoring, running, and operating workflows — typed orchestrations that mix deterministic code, LLM inference, and full agent loops behind a single, secure, default-deny execution model. Every workflow is schedulable: fire one once, schedule it on cron, register a webhook, or let it run continuously inside a long-lived gateway service.

Status: early development. APIs are unstable until v1. Star the repo, open issues, contribute fixes — feedback now is the most valuable feedback.


Get started in 60 seconds

1. Install the CLI.

npm install -g skelm

2. Scaffold a project.

skelm init my-bot && cd my-bot

You get a working project: one example workflow, an AGENTS.md agent definition, a SKILL.md skill package, and a skelm.config.ts with default-deny permissions.

3. Run your first workflow.

skelm run workflows/hello.workflow.ts

That's it. From here you can edit the workflow, add steps, schedule it, or stand up the gateway:

skelm run workflows/hello.workflow.ts --input '{"name":"world"}'   # one-off run
skelm schedule add workflows/hello.workflow.ts --cron '0 * * * *'  # cron
skelm gateway start                                                # long-running service

📖 Next: the quickstart walks through writing your second workflow with an LLM call.


Main features

  • TypeScript-native workflows. Real .ts modules — refactor, test, type-check, version like any other code. No DSL, no JSON config.
  • Three step kinds, none wrapping another. code() for deterministic logic, llm() for single inference calls, agent() for full multi-turn loops.
  • Default-deny security. Every agent step declares the tools, MCP servers, network hosts, and filesystem roots it may use. Anything undeclared is denied.
  • Multi-backend agents. Opencode, ACP (Copilot, Claude Code, Gemini), OpenAI, Anthropic, Pi — plus a provider SPI for custom backends.
  • MCP-native. Model Context Protocol servers are first-class registry citizens, lifecycle-managed by the gateway.
  • Native control flow. parallel, forEach, branch, loop, wait, and nested pipelines are core, not add-ons.
  • Scheduler-native. Every run is a schedule — immediate, cron, interval, webhook, poll, or queue.
  • Per-agent workspaces. Each agent step gets its own filesystem root, persistent or ephemeral, locked against corruption.
  • Persistent state and audit. Typed KV store, append-only decision journals, idempotency primitives, and a hash-chained tamper-evident audit log.
  • Long-running gateway. Hosts workflows over HTTP + SSE, drives the scheduler, owns the trust boundary.
  • Local-first. SQLite by default; Postgres + vault drivers for production. No managed cloud, no telemetry.
  • Markdown agent definitions. AGENTS.md for role, SOUL.md for persona, SKILL.md for capabilities — reviewable in PRs.

What you can build

If you have written any of these as a hand-rolled script, you have felt skelm-shaped pain:

  • A coding assistant reachable on chat that opens PRs in a persistent repo workspace.
  • A queue worker that watches Jira and tries to ship the ticket.
  • An email-triage agent that classifies, summarizes, and journals decisions you can audit.
  • A nightly digest that fans out, enriches with an LLM, and posts to Slack.
  • An HTTP endpoint that runs a typed workflow with three deterministic steps and one LLM call.

skelm gives you one substrate for all five.

Three tenets, in this order

  1. Security. Default-deny everywhere. A backend that cannot enforce a declared permission fails at step start instead of bypassing it. The gateway is the single trust boundary; nothing privileged happens outside it.
  2. Maintenance. A small core, a narrow public surface, no DSL. Workflows are TypeScript modules.
  3. Robustness. Typed context end-to-end. Explicit error semantics. Deterministic event log. Durable wait/resume. Persistent state and per-agent workspaces that survive restarts.

These outrank everything else. We will ship a smaller framework that is secure, maintainable, and robust before we ship a larger one that is not.

How it compares

skelm LangChain CrewAI n8n
Workflow format TypeScript modules Python code Python code JSON
Default-deny permissions ✅ Structural — part of the API Plugin
Per-agent workspaces ✅ Locked, persistent or ephemeral
Tamper-evident audit log ✅ Hash-chained
Long-running gateway ✅ HTTP + SSE + scheduler Self-build Self-build
Multi-backend agents ✅ ACP + SDK + provider SPI Plugin
MCP-native ✅ Lifecycle-managed Adapter Adapter
Self-hosted
Telemetry None Opt-out Opt-out Varies
License MIT MIT MIT Sustainable Use

Packages

Package Description
skelm Meta-package — install this. Re-exports @skelm/core + ships the bin
@skelm/core Runtime, types, builders, permission model, event bus
@skelm/cli CLI primitives — parser, commands, programmatic entry point
@skelm/gateway Long-running orchestrator: HTTP, registries, audit, agent lifecycle
@skelm/scheduler Cron / interval / webhook / poll / queue triggers
@skelm/integrations Typed connectors for GitHub, Slack, and friends
@skelm/opencode Opencode coding-agent backend with full permission enforcement
@skelm/pi Pi coding-agent backend with full permission enforcement
@skelm/metrics Prometheus-format metrics for skelm event streams
@skelm/otel OpenTelemetry tracing for skelm event streams

Documentation

Customer-facing docs live under docs/ — quickstart, full CLI/API/HTTP reference, deployment guides, recipes for common workflow shapes.

Community

The framework dogfoods itself: skelm's own pre-merge review and unit-test generation run as skelm workflows under pipelines/internal/. Reading those is a good way to learn the API and see how the security tenet works in practice.


A real workflow, end to end

Here is a workflow that triages a GitHub issue: a deterministic code() step fetches it, then an agent() step classifies it under tight default-deny permissions.

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

export default pipeline({
  id: 'triage-issue',
  input:  z.object({ repo: z.string(), issueNumber: z.number() }),
  output: z.object({ label: z.string(), reasoning: z.string() }),
  steps: [
    code({
      id: 'fetch',
      run: async (ctx) => {
        const res = await fetch(`https://api.github.com/repos/${ctx.input.repo}/issues/${ctx.input.issueNumber}`)
        return await res.json()
      },
    }),
    agent({
      id: 'classify',
      backend: 'anthropic',
      agentDef: './agents/triager',
      skills:  ['github-readonly'],
      mcp:     [{ id: 'gh', transport: 'stdio', command: 'mcp-github' }],
      permissions: {
        allowedTools:      ['gh.add_label'],
        allowedMcpServers: ['gh'],
        allowedSkills:     ['github-readonly'],
        networkEgress:     { allowHosts: ['api.github.com'] },
        fsRead:            ['./'],
        fsWrite:           [],
      },
      prompt: (ctx) => `Triage this issue:\n${JSON.stringify(ctx.steps.fetch)}`,
      output: z.object({ label: z.enum(['bug','feature','duplicate']), reasoning: z.string() }),
      maxTurns: 8,
    }),
  ],
})

Run it, schedule it, or expose it through the gateway:

# Run once
skelm run workflows/triage-issue.workflow.ts --input '{"repo":"acme/x","issueNumber":42}'

# Trigger from a webhook
skelm schedule add workflows/triage-issue.workflow.ts --webhook /webhooks/issue-events

# Or host it in the long-running gateway
skelm gateway start

Author

Scott Glover — scottgl@gmail.com

License

MIT. Copyright © Scott Glover.

If you build something interesting on skelm, we want to hear about it — open an issue with the showcase label.