voyant --help for inline usage, and voyant <command> --help where a command has its own usage. Global flags: --help / -h and --version / -v.
Open-source commands
Scaffolding
Scaffold a new project from a template.
--template operator uses the built-in operator application; you can also pass a path to a local starter directory.Code generation
Scaffold a new module package under
packages/<name> with the standard module layout.Scaffold a deployment-local extension under
src/extensions/<name>/ that attaches to an existing module’s surface — for adding routes (and optionally a detail table) to a module like bookings without forking it. Generates index.ts (via defineDeploymentExtension), routes.ts, and validation.ts; no package.json/tsconfig.json, since an extension is not a package.Flags:--module <target>— required; the existing module the extension attaches to (extension.module), e.g.bookings.--public— mount on the public surface (/v1/public/<module>) instead of the default admin surface (/v1/admin/<module>).--with-schema— also emit aschema.ts1:1 extension table keyed to the target record by a plain-text column (no cross-module foreign key).--dir <path>— base directory; defaults tosrc/extensions.--force— overwrite existing files.
Emit a
defineLink snippet for a cross-module relationship. Each argument is a <module>.<entity> reference, for example crm.person products.product. Flags: --left-list and --right-list (make each side a list), and --cascade (emit { deleteCascade: true }).Configuration
Inspect the nearest
voyant.config.* manifest: print it, validate it, or show which file resolved.Admin
Emit
admin.extensions.generated.ts from the manifest. --check verifies it is in sync without rewriting.Emit the code-assembled admin route module. Auto-includes the built-in core entry when it resolves. Add
--files for the legacy thin-file output, or --out <file> / --routes-dir <dir> to override paths.Emit the generated destination resolver map.
Check parity between the manifest, admin extensions, and routes or destinations.
Database
Proxy Drizzle Kit commands.
generate defaults to a timestamp prefix. These are also available as voyant db:generate, voyant db:migrate, voyant db:studio, voyant db:push, and voyant db:check.Print or emit the manifest-derived schema list.
--style=specifier|file selects module specifiers (default) or absolute paths; --emit writes the generated schema file, optionally to --out <file>; --config <path> points at a specific voyant.config.ts.Emit link-table DDL, or with
--emit-drizzle a generated Drizzle schema for declared links. --out <file> writes to a file instead of stdout; --links <path> / --template <path> point at the link definitions to read.Report migration drift across manifest, schema, prefix, and link checks.
Preflight and scripts
Preflight checks: env and bindings (
env.d.ts against wrangler.jsonc), db doctor, and admin doctor. Exits non-zero on any gate.Bump the
@voyant-travel/framework BOM (meta-package) and install. --to <version> pins a target version (otherwise the latest); --dry-run reports what would change without writing; --package <name> upgrades a different meta-package. Follow with voyant db migrate && voyant doctor.Run a TypeScript or JavaScript script with the Voyant loader hook and native type stripping.
Cloud commands
These need a Voyant token. See CLI overview for login, organizations, and token resolution. Every cloud command accepts the following global flags:Emit machine-readable output. On failure, errors are returned as a stable
{ "error": { "code", "message" } } envelope on stderr.Target a specific organization (also
VOYANT_CLOUD_ORG). Needed only when you are logged in to more than one.Override the resolved token and API base URL for a single command.
Approve destructive actions non-interactively. Required for deletes when there is no TTY, so agents never hang on a prompt.
Authentication and organizations
Authorize via the browser device flow, or paste a token for CI and headless use. API tokens are organization-bound, so each org you log in to is stored separately.
--no-browser prints the device URL instead of opening it; --no-validate skips the token validation call.Remove a stored credential — one organization with
--org, or all of them for the API URL.Show the resolved API URL, where the token came from, and the organization it is bound to.
Manage which organization the CLI targets.
list shows the orgs you are logged in to (the active one is marked), use <slug|id> switches the active org, and current prints it. When you belong to several orgs and none is selected, commands fail with a clear message instead of guessing.Apps and deployments
Manage apps in the active organization.
create <slug> [--name <n>]; delete <app> --yes also tears down the app’s external resources.Manage an app environment’s variables (default environment
production). set <KEY> <value> [--secret] upserts; values are always masked on read.Trigger a deployment for an app environment (default
production).Inspect and control deployments: list them, show one, stream build logs, cancel a running deploy, or roll back to a previous one (
cancel/rollback need --yes).Read a deployed app’s runtime logs, or stream them live with
--follow (-f). Filter with --level, --search, and a time window via --since 1h / --from / --to. In follow mode, --interval <secs> sets the poll interval (default 3).Databases and storage
Manage managed databases in the active organization.
create <name> [--kind neon|d1] (default neon); delete <id> --yes.branches <id> lists a database’s branches; connection <id> [--branch <b>] [--direct] prints a connection string (pooled by default).Manage R2 storage buckets.
create <name>; delete <id> --yes.Vault
List the vaults in the active organization with their secret counts (metadata only).
List secret keys and versions in a vault. Values are never shown.
Upsert a secret. If
value is omitted, it is read from stdin.Delete a secret.