positioning

The gap

If your UI is a settings form, use a general component library. If your UI is “an agent is thinking, running tools, and waiting for approval,” you need primitives those libraries skip — and you may not control the stack.

What this is

Agentic vocabulary
Thinking, tool calls, approvals, and questions — not a generic chat bubble set.
Plain HTML/CSS/JS
Copy-paste source you own. No React, Tailwind, or bundler required.
Host owns execution
Components render state. They never run tools or imply approval.
Any stack
Works in htmx, Rails, Astro, Next, or a static prototype an agent just generated.

What stays true

Source visible
Every preview has a canonical snippet. No hidden framework layer.
Host owns execution
Components render state. They never execute tools or imply approval.
Native first
Without JavaScript, semantic HTML and normal forms still make sense.
Any stack
htmx, Rails, Astro, Next, or a static prototype an agent just generated.

Next step

Copy the chat-with-tools starter, or let an agent follow the AI setup path and llms.txt.