Skip to content

Action WireYour app’s actions. One connected assistant.

Your application registers its actions once with WebMCP. People click them. The assistant calls the same handlers, with the same permissions, and asks before anything destructive.

Action Wire
app.ts
import { createAssistant, openAICompatible } from 'actionwire';

createAssistant({
  model: openAICompatible({ endpoint: '/api/assistant' }),
}).mount();

What you get ​

No second copy of your tools

The assistant discovers the schemas and handlers the page already registered. You do not write them again for the model, and the two cannot drift apart.

The browser decides, not the model

Model output is a request. Destructive tools need explicit approval, approval expires when the tool list changes, and your application authorization still applies.

Any framework, or none

The widget is a Web Component with no framework dependency. Vanilla JavaScript, React, Vue, and Svelte examples run against the same build.

Bring your own interface

The headless bridge exposes state and methods without any UI. Render the transcript, the tool cards, and the confirmations yourself.

Released under the MIT License.