Skip to main content

The picture

Every request walks the same five boxes, in the same order. Three boxes are Vendo. The two on the ends are yours.
Vendo Cloud runs the managed pieces behind those boxes: the hosted store, model gateway, sandbox, and broker.

One request, end to end

The same five boxes, with one real turn moving through them. A user types “show me what I spent on travel last quarter.”
1

The surface posts the question

The panel sends it to a route inside your own app — the one file vendo init wrote. It does not go to Vendo’s servers.
2

Your route says who is asking

Your own auth resolves the signed-in user. A visitor your resolver cannot place is refused the turn.
3

The agent picks a tool

It reads .vendo/tools.json and chooses host_transactions_list with a date range. The prompt carries your instructions, your theme and knowledge index, the user’s messages, and the tool schemas — which model answers it, and whose servers it runs on, is set by your model credential.
4

The guard grades the call

A read like this one runs. Anything destructive, and anything extraction could not grade, stops and parks the turn on an approval card showing the exact request. Approve it and the same turn resumes.
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

The agent calls vendo_make. The screen’s code runs in a WebAssembly VM that can’t touch anything — no DOM, no network, no clock — and your surface renders what comes out, in your brand, bound to the rows your own API just returned.

What runs where

Your repo, your API, and your auth stay on your side. Vendo Cloud runs the managed pieces.

Your machine, your infra

Never leaves your side.
  • your repo and code
  • .vendo/
  • your API and routes
  • your auth

Vendo Cloud

The pieces Vendo runs for you.
  • hosted store
  • model gateway
  • sandbox
  • broker
  • sharing

The questions everyone asks

Who calls my API?

Your own server does. Every tool call runs inside your process, through the route init wired. Vendo’s servers never call your API and never hold your users’ credentials.

Whose identity is on those calls?

The signed-in user’s own headers, forwarded only to the API origin you configured. For unattended runs, a short-lived token your server mints from your own secret, naming the user who set the automation up.

Where do prompts go?

Wherever your composition points them. Select a model object — models: { default: anthropic("claude-sonnet-4-6") }, which is what vendo init writes when you bring your own key — and the prompt goes straight to that provider. Vendo’s servers never see it. Leave the slot unset and the VENDO_API_KEY in your environment answers it over Vendo’s Cloud gateway. Model credentials covers both.A prompt carries your instructions, your theme and knowledge index, the user’s messages, and tool schemas. The agent never sees your audit log.

Where does my data live?

Threads and audit rows live in Vendo Cloud’s hosted store. Delete any of it through the erase API, which drops the rows for good.

What can generated apps reach?

A screen the model writes never runs in your page. Its code runs in a WebAssembly VM that can’t touch anything — no DOM, no network, no clock — and your surface renders what comes out. A full generated app runs in a sandbox whose network is an allowlist: it reaches only domains you approved, one approval per domain.Their tool calls come back through your server, under the same guard and the same approvals as a call from your own chat.
Every slot also accepts your own adapter, with no key at all. Self-hosting docs are coming.

The pieces

Five names to know. Each one has its own group in these docs.

Surface

A sandboxed panel that renders in your brand.Mount the surface →

Tools

Your API routes, extracted by vendo init.API tools →

Guard

Risk grade, approval, audit log on every call.Approvals →

Generated UI

Real screens built from your own data.Generated apps →

Cloud

Runs the store, models, sandbox, and broker.Vendo Cloud →

Where things live

init writes the .vendo folder. You paste one route.
your repo
Edit these by hand any time. init prints the change instead of overwriting a file you already have.

Where to go next

Same setup so far. The code differs from here.
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 →