The first deploy fails on this platform
The Xano Engine runs on macOS (Apple silicon) and Linux (x64, arm64). On Windows or an Intel Mac, a deploy to the Engine is refused before anything compiles:npm run xano:deploy. See
where the Engine differs today.
The frontend shows no backend
A deploy that publishes no static site writes the backend’s URL into.env.local as
VITE_XANO_HOST. Vite reads that file only when the dev server starts.
-
The dev server was already running. Stop
npm run devand start it again. -
Your repo does not gitignore
.env.local. The deploy refuses to write a per-machine URL into a file git would commit, and warns instead:Add.env.localto.gitignore, deploy again, and restart the dev server. -
You deployed with
--no-dev-env. SetVITE_XANO_HOSTin.env.localyourself.
A release is refused from the Engine
A release is cut on your Xano instance, which cannot reach an Engine on your machine. Naming the Engine is refused, and so is a barerelease create right after a deploy to the Engine, because
a bare command follows the backend you last deployed to:
Promote is refused
Each of these exits2, lands nothing (except where noted), and is not waived by --yes.
Full detail: What promote refuses.
SDK_WORKSPACE_CHANGED
deploy --to workspace refuses to overwrite objects that someone changed in Xano since the last
sync:
--overwrite only when you mean to discard the edit made in Xano. See Drift.
Exit 9: the outcome is unknown
A write was sent and the answer was lost: a timeout, a dropped connection, a server error, or Ctrl-C mid-write. It may have landed. Do not run the same command again: run theresolveWith
command it printed, and treat “absent” as proof only after resolveNotBefore.
See Operation outcome.
SDK_RELEASE_NAME_TAKEN, or a release with a suffix
Release names are used once. You meet this code in two ways:
-
The name was already taken. Nothing was cut. Cut a new name, such as
v1.4.1. -
The name was taken while the cut ran. The platform stored your cut as
v1.4.0-plus four hex characters and reported success.release createcatches that, refuses rather than report success, and prints therelease deletethat removes the stray copy. Anything that addressesv1.4.0does not reach it.
9, look for both spellings in npx xanosdk release list before you cut again. See
Name a release.
xano.lock has conflict markers
Every command that reads the lock refuses a file with unresolved merge markers:
npm run xano:check. The full recipe is in
Git and merges.
An ephemeral expired (exit 8)
An ephemeral lives 1 hour by default (--expires-hours sets 1 to 24 when a deploy creates it). A
bare command that follows an expired one exits 8 and clears the project’s record of it:
Ephemerals are turned off on this instance
Not every instance has ephemerals enabled. A deploy to one says so:npx xanosdk export and npx xanosdk preflight still work. To ship without an
ephemeral, stage on a Xano branch of your workspace and cut the release from it:
When ephemerals are off.
The Engine restarted empty after local update
Rows on the Engine do not survive an update, a version change or a restart:
Still stuck
XANOSDK_DEBUG=1 for the raw server response.
Next
- What each exit code means: Exit codes and outcomes.
- Every
SDK_*code: Warning and error codes. - Terms on this page: Glossary.