Skip to main content
Vendo lets your users add new features to your product and customize it to how they work. They describe what they want in plain language, and an agent builds it inside your app — through your own API, as them. A screen on their real data, pinned into one of your pages. A digest that runs every Friday with nobody there. Their own Gmail or Slack, working inside your product. They build these themselves, and they keep them. Answering questions is the least of what it does.

What it looks like

Ask, and a working screen shows up in your product.

It asks before it writes anything, then acts as you.

The path a request takes to get there is in how Vendo works.

Screens that stay

Ask for something to look at and the agent writes a screen instead of describing one. It is a real React component running on live data from your own API, in your fonts, colors, and radii. The screen can stay. Put a slot in one of your pages and every finished screen grows a button that puts it there. Press it and the screen holds that spot, re-running on every open, so it opens on today’s numbers.
Maple's overview page with its own quick actions, balance chart, and account tiles, and a generated spend by category card holding the slot beside them

Maple's own overview page. The spending card is the one a user asked for.

vendo init reads your brand out of your app into .vendo/theme.json. Register your own components and a screen renders your real UI, not the built-in kit.

What they build from

Whatever a user builds is made of these three things.
capability-api

Your API

One command reads your OpenAPI, tRPC, server actions, or routes and writes the tool set everything runs on.API tools →
capability-accounts

Their accounts

Each user connects their own Gmail, Slack, or GitHub once, and later calls run as them.Connected accounts →
capability-schedule

On a schedule

A user says when, and the same tools fire on a cron or an event.Automations →

It acts as the signed-in user

Every call runs inside your process, through your routes and your auth, carrying the asking user’s own identity. Vendo’s servers never call your API. The agent’s hands are a fixed set, and a user can build only what they could already do by clicking. Reads go through. Writes and deletes stop and ask, quoting the exact request rather than the tool’s name, and every call writes an audit line either way.
The Maple demo bank's assistant panel. An earlier request to move $500 to savings carries the line Send money — you declined it; the next one carries Send money — waiting for your approval, and under it a card asks Send $200.00 to Maple Savings ··8820, noting it sends now, as you, and can't be undone, with Approve and Deny beneath

The ask names the exact request. Every call keeps its own line, approved or not.

Start where you are

The embedded surface is the step after that, and vendo init asks which of these you are doing and wires that one.
direction-product

Vendo's Full-Stack Agent

Vendo runs the loop and renders screens in your brand.<VendoProvider>Quickstart →
direction-existing-agent

In your existing agent

Keep your loop. Vendo adds tools and renders the result.vendoTools(vendo)Quickstart →
direction-outside-agents

From outside agents

Your own agent, acting as the signed-in user.createVendo({ mcp: true })Quickstart →