{"id":50372398,"url":"https://github.com/AgentsKit-io/agentskit","last_synced_at":"2026-06-01T01:00:43.308Z","repository":{"id":348812236,"uuid":"1199981954","full_name":"AgentsKit-io/agentskit","owner":"AgentsKit-io","description":"The complete toolkit for building AI agents in JavaScript. Lightweight core, React \u0026 Terminal UIs, autonomous runtime, tools, skills, memory, RAG and observability. Plug-and-play from chat UI to full agents.","archived":false,"fork":false,"pushed_at":"2026-05-19T18:26:31.000Z","size":9561,"stargazers_count":4,"open_issues_count":27,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T19:59:49.870Z","etag":null,"topics":["agent-framework","agentkit","ai","ai-agent","ai-agents","ai-tools","anthropic","chat","claude","claude-code","gpt","harness-engineering","harness-framework","hooks","llm","openai","rag","react","streaming","typescript"],"latest_commit_sha":null,"homepage":"https://www.agentskit.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AgentsKit-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":"GOVERNANCE.md","roadmap":"docs/ROADMAP-PRD.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["EmersonBraun"]}},"created_at":"2026-04-02T23:05:48.000Z","updated_at":"2026-05-19T18:26:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"5571d341-e117-4578-9b3a-e09d907bb4bb","html_url":"https://github.com/AgentsKit-io/agentskit","commit_stats":null,"previous_names":["emersonbraun/agentkit","emersonbraun/agentskit","agentskit-io/agentskit"],"tags_count":189,"template":false,"template_full_name":null,"purl":"pkg:github/AgentsKit-io/agentskit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentsKit-io%2Fagentskit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentsKit-io%2Fagentskit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentsKit-io%2Fagentskit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentsKit-io%2Fagentskit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AgentsKit-io","download_url":"https://codeload.github.com/AgentsKit-io/agentskit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentsKit-io%2Fagentskit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33755369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-framework","agentkit","ai","ai-agent","ai-agents","ai-tools","anthropic","chat","claude","claude-code","gpt","harness-engineering","harness-framework","hooks","llm","openai","rag","react","streaming","typescript"],"created_at":"2026-05-30T08:00:26.065Z","updated_at":"2026-06-01T01:00:43.300Z","avatar_url":"https://github.com/AgentsKit-io.png","language":"TypeScript","funding_links":["https://github.com/sponsors/EmersonBraun"],"categories":["Development Utilities","UI Libraries","Frameworks"],"sub_categories":["AI","Mobile","Tools"],"readme":"\u003cdiv align=\"center\"\u003e\n\n# AgentsKit.js\n\n**The agent toolkit JavaScript actually deserves.**\n\nA 10KB core. Nineteen focused packages. Zero lock-in. Six formal contracts that make every adapter, tool, skill, memory, retriever, and runtime substitutable.\n\n[![npm](https://img.shields.io/npm/v/@agentskit/react?label=npm)](https://www.npmjs.com/package/@agentskit/react)\n[![bundle](https://img.shields.io/bundlephobia/minzip/@agentskit/react?label=react%20bundle)](https://bundlephobia.com/package/@agentskit/react)\n[![license](https://img.shields.io/npm/l/@agentskit/react?label=license)](./LICENSE)\n[![Discord](https://img.shields.io/badge/Discord-join-5865F2?logo=discord\u0026logoColor=white)](https://discord.gg/zx6z2p4jVb)\n[![GitHub stars](https://img.shields.io/github/stars/AgentsKit-io/agentskit?style=social)](https://github.com/AgentsKit-io/agentskit)\n[![GitHub issues](https://img.shields.io/github/issues/AgentsKit-io/agentskit)](https://github.com/AgentsKit-io/agentskit/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/AgentsKit-io/agentskit)](https://github.com/AgentsKit-io/agentskit/pulls)\n[![Last commit](https://img.shields.io/github/last-commit/AgentsKit-io/agentskit)](https://github.com/AgentsKit-io/agentskit/commits)\n[![npm downloads](https://img.shields.io/npm/dm/@agentskit/core?label=core%20downloads)](https://www.npmjs.com/package/@agentskit/core)\n\n[**Documentation**](https://www.agentskit.io) · [**Discord**](https://discord.gg/zx6z2p4jVb) · [**Roadmap**](https://github.com/orgs/AgentsKit-io/projects/1) · [**Manifesto**](./MANIFESTO.md) · [**Origin**](./ORIGIN.md) · [**Architecture**](./docs/architecture/adrs)\n\n\u003ca href=\"https://www.producthunt.com/products/agentskit?embed=true\u0026utm_source=badge-featured\u0026utm_medium=badge\u0026utm_campaign=badge-agentskit\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1125539\u0026theme=light\" alt=\"AgentsKit — The most complete ecosystem to create AI agents | Product Hunt\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n---\n\n*You started building an AI agent last week. You're three libraries deep, two of them fight each other, and nothing you wrote is reusable. This is for you.*\n\n## Why this exists\n\n**We don't need another framework. We need a kit.**\n\nBuilding a real AI agent in JavaScript today means cobbling together five libraries that don't fit. Vercel AI SDK is a beautiful chat SDK with no runtime. LangChain.js drags in 200MB and leaks abstractions at every layer. MCP solves tool interop and nothing else. assistant-ui has 53 components and no opinion about how to compose them.\n\nAgentsKit is the missing kit: small, contracted, composable. Start with one package, grow into a full stack, and stay in plain JavaScript the entire time.\n\n\u003e [Origin story](./ORIGIN.md) for the long version. [Manifesto](./MANIFESTO.md) for the principles.\n\n---\n\n## Quick start — chat in 10 lines\n\n```bash\nnpm install @agentskit/react @agentskit/adapters\n```\n\n```tsx\nimport { useChat, ChatContainer, Message, InputBar } from '@agentskit/react'\nimport { anthropic } from '@agentskit/adapters'\nimport '@agentskit/react/theme'\n\nexport default function Chat() {\n  const chat = useChat({ adapter: anthropic({ apiKey: KEY, model: 'claude-sonnet-4-6' }) })\n  return (\n    \u003cChatContainer\u003e\n      {chat.messages.map(m =\u003e \u003cMessage key={m.id} message={m} /\u003e)}\n      \u003cInputBar chat={chat} /\u003e\n    \u003c/ChatContainer\u003e\n  )\n}\n```\n\nStreaming, tool calls, default styling, abortable. No setup. No boilerplate.\n\n---\n\n## Before and after\n\n**Before** — the typical \"JS agent\" stack:\n\n```ts\n// Pick your favorite: LangChain, raw fetch, Vercel AI SDK + custom runtime,\n// MCP client + custom UI, manual ReAct loop, hand-rolled streaming...\n// Then wire memory. Then wire tools. Then wire delegation. Then debug.\n```\n\n**After** — AgentsKit:\n\n```ts\nimport { createRuntime } from '@agentskit/runtime'\nimport { openai } from '@agentskit/adapters'\nimport { webSearch, filesystem } from '@agentskit/tools'\n\nconst runtime = createRuntime({\n  adapter: openai({ apiKey: KEY, model: 'gpt-4o' }),\n  tools: [webSearch(), ...filesystem({ basePath: './workspace' })],\n})\n\nconst result = await runtime.run('Research the top 3 AI frameworks and save a summary')\n```\n\nThat's an autonomous agent. With a tool registry. With memory. With observability hooks. Two imports, six lines.\n\nSwap providers in **one** line — every other line stays the same:\n\n```ts\nimport { anthropic, openai, gemini, ollama, deepseek, grok } from '@agentskit/adapters'\n\nuseChat({ adapter: anthropic({ apiKey, model: 'claude-sonnet-4-6' }) })\nuseChat({ adapter: openai({ apiKey, model: 'gpt-4o' }) })\nuseChat({ adapter: ollama({ model: 'llama3.1' }) })          // local, no key\n```\n\n---\n\n## How AgentsKit compares\n\n| | AgentsKit | Vercel AI SDK | LangChain.js | assistant-ui |\n|---|---|---|---|---|\n| **Core size** | 10KB gzip, zero deps | ~30KB | hundreds of MB transitively | n/a (UI only) |\n| **Agent runtime** | First-class (ReAct, tools, skills, delegation, memory, RAG) | None | Yes, but heavy | None |\n| **Provider swap** | One line | Route-handler-shaped | Per-class wiring | BYO backend |\n| **UI surfaces** | React + Ink + headless | React | None | React |\n| **Formal contracts** | Six versioned ADRs | Implicit | Implicit | Implicit |\n| **Edge-ready** | Yes (10KB core, no Node-only deps) | Mostly | No | n/a |\n\n### When you should NOT use AgentsKit\n\nWe are honest about this:\n\n- **You only need a single OpenAI streaming call.** Use the `openai` SDK directly — AgentsKit is overkill.\n- **You're shipping a chat SDK to consumers, not an agent.** Vercel AI SDK is purpose-built for that and excellent.\n- **You need Python.** AgentsKit is JavaScript-first by design. Use a Python framework.\n- **You require enterprise-grade observability today.** AgentsKit's observability layer is good but young; LangSmith/Arize/Helicone are more mature integrations right now.\n- **You need every package frozen today.** `@agentskit/core` is v1.0.0, but the rest of the ecosystem is still graduating package-by-package.\n\n---\n\n## The ecosystem\n\nPick what you need. Every package works alone. Combinations work without glue code.\n\n| Package | What it does | Stability |\n|---|---|---|\n| [`@agentskit/core`](packages/core) | Types, contracts, primitives | stable |\n| [`@agentskit/adapters`](packages/adapters) | Provider adapters (OpenAI, Anthropic, Gemini, Ollama, DeepSeek, Grok, …) | beta |\n| [`@agentskit/runtime`](packages/runtime) | Autonomous agent runtime (ReAct loop, delegation) | beta |\n| [`@agentskit/tools`](packages/tools) | Web search, filesystem, shell, integrations, MCP bridge | beta |\n| [`@agentskit/memory`](packages/memory) | Chat + vector + graph + encrypted memory | beta |\n| [`@agentskit/rag`](packages/rag) | Plug-and-play retrieval and reranking | alpha |\n| [`@agentskit/skills`](packages/skills) | Pre-built behavioral prompts and personas | beta |\n| [`@agentskit/observability`](packages/observability) | Console, LangSmith, OpenTelemetry, audit log | beta |\n| [`@agentskit/eval`](packages/eval) | Agent evaluation, replay, snapshots | alpha |\n| [`@agentskit/sandbox`](packages/sandbox) | Secure code execution | alpha |\n| [`@agentskit/react`](packages/react) | React hooks + headless UI | beta |\n| [`@agentskit/ink`](packages/ink) | Terminal UI (Ink) components | beta |\n| [`@agentskit/vue`](packages/vue) | Vue binding for the shared chat contract | alpha |\n| [`@agentskit/svelte`](packages/svelte) | Svelte binding for the shared chat contract | alpha |\n| [`@agentskit/solid`](packages/solid) | Solid binding for the shared chat contract | alpha |\n| [`@agentskit/react-native`](packages/react-native) | React Native / Expo binding | alpha |\n| [`@agentskit/angular`](packages/angular) | Angular binding with Signals + RxJS | alpha |\n| [`@agentskit/cli`](packages/cli) | CLI: chat, init, run, ai, dev, doctor | beta |\n| [`@agentskit/templates`](packages/templates) | Authoring toolkit for scaffolding skills, tools, adapters | alpha |\n\nThe whole catalog is one `npx @agentskit/cli init` away.\n\n---\n\n## Multi-agent delegation\n\n```ts\nimport { planner, researcher, coder } from '@agentskit/skills'\n\nconst result = await runtime.run('Build a landing page about quantum computing', {\n  skill: planner,\n  delegates: {\n    researcher: { skill: researcher, tools: [webSearch()], maxSteps: 3 },\n    coder:      { skill: coder, tools: [...filesystem({ basePath: './src' })], maxSteps: 8 },\n  },\n})\n```\n\nThe planner decomposes the task. The researcher and coder execute their parts. Delegation happens through a tool the model already knows how to call — no special syntax to learn.\n\n---\n\n## Terminal chat (Ink)\n\n```bash\nnpm install -g @agentskit/cli\nagentskit chat --provider ollama --model llama3.1\nagentskit chat --provider openai --tools web_search,shell --skill researcher\n```\n\nThe same `useChat` mental model. Real keyboard input. Real streaming. Real tools.\n\n---\n\n## For AI agents reading this\n\nThe full public API fits in **under 2,000 tokens**. Paste the [agent-friendly reference](https://www.agentskit.io/docs/get-started/getting-started/for-ai-agents) into your LLM context and start generating real AgentsKit code immediately. We treat agents as first-class consumers of our docs.\n\n---\n\n## Package dependency graph\n\n```mermaid\ngraph TD\n    core[\"@agentskit/core\\n(zero deps · 5 KB)\"]\n\n    adapters[\"@agentskit/adapters\\nOpenAI · Anthropic · Gemini\\nOllama · DeepSeek · Grok\"]\n    react[\"@agentskit/react\\nReact hooks + headless UI\"]\n    ink[\"@agentskit/ink\\nTerminal UI (Ink)\"]\n    runtime[\"@agentskit/runtime\\nReAct loop · delegation\"]\n    tools[\"@agentskit/tools\\nweb search · filesystem · shell\"]\n    skills[\"@agentskit/skills\\nresearcher · coder · planner\"]\n    memory[\"@agentskit/memory\\nSQLite · Redis · file · vector\"]\n    rag[\"@agentskit/rag\\nplug-and-play RAG\"]\n    observability[\"@agentskit/observability\\nLangSmith · OpenTelemetry\"]\n    sandbox[\"@agentskit/sandbox\\nE2B · WebContainer\"]\n    eval[\"@agentskit/eval\\nbenchmarking · metrics\"]\n    templates[\"@agentskit/templates\\nskill/tool authoring\"]\n    cli[\"@agentskit/cli\\nchat · init · run\"]\n\n    core --\u003e adapters\n    core --\u003e react\n    core --\u003e ink\n    core --\u003e runtime\n    core --\u003e tools\n    core --\u003e skills\n    core --\u003e memory\n    core --\u003e rag\n    core --\u003e observability\n    core --\u003e sandbox\n    core --\u003e eval\n    core --\u003e templates\n\n    cli --\u003e core\n    cli --\u003e adapters\n    cli --\u003e ink\n    cli --\u003e runtime\n    cli --\u003e skills\n    cli --\u003e tools\n    cli --\u003e memory\n\n    classDef foundation fill:#1e293b,stroke:#6366f1,color:#f8fafc,font-weight:bold\n    classDef ui        fill:#0f172a,stroke:#22d3ee,color:#f8fafc\n    classDef agent     fill:#0f172a,stroke:#a78bfa,color:#f8fafc\n    classDef data      fill:#0f172a,stroke:#34d399,color:#f8fafc\n    classDef ops       fill:#0f172a,stroke:#fb923c,color:#f8fafc\n    classDef entry     fill:#0f172a,stroke:#f472b6,color:#f8fafc\n\n    class core foundation\n    class react,ink ui\n    class adapters,runtime,tools,skills agent\n    class memory,rag,templates data\n    class observability,sandbox,eval ops\n    class cli entry\n```\n\n**Legend:** purple = provider/execution layer · cyan = UI layer · green = data layer · orange = ops layer · pink = CLI entry point\n\n---\n\n## Architecture and contracts\n\nSix ADRs define the substrate:\n\n| ADR | Contract |\n|---|---|\n| [0001](./docs/architecture/adrs/0001-adapter-contract.md) | Adapter — LLM provider seam |\n| [0002](./docs/architecture/adrs/0002-tool-contract.md) | Tool — function the model calls |\n| [0003](./docs/architecture/adrs/0003-memory-contract.md) | Memory — chat history + vector store + embed |\n| [0004](./docs/architecture/adrs/0004-retriever-contract.md) | Retriever — context fetching |\n| [0005](./docs/architecture/adrs/0005-skill-contract.md) | Skill — declarative persona |\n| [0006](./docs/architecture/adrs/0006-runtime-contract.md) | Runtime — the loop that composes them all |\n\nRead these once and you can predict how every package behaves.\n\n---\n\n## Status\n\n`@agentskit/core` is at **v1.0.0** — API frozen at the minor level, deprecations carry a cycle, contracts pinned to ADRs. The rest of the ecosystem ships on independent beta/alpha tracks with explicit [stability tiers](./docs/STABILITY.md).\n\nConcretely, as of the Phase 1 release:\n\n- **538 tests** across the ecosystem\n- **5.17 KB** gzipped core — 48% under the 10 KB manifesto budget (enforced in CI)\n- **Six formal contracts** pinned to ADRs 0001–0006\n- **74 documentation routes** including 13 copy-paste recipes and 3 migration guides\n\nSee the [Phase 1 release notes](./docs/RELEASE-CORE-V1.md) for what shipped, and the [Master PRD](https://github.com/AgentsKit-io/agentskit/issues/113) for what's next.\n\n---\n\n## Contributing\n\nAgentsKit is built in the open and ships because contributors show up. Every package, every doc, every example is fair game.\n\n- **[How to contribute →](https://www.agentskit.io/docs/contribute)** — start here\n- **[Public roadmap board](https://github.com/orgs/AgentsKit-io/projects/1)** — what's planned, in flight, and shipped\n- **[Good-first-issues](https://github.com/AgentsKit-io/agentskit/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)** — curated, tractable tickets\n- **[Help-wanted](https://github.com/AgentsKit-io/agentskit/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)** — larger scoped work\n- **[Discussions](https://github.com/AgentsKit-io/agentskit/discussions)** — ask, propose, share\n- **[RFC template](https://github.com/AgentsKit-io/agentskit/issues/new?template=rfc.yml)** — open before touching a contract\n- **[`CONTRIBUTING.md`](./CONTRIBUTING.md)** — dev setup + PR checklist\n\n### Contributors\n\n\u003ca href=\"https://github.com/AgentsKit-io/agentskit/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=AgentsKit-io/agentskit\" alt=\"AgentsKit contributors\" /\u003e\n\u003c/a\u003e\n\nThanks to everyone who's shipped a line of code, docs, or feedback.\n\n---\n\n## License\n\nMIT — see [`LICENSE`](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAgentsKit-io%2Fagentskit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAgentsKit-io%2Fagentskit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAgentsKit-io%2Fagentskit/lists"}