package.json script hooks, and the one provider mount
you pasted yourself. This page is the full checklist — for leaving, and for
the gentler case of wiping state to start over.
vendo eject is not an uninstall. Despite the name it is a
customization command: it copies chrome source out of @vendoai/ui into
your repo so you can restyle it
(CLI reference). Removal is this
page, and it needs no CLI verb — it is deleting files.Remove Vendo
Work through the checklist in the app directory you ranvendo init in (the
app workspace in a monorepo). Everything listed is Vendo-owned unless marked
yours.
1. The server surface
- Next.js: delete
app/api/vendo/[...vendo]/— the catch-allroute.tsplus, when server actions were detected, thevendo-actions.tsregistration map beside it. (Undersrc/app/…when your app lives insrc/; a Pages Router host got the same newapp/…segment.) - Express and custom runtimes: delete
vendo/server.ts(orvendo/server.mjs), and remove the mount line you added yourself —app.use("/api/vendo", mountVendo()), or thehandleVendoRequestwiring in your runtime’s entry.
2. The client mount (yours)
Remove the<VendoProvider> wrap — and <VendoOverlay /> or any other Vendo
surface inside it — from your layout: app/layout.tsx, pages/_app.tsx, or
the "use client" wrapper file you wrote to hold the component registry,
which can be deleted whole.
3. .vendo/
Delete the directory. It holds only Vendo state: the extracted contract
(tools.json, catalog.json, theme.json, theme.extracted.json), the
files you may have edited (policy.json, overrides.json, brief.md),
capture output (remixable/, components/), AI-pass output
(judgments.json), knowledge config (knowledge.json,
knowledge-manifest.json) — and data/, the local database.
4. package.json
- Scripts: remove the
predev/prebuildsync hooks (vendo sync --no-ai,vendo sync --strict --no-ai). If init prepended them to a script you already had (vendo sync --no-ai && your-command), delete just the Vendo segment. - Dependencies: uninstall
@vendoai/vendo(and thevendoaialias if present, plus a direct@vendoai/uiif you added one for chrome imports). Init’s provider step also installedaiand one@ai-sdk/*provider — remove them only if nothing else in your app imports them — and may have bumpedzod; leave that alone (it is a version floor, not a Vendo dependency).
5. Environment
.env.local: delete theVENDO_API_KEYline — and revoke the key itself (below)..env.example: delete the appended Vendo block (VENDO_BASE_URLplus the commentedVENDO_HOST_API_URL,VENDO_LOGIN_URL,ANTHROPIC_API_KEYlines).- Deployed environments: remove
VENDO_BASE_URL,VENDO_API_KEY, and any otherVENDO_*variables you set.
6. The long tail
Only present when the matching feature was used:.claude/skills/vendo-setup/— the agent skill init writes when a.claude/directory exists.components/vendo/<surface>/and the.vendo-eject.jsonmanifest inside it — ejected chrome.server.jsonandpublic/.well-known/mcp-registry-auth— MCP registry publishing artifacts.- Outside the repo,
~/.vendo/holds user-level state, not project state: the CLI telemetry id, a stored Cloud session, and any pending login claim. It is shared across every Vendo project on the machine — delete it only if you are leaving Vendo entirely.
The Cloud side
Deleting the key line locally does not revoke it. Revoke in the console or from the CLI:- Removing
VENDO_API_KEYflips storage local. Store selection is explicit store → Cloud key → local, so the next boot composes the local store (persistence). Nothing migrates: threads and apps created against the hosted store stay there, and there is no export command. - Hosted data outlives the key. What synced to your project — hosted
store rows, published config surfaces, pin baselines, captured host
components — remains server-side after revocation. Targeted deletion
exists programmatically (
eraseStore, per-subject and per-app, cascading server-side — see Vendo Cloud); project- and account-level deletion is a console operation, not a CLI one. vendo cloud logoutdeletes only the local session file (~/.vendo/cloud-session.json), nothing hosted.
Start over instead
Removal is rarely what a broken install needs. In order of increasing reset:- Reset local state, keep the wiring. Stop the dev server and delete
.vendo/data/. Threads, generated apps, grants, and run history are gone; the contract files and your wiring stay, and the store recreates itself on the next boot. - Regenerate the contract.
vendo init --forcere-stamps the Vendo-owned.vendo/files —policy.json,overrides.json, andbrief.mdback to stubs,theme.jsonfrom a fresh scan. It never touches source files: the route, the composition, andvendo-actions.tsare yours once created, so a broken one is deleted by hand and recreated by the next plainvendo init. - Re-run init any time. Init only creates what is missing — a fully
wired repo prints “Already wired — nothing to change.” and still re-runs
extraction, the theme reconcile, and (interactively) the AI-pass offer.
Deleted scaffolds come back; edited files are never overwritten. Day to
day the
predev/prebuildhooks already runvendo sync, so re-init is for restoring scaffolds, adding the AI polish, or reviewing queued loosenings — not for keeping tools current. - Full clean slate. Do the removal checklist above (dependencies can
stay), then run
npx vendo initagain.