The deploy admin API is the server-side contract behind nimbus deploy:
one endpoint that validates uploaded app artifacts, reports a diff against
the active app generation, and (unless the request is a dry run) atomically
activates the new generation.
Whenever the server runs with local security — always the case for nimbus start
Notes:
The deploy bearer comparison is constant-time; a wrong or
prefix-matching token returns 401 (invalid deploy admin token).
The local admin gate accepts only the X-Nimbus-Admin-Token header on
this route. Operator session cookies and Authorization-bearer admin
tokens, which other admin routes accept, are not valid here — the
Authorization header is reserved for the deploy token.
The local admin token file lives at
~/.local/share/nimbus/auth/token (Linux),
~/Library/Application Support/nimbus/auth/token (macOS), or
%LOCALAPPDATA%\nimbus\auth\token.json (Windows).
Requests carrying a browser Origin header are restricted to loopback
HTTP origins on the server’s port; others return 403.
Artifacts are written to a private (0700) randomized temporary directory and loaded through the same registry path as a server started directly from an app directory
Validation
Manifest readability, optional HTTP routes, schema and index definitions, auth config readability, and runtime-bundle SHA-256 integrity are all checked during staging
Activation
Non-dry-run deploys activate only after staging and validation succeed; the swap is atomic — in-flight requests keep the generation they captured, new requests observe the new one
Failure
If staging or validation fails, the previous generation remains active
Generation counter
Process-local: 0 on a server started without an app, 1 when started with one, incremented per activation; it resets on restart
Rollback
There is no rollback endpoint and no retained generation history
Partial families
A deploy that includes only one artifact family keeps the other family’s active registry unchanged
Diff scope
The diff object is computed from Convex artifacts only; Cloud Functions changes do not appear in it