{"slug": "show-hn-skawld-open-source-sdk-for-company-specific-ai-agents", "title": "Show HN: Skawld – Open-source SDK for company-specific AI agents", "summary": "Skawld has released an open-source TypeScript SDK that enables developers to embed full AI agent loops—including tools, sessions, permissions, streaming events, and subagents—into Node.js and Bun applications with a single import. The SDK supports multiple AI providers including Anthropic and OpenAI, offers built-in session persistence via SQLite, and is available under an MIT license.", "body_md": "An open-source all-purpose TypeScript agent harness. Embed a full agent loop — tools, sessions, permissions, streaming events, subagents — into any Node.js or Bun application with a single import.\n\nRuns on **Node.js 18+** and **Bun 1.1+**. ESM-only.\n\n**Full documentation:** [https://skawld.com/docs](https://skawld.com/docs)\n\n```\n# pick your package manager\n# Bun is reccomended\nbun add @skawld/agent-sdk\n# npm is also supported\nnpm install @skawld/agent-sdk\npnpm add @skawld/agent-sdk\nyarn add @skawld/agent-sdk\njs\nimport { Agent } from \"@skawld/agent-sdk\";\nimport { AnthropicProvider } from \"@skawld/agent-sdk/providers\";\nimport { defaultTools } from \"@skawld/agent-sdk/tools\";\n\nconst agent = new Agent({\n  provider: new AnthropicProvider(),   // reads ANTHROPIC_API_KEY from env\n  model: \"claude-opus-4-5\",\n  tools: defaultTools(),\n  permissions: { mode: \"default\" },\n});\n\nconst session = await agent.session();\n\nfor await (const event of session.run(\"List the files in the current directory.\")) {\n  if (event.type === \"assistant\") {\n    for (const block of event.message.content) {\n      if (block.type === \"text\") process.stdout.write(block.text);\n    }\n  }\n  if (event.type === \"result\") break;\n}\n\nawait agent.close();\n```\n\nSee [ examples/minimal-agent.ts](/skawld/skawld-sdk/blob/main/examples/minimal-agent.ts) for a complete runnable version.\n\n[ examples/interactive-cli.ts](/skawld/skawld-sdk/blob/main/examples/interactive-cli.ts) is a small REPL that streams agent events, renders subagent activity in live boxes, and runs in\n\n`yolo`\n\npermission mode against the `OpenAIResponsesProvider`\n\n.Setup:\n\n```\nexport OPENAI_API_KEY=sk-...\n# optional overrides\nexport SKAWLD_MODEL=gpt-5            # default: gpt-5\nexport SKAWLD_CONFIG_DIR=./.skawld   # default: ./.skawld\n```\n\nRun:\n\n```\nbun run examples/interactive-cli.ts\n```\n\nOn startup it prompts for a working directory (defaults to the current one), then accepts free-form messages. Type `/exit`\n\nor press `Ctrl+C`\n\nto quit.\n\n| Provider class | Subpath | Environment variable |\n|---|---|---|\n`AnthropicProvider` |\n`@skawld/agent-sdk/providers` |\n`ANTHROPIC_API_KEY` |\n`OpenAIChatCompletionsProvider` |\n`@skawld/agent-sdk/providers` |\n`OPENAI_API_KEY` |\n`OpenAIResponsesProvider` |\n`@skawld/agent-sdk/providers` |\n`OPENAI_API_KEY` |\n\n``` js\nimport {\n  AnthropicProvider,\n  OpenAIChatCompletionsProvider,\n  OpenAIResponsesProvider,\n} from \"@skawld/agent-sdk/providers\";\n```\n\n| Variable | Used by |\n|---|---|\n`ANTHROPIC_API_KEY` |\n`AnthropicProvider` (falls back to SDK default lookup) |\n`OPENAI_API_KEY` |\n`OpenAIChatCompletionsProvider` , `OpenAIResponsesProvider` |\n\nBy default, sessions persist to SQLite at `.skawld/sessions.db`\n\n. For tests or embedded applications, pass a custom `sessionStore`\n\n, such as `InMemorySessionStore`\n\n.\n\n``` js\nimport { Agent } from \"@skawld/agent-sdk\";\nimport { InMemorySessionStore } from \"@skawld/agent-sdk/sessions\";\n\nconst agent = new Agent({\n  provider,\n  model,\n  sessionStore: new InMemorySessionStore(),\n});\n@skawld/agent-sdk             → Agent, Session, defaultTools, MCP helpers, core types, Event types, Error classes\n@skawld/agent-sdk/providers   → AnthropicProvider, OpenAIChatCompletionsProvider, OpenAIResponsesProvider, BaseProvider\n@skawld/agent-sdk/tools       → ToolRegistry, defaultTools, built-in tool classes, MCP tool helpers, task types\n@skawld/agent-sdk/sessions    → SqliteSessionStore, InMemorySessionStore, SessionStore and task persistence types\n@skawld/agent-sdk/permissions → PermissionEngine, permission callback types, permission rule types\n```\n\nMIT", "url": "https://wpnews.pro/news/show-hn-skawld-open-source-sdk-for-company-specific-ai-agents", "canonical_source": "https://github.com/skawld/skawld-sdk", "published_at": "2026-06-03 11:19:22+00:00", "updated_at": "2026-06-03 11:47:53.382124+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-infrastructure", "artificial-intelligence"], "entities": ["Skawld", "Anthropic", "Node.js", "Bun"], "alternates": {"html": "https://wpnews.pro/news/show-hn-skawld-open-source-sdk-for-company-specific-ai-agents", "markdown": "https://wpnews.pro/news/show-hn-skawld-open-source-sdk-for-company-specific-ai-agents.md", "text": "https://wpnews.pro/news/show-hn-skawld-open-source-sdk-for-company-specific-ai-agents.txt", "jsonld": "https://wpnews.pro/news/show-hn-skawld-open-source-sdk-for-company-specific-ai-agents.jsonld"}}