numin for local offline administration
numin is the local maintenance tool for operators of a self-hosted Workspace installation. Use it for supported pre-start, database, or recovery tasks that require the server to be offline. Use nucli for tenant-bound work against a running server.
numin has no remote login and opens no listener. It does not bypass the authentication, permissions, or tenant rules of a running server.
Prerequisites
Run numin only in an approved privileged environment. You need:
- the same
numinversion as the runtime or target artifact being inspected, - access to the encrypted server configuration and its configuration key,
- a local connection to the Workspace PostgreSQL database,
- storage-root access for site contract upgrades,
- a current backup and documented approval before a write operation.
Never place configuration keys, database passwords, or new administrator passwords in logs, tickets, or command arguments.
Select the configuration key through its protected file path before running the following examples:
export NUCLEUS_KEY_FILE=/data/nucleus-keyCheck the supplied binary
The Workspace server image provides numin at /bin/numin. DEB, RPM, and the server archive also include the matching binary. Always use the tool from the same runtime or target artifact.
/bin/numin versionChoose the correct command
| Situation | Action |
|---|---|
| The server is running and you inspect tenants or resources | Use nucli. |
| Startup is blocked by a schema contract or baseline finding | Inspect it with numin schema. |
| A product update remains in the maintenance gate | Inspect it read-only with numin product-release status --json. |
| You plan a first installation or update | Inspect the target artifact, backup, and schema transition with numin deployment plan. |
| Inventory ledger aggregates need verification | Run numin inventory reconcile without --apply. |
| A local site source contract needs an upgrade | Run numin site upgrade-contract without --apply first. |
| You are preparing the documented Taskstream attempt cutover | Freeze the old runtime and run numin taskstream attempt-cutover without --apply. |
| A documented historical recovery case concerns Taskstream producer sources | Run numin taskstream producer-sources status --json; routine product updates create missing sources automatically. |
| The initial system administrator password is lost | Use the explicit stdin password reset. |
| No documented command covers the task | Stop. Do not invent a direct database repair. |
Inspect schema and baseline state
numin --config /data/nucleus.config.enc schema status --json
numin --config /data/nucleus.config.enc schema migrations status --json
numin --config /data/nucleus.config.enc schema drift --jsonThese commands are read-only. Do not repair drift with ad-hoc SQL.
schema migrations status --json also reports invalid fulfillment_follow_up_mode_contract values under preflightFindings. The finding contains the total count, no more than 500 identities sorted by tenant and variant ID, and truncated. It contains no raw values and changes no data. Correct the affected product variants to manual or automatic through the tenant-bound PIM workflow, then rerun the command after each correction round. There is no --apply or direct database path for this finding.
Inspect the product release
numin --config /data/nucleus.config.enc product-release status --jsonThis command is read-only. Exit code 0 confirms the fully verified release contract. Exit code 1 reports a blocked, failed, or incomplete run. Routine updates have no matching --apply command: the official server binary applies only its build-bound safe transitions.
Plan an installation or update
deployment plan combines the current database state with the build-bound contract of the staged target release. It never changes data:
numin --config /data/nucleus.config.enc deployment plan \
--artifact-digest <sha256> \
--backup-evidence /secure/backup-evidence.json \
--jsonUse the digest of the exact target binary or OCI artifact. Backup evidence has this contract:
{
"createdAt": "2026-07-31T10:00:00Z",
"database": true,
"storage": true,
"config": true,
"restoreTestedAt": "2026-07-31T10:15:00Z"
}The file contains no password or backup content. Exit code 0 reports ready: true. Exit code 1 reports stable actions such as a missing target artifact, restore evidence, or an incompatible schema baseline. The plan accepts evidence for no more than 24 hours after createdAt; create and restore-test a new backup when activation happens later.
Inspect transitionClass, minimumRuntimeBaseline, pointOfNoReturnReached, rollbackBefore, and rollbackAfter. forward_only does not permit an old binary after the point of no return. Repair forward with the target release, or restore PostgreSQL, storage, encrypted configuration, and runtime key as one set.
Check an Emergency manifest
Use this variant only after external signature verification of an OCI manifest with stateChangeClass: runtime_only:
numin --config /data/nucleus.config.enc deployment plan \
--artifact-digest <target-digest> \
--emergency-manifest /secure/emergency-release.json \
--jsonContinue only when ready: true, releaseMode: runtime_only, and rollbackToSource.allowed: true. numin validates the binary, manifest, and database contract. It does not establish trust in the signature of its own image. Use the separately trusted verifier under Recover from critical runtime failures safely first.
Reconcile the inventory projection
Start with a read-only inspection:
numin --config /data/nucleus.config.enc inventory reconcile --jsonApply the projection rebuild only after review and approval:
numin --config /data/nucleus.config.enc inventory reconcile --apply --jsonThe command rebuilds aggregates and does not alter ledger entries. The task is complete when a subsequent dry run reports no findings.
Upgrade a site contract
Inspect the plan first:
numin --config /data/nucleus.config.enc site upgrade-contract \
--site <site-uuid> \
--target 2 \
--jsonAdd --apply only after you reviewed and approved the plan. Continue to use nucli for normal site inspection, builds, and publication.
Cut Taskstream over to persisted attempts
Use this command only for the documented offline cutover to persisted Taskstream delivery and producer sources. Stop all old server, scheduler, and worker processes and revoke their database access before you continue.
Inspect the frozen database:
numin --config /data/nucleus.config.enc taskstream attempt-cutover --jsonThe plan is eligible only when the source schema contract matches, no job is queued or running, no Control, Occurrence, or Attempt history exists, and jobs sharing a tenant-local concurrency key agree on the limit. It also reports expected, active, missing, inactive, and invalid producer sources and the Taskstream authorization revision anchors of every active tenant. Missing anchors keep complete false but can be initialized at revision 1 by the approved apply. An existing revision of 0 or less is invalid and makes applyEligible false.
An installation whose Attempt cutover is already applied can report alreadyApplied: true, an incomplete source or revision-anchor phase, and applyEligible: true; apply then adds only the incomplete phase. Stop when the result reports applyEligible: false and complete: false. Do not add this apply command to automated deployment steps.
After documented operational approval, apply the cutover:
numin --config /data/nucleus.config.enc taskstream attempt-cutover \
--apply \
--jsonThe transaction creates the technical schema, Controls, only missing catalog-bound producer sources, and only missing Taskstream authorization revision anchors. A baseline anchor grants no permission and does not replace current permission checks. The transaction invents no old execution history, never rewrites an existing revision or source, and never reactivates a tombstone. Existing jobs remain inactive and require individual review and reauthorization. During the initial cutover, the final write raises the schema contract as a downgrade fence.
The cutover is complete when another dry run reports complete: true, producerSourcesComplete: true, and authorizationRevisionAnchorsComplete: true, and only compatible new server binaries use a new database credential generation. Inactive sources remain deliberately inactive. Never start an old binary after --apply. Rollback requires another freeze and a forward-compatible corrected binary; do not delete the new tables, Controls, sources, or revision anchors.
Approve Taskstream producer sources
A new installation creates the currently cataloged internal producer sources during its first global bootstrap. An update to an existing installation can add new catalog entries. The server stays available, while only the dependent feature remains blocked.
Inspect the read-only status first:
numin --config /data/nucleus.config.enc \
taskstream producer-sources status --jsonCreate a plan for missing sources. The plan expires after 15 minutes:
numin --config /data/nucleus.config.enc \
taskstream producer-sources plan \
--output /secure/path/taskstream-producer-sources.plan.jsonAn inactive or invalid source remains unchanged. Reapprove its exact ID only after review:
numin --config /data/nucleus.config.enc \
taskstream producer-sources plan \
--reapprove nucleus.crm.lead.company_research \
--output /secure/path/taskstream-producer-sources.plan.jsonReview and apply that exact plan:
numin --config /data/nucleus.config.enc \
taskstream producer-sources apply \
--plan /secure/path/taskstream-producer-sources.plan.json \
--apply \
--jsonapply rejects an expired plan, another binary version, or a changed database or catalog state. Create a new plan in that case. Do not repair sources with SQL or a seeder. Verify the result with another status call and nucli readiness.
Reset the initial system administrator password
Pass the password only through stdin:
read -rsp 'Enter the new password > ' NEW_PASSWORD
printf '%s\n' "$NEW_PASSWORD" \
| numin --config /data/nucleus.config.enc admin reset-password \
--password-stdin \
--email admin@system.nucleus
unset NEW_PASSWORDSign in again after the reset and verify the account with nucli whoami.
Interpret exit codes
| Exit code | Meaning |
|---|---|
0 | The command succeeded and a check found no required action. |
1 | The check succeeded and found required operator action. |
2 | Invocation, configuration, connection, or execution failed. |
Treat exit code 1 as a finding, not as a connection failure.
Next steps
- Use
nuclifor authenticated remote administration. - Use Blob v2 key inventory to understand the local Blob v2 root-key inventory. Do not invent an undocumented
numincommand. - Plan a compatible server restart after approved offline maintenance.
- Keep the dry-run and approval evidence with your operational change record.