The path of one question
1
The panel posts the question
The panel sends
POST /api/vendo/threads and reads the reply as a stream.
baseUrl on the provider decides that path. The body carries the question and
a snapshot of what the user is looking at, and nothing else leaves the browser.2
Your route answers who is asking
vendo init writes two files, both ordinary source you can read and change: a
composition module that calls createVendo, and a thin route that serves it.lib/vendo.ts
app/api/vendo/[...vendo]/route.ts
auth is the one key everything identity-shaped hangs off. Init detects Auth.js,
Clerk, Supabase, or Auth0 and writes the matching preset there, or the same
object with a principal for you to fill in when it finds no library. Vendo
mints no identity of its own, so a visitor your resolver cannot place is refused
the turn.3
The turn runs on your server
The harness runs the loop in your own process, and its tools are your API
(extracted into
.vendo/tools.json by vendo init, refreshed by vendo sync)
plus Vendo’s own tools for building screens. VENDO_API_KEY answers the model
over the Vendo Cloud gateway, and a models: selection sends the call to your
own provider instead. Model credentials has both.4
The guard grades every call
Every tool call passes the guard before it runs. Reads and writes run;
destructive calls, and anything sync could not grade, park the turn on an
approval card showing the exact request, and approving it resumes that same
turn. The decision is server-side, and approvals has the
rules.
5
Your API runs the call
The call reaches your own endpoint as the person who is signed in. The agent
can do what that person could already do by clicking, and nothing more.
6
A screen comes back instead of a paragraph
When the answer is one to look at, the agent calls
vendo_make and Vendo
assembles a screen — or, with the person’s yes, builds a small app once in a
disposable Cloud sandbox and seals the result. It streams into the transcript
as it forms and lands interactive, bound to live data from your own tools,
ready to pin into a
VendoSlot on your page.What runs where
One key fills the model, store, and sandbox slots your composition left unset —
nothing to provision, and nothing to run.
What the agent can see
Each send carries a small[Context] bundle for that turn only.
- The accessibility tree of the visible page, with the URL and title on top, capped at 8 KB.
- Anything you publish yourself with
useVendoContext. - It rides the request and never enters the transcript.
- Elements marked
data-vendo-ignoreare left out, andcaptureScreen={false}on the provider turns the page snapshot off entirely.