Show HN: Skawld – Open-source SDK for company-specific AI agents 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. 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. Runs on Node.js 18+ and Bun 1.1+ . ESM-only. Full documentation: https://skawld.com/docs https://skawld.com/docs pick your package manager Bun is reccomended bun add @skawld/agent-sdk npm is also supported npm install @skawld/agent-sdk pnpm add @skawld/agent-sdk yarn add @skawld/agent-sdk js import { Agent } from "@skawld/agent-sdk"; import { AnthropicProvider } from "@skawld/agent-sdk/providers"; import { defaultTools } from "@skawld/agent-sdk/tools"; const agent = new Agent { provider: new AnthropicProvider , // reads ANTHROPIC API KEY from env model: "claude-opus-4-5", tools: defaultTools , permissions: { mode: "default" }, } ; const session = await agent.session ; for await const event of session.run "List the files in the current directory." { if event.type === "assistant" { for const block of event.message.content { if block.type === "text" process.stdout.write block.text ; } } if event.type === "result" break; } await agent.close ; See examples/minimal-agent.ts /skawld/skawld-sdk/blob/main/examples/minimal-agent.ts for a complete runnable version. 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 yolo permission mode against the OpenAIResponsesProvider .Setup: export OPENAI API KEY=sk-... optional overrides export SKAWLD MODEL=gpt-5 default: gpt-5 export SKAWLD CONFIG DIR=./.skawld default: ./.skawld Run: bun run examples/interactive-cli.ts On startup it prompts for a working directory defaults to the current one , then accepts free-form messages. Type /exit or press Ctrl+C to quit. | Provider class | Subpath | Environment variable | |---|---|---| AnthropicProvider | @skawld/agent-sdk/providers | ANTHROPIC API KEY | OpenAIChatCompletionsProvider | @skawld/agent-sdk/providers | OPENAI API KEY | OpenAIResponsesProvider | @skawld/agent-sdk/providers | OPENAI API KEY | js import { AnthropicProvider, OpenAIChatCompletionsProvider, OpenAIResponsesProvider, } from "@skawld/agent-sdk/providers"; | Variable | Used by | |---|---| ANTHROPIC API KEY | AnthropicProvider falls back to SDK default lookup | OPENAI API KEY | OpenAIChatCompletionsProvider , OpenAIResponsesProvider | By default, sessions persist to SQLite at .skawld/sessions.db . For tests or embedded applications, pass a custom sessionStore , such as InMemorySessionStore . js import { Agent } from "@skawld/agent-sdk"; import { InMemorySessionStore } from "@skawld/agent-sdk/sessions"; const agent = new Agent { provider, model, sessionStore: new InMemorySessionStore , } ; @skawld/agent-sdk → Agent, Session, defaultTools, MCP helpers, core types, Event types, Error classes @skawld/agent-sdk/providers → AnthropicProvider, OpenAIChatCompletionsProvider, OpenAIResponsesProvider, BaseProvider @skawld/agent-sdk/tools → ToolRegistry, defaultTools, built-in tool classes, MCP tool helpers, task types @skawld/agent-sdk/sessions → SqliteSessionStore, InMemorySessionStore, SessionStore and task persistence types @skawld/agent-sdk/permissions → PermissionEngine, permission callback types, permission rule types MIT