Give your agents real-world capabilities without writing a single integration.
basePath, shell commands require an explicit allowlist, so agents can't escape their boundaries@agentskit/runtime, useChat, or any custom ReAct loopnpm install @agentskit/tools
import { createRuntime } from '@agentskit/runtime'
import { openai } from '@agentskit/adapters'
import { webSearch, filesystem, shell } from '@agentskit/tools'
const runtime = createRuntime({
adapter: openai({ apiKey: process.env.OPENAI_API_KEY, model: 'gpt-4o' }),
tools: [
webSearch(),
...filesystem({ basePath: './workspace' }),
shell({ timeout: 10_000, allowed: ['ls', 'cat', 'grep'] }),
],
})
const result = await runtime.run('Find the README and summarize it')
console.log(result.content)
useChat (browser)Tools are plain ToolDefinition values — register them in useChat the same way as in createRuntime.
@agentskit/skills on runtime.run({ skill }) for specialized behavior@agentskit/templates createToolTemplate / scaffold| Package | Role |
|---|---|
| @agentskit/core | ToolDefinition contract |
| @agentskit/runtime | createRuntime({ tools }) |
| @agentskit/react | useChat + tools in the UI |
| @agentskit/templates | Scaffold new tools |