Demo: https://www.youtube.com/watch?v=VdpHehY64ls
We built Vendo because every SaaS eventually faces the same problem: every customer needs something slightly different. One wants a new report and another needs a workflow that only makes sense for their team. These requests either sit on the roadmap, become one-off engineering work, or force the customer into spreadsheets and external tools. We wanted the user to be able to create the missing feature themselves, without leaving the product.
Here is how it works:
- npx vendo init reads the product's API surface, theme, routes, and more. These are used so that the apps Vendo creates (1) look on-brand and native and (2) have the ability to read data and perform actions directly through the company's API
- When a user asks for a feature, we have a custom Vendo harness that writes a React component with a bunch of Vendo add-ons and guardrails (ex. ability to make calls to the host API + our component library). Every save is compiled, type-checked, run against real API responses, and rendered before the user sees it. We just released a benchmark and write-up here with more info for anyone interested: https://vendo.run/blog/generating-product-ui-measured
- We use QuickJS to make sure that anything the agent creates is sandboxed and can't mess with the company's site. Vendo compiles the component and runs it with Preact inside a QuickJS VM with no access to the DOM, network, or clock. The VM returns a UI tree, which the host renders using the product’s registered components. When the user clicks something, QuickJS emits a tool call; the host executes it through Vendo’s guard and passes the result back into the same VM, preserving the screen’s local state.
There's a lot of generative UI right now: streaming developer-written components into a chat (Vercel AI SDK, CopilotKit, Thesys), or rendering your app inside someone else's assistant (OpenAI Apps SDK, MCP Apps). We differ on two things. Vendo lives in your product and acts through your API as the signed-in user, so what it makes is durable: real apps users keep, pin, and run on triggers while they're away, and not components that are merely confined to a chat. Plus, it's not capped at putting together a bunch of prebuilt components: the agent can build arbitrary apps, from a quick dashboard out of your own components to real custom code running in a sandbox, and either way data only ever comes from tool calls to your API.
Here are some things customers are using Vendo for today:
- Letting their users create custom dashboards and reports. These are mainly UI-based and focused on letting the user see the exact graphs and metrics they care about
- Letting their customers create recurring automations. A big thing as well that has been used for these automations is the fact that we connect to external connections, so users have been automating many of their inter-tool workflows (ex. an automation that sends a slack alert based off of something in the product)
- B2B customers letting their customers customize the product with specific business logic. Often this is simple things like an extra field on a form, or an extra permission, but it is hard for a business to keep up with them otherwise.
- Creating and sharing custom dashboards/apps across an organization. Since the apps Vendo creates are durable, they can be shared, reused, and forked (which can’t be done with many of the other in-chat generative UI solutions)
We've spent a lot of time thinking about how AI and agents will change the way people consume software. We think the answer is personal(ized) software: you see the UI you need to see, you tell an agent exactly what you need, and the product molds to how you work.
The key insights that have enabled the product to work are:
- A rule in code always beats a rule in a prompt.
- Invent as little syntax as possible. Generation got faster and more reliable when the output looked like what models already know (JSX-shaped markup) instead of a clever custom format.
- Deterministic beats model wherever you can get away with it. Theme extraction is pure static analysis, and a remix starts as a copy of your component, no model call.
Vendo is completely open-source (Apache-2.0) and can be self-hosted, so feel free to check out all the source code here: https://github.com/runvendo/vendo.
Would love you to try it out and give us your feedback: https://docs.vendo.run/. Or if you’re a company looking to embed Vendo in your product feel free to book a call here: https://cal.com/team/vendo/intro-call
Software vendors should be providing the platform, including any hard-to-build widgets, and "stock" look-and-feel so that the software is usable out of the box, but then the customers should be able to send their product feature requests directly to a chatbot, whether it is embedded into the platform (i.e. same vendor) or rides on top (i.e. different vendor).
This is the new form of UGC. The vendor can turn it into a marketplace within that platform, promote popular 3rd party features in that marketplace, etc.
I would also encourage you to take a look at our benchmarks (linked in the post), that show how the gaurdrails we have in-place allow us to deliver pretty strong results to our users. And as a last point, most of our users are not creating business-critical features with Vendo right now. For a lot of them, it is an additional feature that they wished they had but didn't. And for the companies we work with, the benefit of providing their customers with this level of customization outweigths the possible risk that you mention.
Would love to hear more of your thoughts, thanks for the feedback!
Frankly I don’t think this is that relevant. When software breaks, most people don’t want to get support from another piece of software. They want human support. As the models get better, I’d wager the problems that fall through will get increasingly messy by nature of a) being hard enough to stump the model or b) the model running in circles making changes that obscure or worsen the problem. Especially if you have non-technical users who can’t accurately describe what they want or the problem with the current state.
Benchmarks and guardrails are nice and all, but as you said problems will never be 100% self correctable. Models are good enough until they aren’t. I like to take a “what’s the worst that could happen” approach to planning support. Murphy’s law and all that.
> And as a last point, most of our users are not creating business-critical features with Vendo right now.
Just give it some time… you’d be surprised what becomes business critical in the eyes of a customer. Sooner or later a report will become part of an accounting workflow etc, and it’ll break on the wrong day and suddenly payroll is late. You know how many Excel sheets are “business critical”? Same thing.
An alternative model you might consider is selling direct to the end user companies and taking a partnership approach to the apps you work with. End users come straight to you for help, you have a list of integrated apps you already support with the required plan/license from that vendor plus custom MCP support and features that don’t need an API, then sell professional services engagements if an end user client wants you to work with one of their vendors to set up a new integrated app. That way you reduce support friction, and your end users are aligned with your buyers.
I often find my users want to throw their Claude at it and have everything handled. Users have even developed their own local UIs using Claude Design. As long as they are within the bounds of the MCP I already provide access to, no problem. This also has the added benefit of using the AI subscription the org already pays for (or using the customers).
Edit: Congrats on the launch and thanks for open sourcing!
I think you bring up a good point though on how consumption of software will evolve (and the possibility of Claude just being the entrance to everything), and I think this is soemthing we have been thinking a lot about as well.
As a data point, our users are going a step further. We gave away our desktop software as OSS and our users fork and vibe code on top with the entire stack. They get the benefit of not having JavaScript powering a media heavy app since we wrote it in Rust. Now we have users making their own tutorials about it.
I think non experts will appreciate engineers solving for smoothness, distributed systems, and all the hard parts that can back them into corners. They want to fill in the UX / workflow pieces themselves.
I think these "hard part" pillars will endure for a while longer.
But you're going to have to give away more than you've ever given away before. Treat your users as junior engineers on your team. That's the new normal.
And for full disclosure, none of our users have software backgrounds whatsoever. They're just heavy into Claude Code as complete software newbies. It's really awesome to watch them building really neat workflows.
Both Apple and Google appeared to be making the contrary bet: define an MCP-like API layer (AppIntents and Appfunctions) that apps can implement so that the platform's agent, or in some cases maybe third-party agents, can manipulate those apps.
That's going to be very attractive by making automations on demand. I like to say agents automate automation. An automatic on demand saw sharpener.
I'm working on a project in which I have created an AppFunctions layer and tested it with the test agent Google provides. It's really pretty magical, weaving together information extracted from the app I'm creating with travel time estimates and information about nearby businesses, for example. Generating that non-trivial example was a piece of cake. The agent got it right on the first try.
The consequence is that there is a whole class of features that would've depended on bespoke integrations, protocols, APIs, inter-app communication, etc. that, not only do I not have to implement, but I should refrain from implementing because the usage patterns are going to rely on agents.
Pro $49/month
- Includes $49 of usage a month
- ≈ a few hundred active end-user sessions
An LLM safety judge concerns me. "You are Vendo Auto, a safety judge for tool calls.",
"Choose run only when the call is appropriate for the user and context.",
"Choose ask when user confirmation is warranted, and block when the call must not proceed.",
"Return a concise rationale grounded in the supplied call, context, directions, and recent activity.",
https://github.com/runvendo/vendo/blob/9e9782f653366793a769c...And yes, the LLM safety judge is not in general access right now. Still experimenting, and it is not being used by any customers currently.
We use Dart and Go (front/backend) to allow users to render widgets/mini-apps on Maxint (Finsight). And hence, the speed (virtually instant) and overall quality of the output mostly depends on the LLM/inference endpoint that they choose.
In general, most users are happy with the existing features, however more advanced users have a playground to ship enhancements on-the-fly.
The future of this is having a API (with CLI, MCP) and then a SKILL.md file for other system to integrate with it.
Basically like yourapp.com/api/openapi.json and yourapp.com/api/skill.md.
This is the universal integration interface. Any app that wants to expose itself to be used by others to build things on top can do this. AI is the integration layer, avoids the integration hell.
I have tried similar things before. It works.