npm create avocado-site
Bootstraps a project. This is the first command almost everyone runs.
npm run dev.
Somebody who has typed a name has already answered the only question that
mattered.
With no argument it asks which of two jobs you want first, then the
directory name:
Setup offers to take an API key, and Enter skips it — worth taking then rather
than later, because keys are read at startup, so one pasted during setup is live
immediately while one added afterwards needs a file edit and a restart.
Ports are chosen at scaffold time from what is actually free on your machine,
starting at 3000 for the site and 4100 for the editor.
→ Try the demo
npx @avocadostudio-ai/skills
Installs Avocado’s agent skills into a project that already exists, and nothing
else — no routes, no config, no dependencies, no prompts.
Four skills land:
avocado routes, and avocado-integrate, avocado-demo and
avocado-blocks do the work.
Skill files are replaced on re-run. That is how an upgrade delivers new
instructions — never clobbering them would leave 0.13’s guidance on disk under
an 0.14 install, with nothing saying so. Every file’s outcome is reported, so a
skill you had edited shows as
updated rather than changing silently.
AGENTS.md and CLAUDE.md are yours and are only ever created.
→ Hand it to your own coding agent
npx avocado-scope
Reads a live page and reports what it would become as Avocado blocks, before
you install anything.
A refusal explains itself in the page’s terms rather than the schema’s — “Hero
needs a link to use as its call to action” — because that is a fact about your
page, and it is more useful than either inventing a button or failing silently.
If more than half the page comes back as
RichText, the report says so.
That means the structure did not survive, and it is usually a sign the page’s
sections are worth declaring as your own block
types rather than mapped onto the built-ins.
The updatedAt on the proposed page is a deliberate placeholder — stamp it when
you decide to keep the result. Scoping is a read, and a mapper that reads a
clock is not deterministic.
Ships inside @avocadostudio-ai/migration-sdk.
avocado-studio
The self-host launcher for the editor UI, from @avocadostudio-ai/cli. It
serves a prebuilt editor bundle against a running orchestrator.
avocadostudio is an alias and is not going away. The command was renamed
so that all five commands share one prefix — it was the only one that did not.
Both names install and point at the same entry.start:
--draft-secret is required for editing a site running in production; it must
match the site’s DRAFT_MODE_SECRET. On start the CLI probes the orchestrator’s
/health and warns when the reported protocol version does not match the editor
build it ships.
avocado-register
Registers a site with an orchestrator so it appears in the editor’s Sites
list, rather than relying on defaults. Ships inside @avocadostudio-ai/site-sdk.
It also generates a
DRAFT_MODE_SECRET into .env.local when there is not one,
and warns when the editor’s copy of that secret does not match the site’s — the
single most common integration failure, because it degrades to “the preview
shows published content” rather than an error.
avocado-mcp and avocado-mcp-http
The MCP server, over stdio and streamable HTTP
respectively. AVOCADO_MCP_PORT and AVOCADO_MCP_BEARER_TOKEN configure the
HTTP transport.
The packages
Twelve packages publish to npm, all versioned together.
Import from the published specifier, never a deep path into
dist or src.
Anything deeper than a documented subpath is internal and will not resolve. If
you find yourself needing one, that is a gap in the contract worth reporting
rather than routing around.
Native dependencies
orchestrator-core carries better-sqlite3 and sharp. A bundler has to be
told to leave them alone, and serverExternalPackages on its own is not enough
because transpilePackages overrides it for a transitive dependency. Wrapping
your Next config sets all of it together:
better-sqlite3 binaries ship for linux-x64 (glibc 2.28+), darwin-arm64
and darwin-x64 on Node 22. A custom Dockerfile needs python3, make and g++
on the build stage only when no prebuild matches your target.