So, why'd we do this?
1) We're super fans of the web and the browser can do a ton today
2) We've seen AI builds be way overly complex because the FE requires a large project within an existing app OR the site wasn't using a framework to begin with
If you've been a part of huge apps with multiple frameworks inside them, or work inside CMS / website builders / ecomm platforms... you know what we're talking about. A "simple" AI feature disrupts your life for months
If you have a singular React codebase and can't possibly imagine building an interface without JSX, nothing to see here! You already have a lot of great options that are really cool too. Check out Assistant UI / CopilotKit / AI Elements which are all MIT
----
Some specifics:
Persona has a ~15 kB brotli to first paint (the full widget lazy-loads on first click) while being able to render most of the primary agent experiences you see on the web: from 'Fin' (pill launcher) to 'Claude' (fullscreen assistant) to 'Shopify Sidekick' (docked)
You can run it in Shadow DOM isolated mode so existing styles play nice
Everything has hooks and events, so you can add unique flavor (and easily share back!) in a few lines
We have a ton of demos on the library site, along with all the knobs to play with how each aspect renders. Tool and reasoning, custom loading animations, voice, approval UX, etc
We've also added a ton of examples across agent and frontend stacks
Check out the code @ https://github.com/runtypelabs/persona
Feedback and contributions welcome!
bookernath•2h ago
My personal favorite demo is this JSPaint + WebMCP one https://www.persona-chat.dev/webmcp-paint.html
But more practical examples include: https://www.persona-chat.dev/webmcp-slides.html https://www.persona-chat.dev/webmcp-calendar.html
WebMCP's finally at a point where it makes sense to build against it (shipped in latest chrome + good polyfills available), and I've found it a pretty elegant way to extend existing FE apps by just hooking into your existing FE functions instead of having to build an AI assistant as a parallel thing that is ignorant of the user's session, what they're looking at, etc. This makes hybrid AI/app experiences feel much better.