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 numin version 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:

bash
export NUCLEUS_KEY_FILE=/data/nucleus-key

Check 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.

bash
/bin/numin version

Choose the correct command

SituationAction
The server is running and you inspect tenants or resourcesUse nucli.
Startup is blocked by a schema contract or baseline findingInspect it with numin schema.
A product update remains in the maintenance gateInspect it read-only with numin product-release status --json.
You plan a first installation or updateInspect the target artifact, backup, and schema transition with numin deployment plan.
Inventory ledger aggregates need verificationRun numin inventory reconcile without --apply.
A local site source contract needs an upgradeRun numin site upgrade-contract without --apply first.
You are preparing the documented Taskstream attempt cutoverFreeze the old runtime and run numin taskstream attempt-cutover without --apply.
A documented historical recovery case concerns Taskstream producer sourcesRun numin taskstream producer-sources status --json; routine product updates create missing sources automatically.
The initial system administrator password is lostUse the explicit stdin password reset.
No documented command covers the taskStop. Do not invent a direct database repair.

Inspect schema and baseline state

bash
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 --json

These 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

bash
numin --config /data/nucleus.config.enc product-release status --json

This 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:

bash
numin --config /data/nucleus.config.enc deployment plan \
  --artifact-digest <sha256> \
  --backup-evidence /secure/backup-evidence.json \
  --json

Use the digest of the exact target binary or OCI artifact. Backup evidence has this contract:

json
{
  "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:

bash
numin --config /data/nucleus.config.enc deployment plan \
  --artifact-digest <target-digest> \
  --emergency-manifest /secure/emergency-release.json \
  --json

Continue 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:

bash
numin --config /data/nucleus.config.enc inventory reconcile --json

Apply the projection rebuild only after review and approval:

bash
numin --config /data/nucleus.config.enc inventory reconcile --apply --json

The 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:

bash
numin --config /data/nucleus.config.enc site upgrade-contract \
  --site <site-uuid> \
  --target 2 \
  --json

Add --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:

bash
numin --config /data/nucleus.config.enc taskstream attempt-cutover --json

The 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:

bash
numin --config /data/nucleus.config.enc taskstream attempt-cutover \
  --apply \
  --json

The 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:

bash
numin --config /data/nucleus.config.enc \
  taskstream producer-sources status --json

Create a plan for missing sources. The plan expires after 15 minutes:

bash
numin --config /data/nucleus.config.enc \
  taskstream producer-sources plan \
  --output /secure/path/taskstream-producer-sources.plan.json

An inactive or invalid source remains unchanged. Reapprove its exact ID only after review:

bash
numin --config /data/nucleus.config.enc \
  taskstream producer-sources plan \
  --reapprove nucleus.crm.lead.company_research \
  --output /secure/path/taskstream-producer-sources.plan.json

Review and apply that exact plan:

bash
numin --config /data/nucleus.config.enc \
  taskstream producer-sources apply \
  --plan /secure/path/taskstream-producer-sources.plan.json \
  --apply \
  --json

apply 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:

bash
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_PASSWORD

Sign in again after the reset and verify the account with nucli whoami.

Interpret exit codes

Exit codeMeaning
0The command succeeded and a check found no required action.
1The check succeeded and found required operator action.
2Invocation, configuration, connection, or execution failed.

Treat exit code 1 as a finding, not as a connection failure.

Next steps

  • Use nucli for authenticated remote administration.
  • Use Blob v2 key inventory to understand the local Blob v2 root-key inventory. Do not invent an undocumented numin command.
  • Plan a compatible server restart after approved offline maintenance.
  • Keep the dry-run and approval evidence with your operational change record.