Summary
I would like to contribute packages/vue-headless, a Vue 3 port of @openuidev/react-headless, so Vue apps can use the same headless chat primitives as the React ecosystem.
I built this package while testing the Mastra + OpenUI + Vue 3 stack and would like to share the result with the community.
Problem
OpenUI has headless support for React, but not for Vue. Vue/Nuxt teams currently have no official way to integrate AG-UI streaming, thread state, tool activity, and artifact rendering using OpenUI patterns.
Proposed solution
New package @openuidev/vue-headless with API and behavior aligned to react-headless, adapted for Vue:
| React |
Vue |
| Zustand |
Pinia |
| React context + hooks |
provide/inject + composables |
Initial scope:
- Chat store (threads, messages, streaming, cancellation)
- AG-UI adapter +
processStreamedMessage
- Tool activity pairing (
pairToolActivity, useToolActivities)
- Artifact renderers and detailed view composables
fetchLLM / restStorage adapters
- Vitest coverage + README
Deferred to follow-up PRs:
- OpenAI stream adapters
- LangGraph adapter
- OpenAI / LangGraph message format converters
Message types remain re-exported from @ag-ui/core (not redefined).
Questions for maintainers
- Is a new
@openuidev/vue-headless package aligned with the roadmap?
- Is partial parity (AG-UI only in v1) acceptable for the first merge?
Happy to adjust scope before opening a PR.
Summary
I would like to contribute
packages/vue-headless, a Vue 3 port of@openuidev/react-headless, so Vue apps can use the same headless chat primitives as the React ecosystem.I built this package while testing the Mastra + OpenUI + Vue 3 stack and would like to share the result with the community.
Problem
OpenUI has headless support for React, but not for Vue. Vue/Nuxt teams currently have no official way to integrate AG-UI streaming, thread state, tool activity, and artifact rendering using OpenUI patterns.
Proposed solution
New package
@openuidev/vue-headlesswith API and behavior aligned toreact-headless, adapted for Vue:provide/inject+ composablesInitial scope:
processStreamedMessagepairToolActivity,useToolActivities)fetchLLM/restStorageadaptersDeferred to follow-up PRs:
Message types remain re-exported from
@ag-ui/core(not redefined).Questions for maintainers
@openuidev/vue-headlesspackage aligned with the roadmap?Happy to adjust scope before opening a PR.