@agentskit/vue
v0.5.3
Published
Vue 3 composable + headless chat components for AgentsKit — streaming, tools, and memory across any LLM provider.
Maintainers
Readme
@agentskit/vue
Profile: concise-package
Vue 3 composable + headless chat components. Same ChatReturn contract every AgentsKit framework binding ships — swap frameworks without changing your agent.
Tags: ai · agents · llm · agentskit · vue · vue3 · composable · chat · streaming
Verified proof
- Package metadata and tests live under
packages/vue/. - Package guide: https://www.agentskit.io/docs/reference/packages/vue
- Stability map: docs/STABILITY.md
How this fits the ecosystem
@agentskit/vue brings the shared AgentsKit chat contract to Vue 3 with composables, streaming, tools, memory, and headless components.
- AgentsKit: compose it with the other packages in this repo to build agents from small, swappable parts.
- Registry: look for ready agents and templates that already use this layer at registry.agentskit.io.
- Playbook: learn the production patterns behind this layer at playbook.agentskit.io.
- AKOS: run the same concepts with enterprise deployment, governance, and observability at akos.agentskit.io.
Docs: package guide · agent handoff
Why
- One contract, every framework —
useChatreturns the exact same shape as the React / Svelte / Solid / Angular / RN / Ink bindings. - Composition API native — values surface as
refs; drops into<script setup>with zero glue. - Headless by default — components emit
data-ak-*attributes; bring your own styling. - Streaming, tools, HITL — all core features work identically to
@agentskit/react.
Install
npm install @agentskit/vue @agentskit/adaptersPeers: vue ^3.4.
Quick example
<script setup lang="ts">
import { useChat } from '@agentskit/vue'
import { anthropic } from '@agentskit/adapters'
const chat = useChat({
adapter: anthropic({ apiKey: import.meta.env.VITE_ANTHROPIC_API_KEY, model: 'claude-sonnet-4-6' }),
})
</script>
<template>
<div data-ak-chat>
<p v-for="m in chat.messages" :key="m.id" :data-ak-role="m.role">{{ m.content }}</p>
<form @submit.prevent="chat.send(chat.input)">
<input
:value="chat.input"
:disabled="chat.status === 'streaming'"
@input="(e) => chat.setInput((e.target as HTMLInputElement).value)"
/>
</form>
</div>
</template>State is reactive — read chat.messages / chat.input directly (no .value).
API
useChat(config)— composable returningChatReturn: reactivemessages,status,input,error,usage+ actionssend(text),setInput(v),stop,retry,clear,approve,deny,edit,regenerate. Call insidesetup()/<script setup>; scope dispose unsubscribes and stops in-flight work (idempotent).<ChatRoot>— controller-freedata-ak-chatroot with a default slot for application shells that already useuseChat.<ChatContainer :config>— batteries-included headless container.- Headless primitives at parity with
@agentskit/react:Message,InputBar(blocks submit/Enter while streaming),Markdown,CodeBlock,ToolCallView(aria-expandedon the toggle),ThinkingIndicator,ToolConfirmation— each emitsdata-ak-*only.
Ecosystem
| Package | Role |
|---------|------|
| @agentskit/core | ChatReturn contract |
| @agentskit/adapters | LLM providers |
| @agentskit/tools | Built-in + integration tools |
| @agentskit/memory | Chat + vector backends |
| @agentskit/react · svelte · solid · react-native · angular · ink | Same contract, different host |
Contributors
License
MIT — see LICENSE.
Docs
Quick start
import '@agentskit/vue'
console.log('@agentskit/vue loaded')Maturity and compatibility
- Stability: beta — see docs/STABILITY.md
- Node.js 20+ and TypeScript strict mode
- Published as
@agentskit/vue
Contributing
See CONTRIBUTING.md and the monorepo LICENSE.
