# `@assistant-ui/core` [![npm version](https://img.shields.io/npm/v/@assistant-ui/core)](https://www.npmjs.com/package/@assistant-ui/core) [![GitHub stars](https://img.shields.io/github/stars/assistant-ui/assistant-ui)](https://github.com/assistant-ui/assistant-ui) The framework-agnostic core of assistant-ui. Defines the shared types, runtime interfaces, adapter contracts, and React bindings that the distribution packages re-export. Most users do not install `@assistant-ui/core` directly. Reach for the distribution that matches your target: | Distribution | Use this for | | ----------------------------- | --------------------- | | `@assistant-ui/react` | Web applications. | | `@assistant-ui/react-native` | React Native apps. | | `@assistant-ui/react-ink` | Terminal/Ink apps. | `core` is published so that integration libraries (for example `@assistant-ui/react-ag-ui`) can depend on the runtime types without pulling in DOM or native primitives. ## Installation ```bash npm install @assistant-ui/core ``` ## Usage ```ts import { tool, ModelContextRegistry } from "@assistant-ui/core"; import { z } from "zod"; const registry = new ModelContextRegistry(); registry.addTool({ toolName: "getWeather", ...tool({ parameters: z.object({ city: z.string() }), execute: async ({ city }) => fetchWeather(city), }), }); ``` ## Sub-paths `@assistant-ui/core` exposes `.`, `./react`, `./store`, and `./internal` sub-paths. The `./react` sub-path holds the React hooks and providers consumed by `@assistant-ui/react` and `@assistant-ui/react-native`. Full reference for message types, runtime interfaces, and adapter contracts at [assistant-ui.com/docs/architecture](https://www.assistant-ui.com/docs/architecture).