voyant.config.ts. It is the single declaration of what the deployment is, and the platform reads it to assemble the app at build time. This page explains what the manifest declares, how the platform turns it into a running app, and the CLI commands that inspect and gate it. Configuration is the seam that lets a deployment shrink to its identity (its config, the providers it chose, and the small amount it added) instead of being a fork full of hand-maintained glue.
What the manifest declares
voyant.config.ts describes only the differences from the standard product. It expands the versioned @voyant-travel/operator-standard distribution and merges your project-specific changes on top.
package.json, voyant.config.ts, environment configuration, and the Node bootstrap.
Project-local contributions
Local behavior is added by creating files in conventional directories, discovered at build time rather than enumerated in the manifest:How the platform reads it
The manifest is not decoration. The build resolves it into a completevoyant.resolved-graph.v1 artifact and lowers that graph to one resident Node
application. Package-owned voyant.package.v1 manifests are the authority for
product behavior; neither the project nor the Node host reconstructs that
behavior in a parallel catalog.
1
Resolve the graph
The versioned product distribution plus your differences resolve into the
complete application graph. Modules are components of that one deployable,
not deployment units: there is no
exclude, and a deployment cannot drop or
substitute a standard module.2
Derive schemas and migrations
The resolved graph determines the schema set and migration plan. It is
derived, never hand-listed, so a graph diff is reviewable before it runs.
3
Bind providers at boot
Infrastructure provider bindings are selected at boot inside the fixed
graph. Swapping a database, cache, or object-storage implementation never
changes the graph shape.
A standard deployment upgrades by bumping the distribution version and running
migrations, with no code merge, because the graph and provider bindings are
stable contracts and platform changes arrive as package updates. Custom
deployments do the same and reconcile only their own
src/ contributions.Inspecting the manifest
The CLI reads the nearestvoyant.config.* and can show it, validate it, or tell you which file resolved.
voyant config path first when a deployment is behaving as if it read a different manifest than you expect (a common surprise in a workspace with multiple config files). voyant config validate checks the manifest is well-formed before you rely on anything derived from it.
To inspect what the manifest derives on the database side, use the schema and admin commands:
--check forms verify the generated artifacts are in sync with the manifest without rewriting them, which is what you want in CI.
The doctor preflight gates
voyant doctor is the single preflight that makes a deployment safe to run and to upgrade. It runs a set of gates and exits non-zero on any failure.
- Env, bindings, and secrets. It validates required env at startup instead of letting a missing value fail at first use as a runtime 500, and it checks
env.d.tsagainstwrangler.jsonc(including catching placeholder values like unreplaced KV ids). - Composition drift. It asserts that
config.modules, the mounted registry, the derived nav, icons, and destinations, and the generated routes are all in sync, and that every installed module’s migrations are applied. A module present inconfig.modulesbut missing an icon, label, destination, or migration fails the gate. This is what keeps an upstream domain from silently vanishing from the nav on upgrade.
Admin generation from the manifest
The dashboard is assembled from the manifest, not hand-registered.voyant admin generate emits the generated admin artifacts so adding a module to config.modules contributes its admin presence automatically.
src/admin/<name>/ rather than declared in the manifest, the same drop-a-folder build-time discovery used for extensions. So the manifest stays the source of truth for the standard admin, while the deployment’s own admin additions live in code it owns and that survives voyant upgrade.
Next steps
Modules
What the manifest’s
modules actually compose.Data models
How the manifest derives the schema set and migrations.
Architecture
Build-time composition and the deployment boundary.
Command reference
Every
voyant config, voyant admin, and voyant doctor command.