Start in five minutes
login opens the approval page at
console.vendo.run and writes the minted
VENDO_API_KEY for you — it never prints it. init does the rest. No
terminal handy? Sign up at the console and grab
the key there.
Start on Vendo Cloud
Recommended. One key fills every adapter slot you left unset — hosted
store, sandboxes, sharing and publishing, metered inference — so there is
nothing to run yourself on day one.
Bring your own everything
Your own Postgres, sandbox account, and model key. Every Cloud capability
keeps a no-key path, and an adapter you pass always wins.
Acts through your API
vendo sync extracts your OpenAPI operations, tRPC procedures, GraphQL
operations, server actions, and host routes into risk-labeled tools, re-run on
every build so they never drift from the API they came from. One auth preset
resolves the request to a principal, so every call lands on your API as the
signed-in user — your existing authorization is the authorization. See
Tools from your API.
Sees what the user sees
On send, the widget attaches anaria-snapshot of the visible page — the
structural tree a screen reader reads, never a screenshot — plus anything your
components publish through useVendoContext, capped, labeled as observation
rather than instruction, and living exactly one turn. Who the user is arrives
separately as server-trusted facts from your auth preset, and
captureScreen={false} turns the snapshot off entirely. See
actAs presets.
Knows your product
Point it at your docs —vendo knowledge add "docs/**/*.md", then
vendo knowledge sync — and it answers from them with citations, or says the
evidence is weak instead of filling the gap. Three engines sit behind one
contract: keyword retrieval in your own store with zero keys, Vendo Cloud’s
managed engine, or any HTTP endpoint you run. See
vendo knowledge.
Renders UI in your brand
When a user wants a view nobody was going to build, the agent generates one they own, rendered in a sandboxed surface that inherits your extracted theme. Fillvendo/registry.tsx with your real components and generated screens
compose out of those instead of lookalikes. See
Generated UI and
Host components.
Works while they’re away
Automations fire on a UTC cron, avendo.emit host event, or a verified
webhook, each trigger carrying its own grants and on/off switch. An away run
cannot stop and ask, so it needs a standing grant given ahead of time — a chat
grant never transfers. See Automations.
Runs on the loop you choose
Leaveharness unset and Vendo’s own loop runs in-process on your own model
key; swap in claudeCode(), write your own with defineHarness(), or keep the
AI SDK or Mastra loop you already run. Swapping the thinker adds not one new
safety mechanism — every tool call lands in the same guarded path with the
same audit row. See the harness option.
Guarded and audited
guard.bind is the only execution path: reads auto-run, writes and destructive
calls are gated, approval cards show the real arguments, and a grant dies the
moment the tool’s shape changes under it. Every call, approval, policy
decision, and run is audited with its principal — what the agent did last
Tuesday is a query, not an investigation. See
Tools and safety.
That is the whole product. One key and one command put it in your app: start on Vendo Cloud.