.vendo/
contract in the host repo. You, a coding agent, can complete the whole
install; vendo init does everything deterministic and tells you exactly what
is left.
Install flow
-
Detect the stack. Read
package.json. Anextdependency means Next.js; anexpressdependency means Express. Those are the two scaffolded paths. Anything else is generic Node: Vendo’s handler is a plain fetch handler, so follow the Express page’s shape by hand (Node quickstart) and tell your human detection did not apply. -
Install the package.
vendoaiis a thin alias of@vendoai/vendo; both install the same composition and the samevendobin. -
Run init with value flags. Every wizard question has a flag, so a
non-interactive run never hangs on a prompt. Answer auth
(which preset?) and the model-key question explicitly:
--authtakesauthJs,clerk,supabase,auth0,jwt, ornone.--byodeclines the Vendo Cloud offer;--cloud-key <key>answers it with an existing key instead. Cloud vs bring-your-own is your human’s call: ask before runningvendo cloud loginor assuming a provider key exists.--framework <next|express>is required only when detection fails (init errors with that exact instruction rather than guessing). Optional:--ai-polishconsents to the AI extraction pass,--theme slot=valueanswers uncertain theme slots. Init scaffolds the two-file surface (an emptyvendo/registry.tsxand the composition wired to it), writes the.vendo/contract (tools.json, overrides.json, policy.json, brief.md, theme.json), and addspredev/prebuildsync hooks. It never edits code the host authored. -
Hand-wire the gaps the agent tail names. A non-interactive init ends
with an
Agent tail:block listing the exact files this run left for you; typically: wrap the root layout (or client entry) in the printed<VendoRoot>lines, register real host components invendo/registry.tsx(tools and catalog), replace the.vendo/brief.mdplaceholder, and add the auth line if none was wired (host auth). Follow the tail, not memory; it is derived from what init actually wrote in this repo. -
Gate on doctor. Start the dev server yourself (in
--jsonmode doctor never starts it for you), then loop:Every failing or warning check carries anerror_codeand afix_refURL into the verify page. Fix, re-run, repeat until exit 0.
Rules of engagement
- Ask your human before creating any account or key. That includes Vendo
Cloud (
vendo cloud login), model provider keys, and sandbox accounts (E2B or the managed Cloud sandbox). Relay the choice; never sign up on your own. - Never invent props or tools outside the catalog. Only components
registered in
vendo/registry.tsxexist, and only with the props their schemas declare. Only tools in.vendo/tools.jsonexist. Copy real names from source; see tools and catalog. - Doctor green is the only definition of done.
vendo doctor --jsonexiting 0 (nobrokenchecks) is complete; anything less is not, and nothing more is required. - Run
vendo initbefore touching.vendo/. Init writes the whole.vendo/contract (tools.json,overrides.json,policy.json,brief.md,theme.json) itself. Don’t author or edit any of those files before the first init run; re-runnpx vendo initinstead of hand-writing scaffold files (the route, the registry skeleton,.vendo/contents).
The leaves
- Host auth: detect the host’s auth provider, wire the right preset, know when to ask the human.
- Tools and catalog: expose the host API as tools; the component catalog contract and anti-prop-invention rules.
- Verify: every doctor error code: symptom, cause, exact fix.