1
Install and run init
streamText loop. If you don’t have one yet, the AI SDK chatbot quickstart gets you there first; run init from that app’s root.Init asks four things and takes a few minutes — vendo init covers all of them. Answer the first with Through my own agent loop (AI SDK / Mastra), and take Vendo Cloud on the model one.There are two model budgets on this path. The Cloud key pays for the screens and apps Vendo generates; your own loop keeps its own key — model: yourModel below is untouched — so set ANTHROPIC_API_KEY or your provider’s equivalent too. No browser to approve the Cloud key in? Pass --cloud-key <key>, or --byo to skip Cloud entirely.2
Spread the tools in
app/api/chat/route.ts
vendo_ prefix; include and exclude trim the pack.3
Render the embeds
app/page.tsx
/api/vendo and rides your host session cookie. isVendoToolPart owns the whole “is this ours” question and narrows the part, so part.state and part.output typecheck. Wait for output-available before you render — a generated app streams for a few seconds first, and an embed handed nothing renders nothing. One component covers data, apps, and approvals — Embeds in your chat has the full contract.4
Run it
vendo_make call stream for a few seconds, then the generated app render inline in your own chat.Fresh out of init, that app has no data to show — the only route init found was your chat route, and it excludes that one because it runs a model loop. Its empty state will say so. Add tools is where you point Vendo at your real API and the agent gets hands.Make it yours
The setup was the same for everyone. These, in order, make it yours.Wire auth
Swap the demo principal for your real sign-in.
Add tools
Point Vendo at your API — the agent gets hands.
Approve actions
Decide what runs and what asks first.
Generate screens
Ask for a view, pin it into your grid.
Theme it
Your fonts, colors, and radii on every surface.
Set instructions
The brief your agent reads before every turn.