Skip to content

CLI

The nimbus binary is the entire product surface: server, dev loop, deploy client, codegen, and operator tooling ship as one executable. Every command requires an explicit subcommand — there is no default action.

Terminal window
nimbus <command> [subcommand] [flags]
CommandWhat it does
startStart a Nimbus server in the foreground
devStart a local development server with watched codegen
deployPush app artifacts to a self-hosted Nimbus instance
codegenGenerate app artifacts from nimbus/ or convex/ source
initScaffold a new Nimbus project
tokenLocal admin token management
authConsole sign-in URLs and remote deploy credentials
uiOpen the operator console in a browser
machineManage local developer machines (macOS Linux guest)
nodeInstall and manage node service-manager artifacts
composeCompose-backed local service lifecycle
policyValidate and explain operator policy files
encryptionAt-rest encryption admin operations
packagesProvision embedded Nimbus JS packages into an app

For what each surface currently supports, see Current capabilities.

Terminal window
nimbus start [flags]

Starts a Nimbus server in the foreground. Binds loopback by default; pass --allow-network (after rotating the local admin token) to bind a non-loopback interface. With --app-dir it runs one codegen preflight and serves that app; without it, the server starts empty and waits for deploys through the admin API. See Self-host for the deployment walkthrough.

Most-used flags:

FlagEnv varDefaultWhat it does
--port8080Port to listen on.
--host127.0.0.1Host interface to listen on; defaults to loopback for local safety.
--allow-networkfalseOpt in to binding a non-loopback interface; requires a recently rotated local admin token (nimbus auth rotate-admin).
--data-dirNIMBUS_DATA_DIR./dataLocal data directory for embedded tenant databases and, by default, the control plane.
--tenant-providerNIMBUS_TENANT_PROVIDERsqliteTenant persistence provider: sqlite, libsql-replica, redb, postgres, or mysql.
--configNIMBUS_CONFIGunsetOptional JSON config file; CLI flags override env vars, which override file values.

nimbus start accepts further flag families — app loading (--app-dir, --skip-codegen, --debug-node-apis), Compose services (--compose-file), systemd socket activation (--systemd-socket-activation), licensing (--license-file, falling back to NIMBUS_LICENSE_FILE then ~/.config/nimbus/license.json), per-provider storage settings (--libsql-*, --postgres-*, --mysql-*), runtime limits (--runtime-heap-mb, --runtime-timeout-secs, and the other --runtime-* flags), and at-rest encryption (--encryption-key-provider and the other --encryption-* flags). The full flag ↔ environment variable ↔ config-key cross-reference lives in Configuration.

Terminal window
nimbus dev [flags]

Starts a local development server with dev defaults: watched codegen reruns, local generation activation, an auto-created demo tenant, and automatic browser launch of the operator console. When --app-dir is omitted, the app directory is auto-detected by walking up from the current directory to the nearest .git boundary. See Quickstart.

FlagEnv varDefaultWhat it does
--port3210Port to listen on.
--app-dirauto-detectedApp directory containing an adapter source root.
--data-dir<app-dir>/.nimbus/devShared local dev persistence root for tenant data and control state.
--compose-fileCOMPOSE_FILEdiscoveredOrdered Compose file list for local service dependencies; repeat to merge overlays.
--oncefalseRun startup only, without the watched codegen loop.
--skip-codegenfalseSkip initial codegen before starting; watched reruns still use codegen.
--debug-node-apisfalseDiagnose Node.js builtin imports that should move behind "use node".
--tail-logspause-on-syncRuntime log tailing mode: always, pause-on-sync, or disable.
--no-openfalseSuppress the default browser auto-open and print a launch-URL banner instead.

Browser auto-open is also suppressed automatically in non-interactive environments ($CI or $NO_BROWSER set, or stdout is not a TTY).

Terminal window
nimbus deploy [flags]

Packages generated app artifacts and pushes them to an explicit self-hosted Nimbus instance, printing a diff of functions, HTTP routes, schema, and runtime-bundle changes. The target URL and token resolve from flags first, then environment variables; tokens stored by nimbus auth login are used when NIMBUS_DEPLOY_TOKEN is unset. The server-side contract is documented in Deploy & admin API.

FlagEnv varDefaultWhat it does
--urlNIMBUS_DEPLOY_URLrequiredTarget Nimbus server URL.
--tokenNIMBUS_DEPLOY_TOKENcredentials fileDeploy admin bearer token.
--app-dirauto-detectedApp directory containing a nimbus/ or convex/ source root.
--dry-runfalseValidate and diff without activating the new generation.
--skip-codegenfalseSkip codegen and package already-generated artifacts.
--verbosefalseShow packaging and deploy phase detail.
Terminal window
nimbus codegen [--app <path>]

Generates _generated/* files and the runtime bundle from a nimbus/ or convex/ source root. Codegen is embedded in the binary — there is no separate npm codegen step. See Developers for the authoring workflow.

FlagEnv varDefaultWhat it does
--app.App directory containing a nimbus/ or convex/ source root.
--debug-node-apisfalseDiagnose Node.js builtin imports that should move behind "use node".
Terminal window
nimbus init <adapter> [directory] [flags]

Scaffolds a new Nimbus project. The adapter argument is required and selects the project template; existing files are never overwritten.

Argument / flagEnv varDefaultWhat it does
<adapter>requiredAdapter to scaffold: convex or cloud-functions.
[directory].Target directory, created if it does not exist.
--source-rootconvexSource root directory name (convex adapter only).
--installfalseInstall adapter dependencies after scaffolding.

Local admin token management.

Terminal window
nimbus token rotate

Rotates the local admin token used for localhost server access. When a live server is discoverable, rotation goes through the running server; otherwise it rotates the on-disk token file offline. Takes no flags.

Sign-in URLs for the local console and credentials for remote deploys.

Terminal window
nimbus auth url [--copy] [--open]

Mints a single-use launch URL for the local operator console. Requires a running server (nimbus start or nimbus dev).

FlagEnv varDefaultWhat it does
--copyfalseCopy the launch URL to the OS clipboard in addition to printing it.
--openfalseOpen the launch URL in the default browser in addition to printing it.
Terminal window
nimbus auth token [--copy]

Prints the local admin token from the on-disk token file.

FlagEnv varDefaultWhat it does
--copyfalseCopy the token to the OS clipboard in addition to printing it.
Terminal window
nimbus auth login --url <daemon-url> [--bearer <token>]

Stores a deploy bearer token for a remote Nimbus daemon in the local credentials file. nimbus deploy falls back to this store when NIMBUS_DEPLOY_TOKEN is unset.

FlagEnv varDefaultWhat it does
--urlrequiredDaemon URL to authenticate against (e.g. https://nimbus.example.com).
--bearerstdinDeploy bearer token; if omitted, read from stdin.
Terminal window
nimbus auth status

Lists configured deploy connections with masked bearers and metadata. Takes no flags.

Terminal window
nimbus auth logout --url <daemon-url>

Removes a stored deploy bearer.

FlagEnv varDefaultWhat it does
--urlrequiredDaemon URL whose stored bearer should be removed.
Terminal window
nimbus auth rotate-admin

Rotates the local admin token offline. Required before nimbus start --allow-network when the token has gone stale. A running daemon keeps its in-memory token until restart. Takes no flags.

Terminal window
nimbus ui

Discovers the running local daemon and opens the operator console in a browser. It does not spawn a daemon — start one with nimbus start or nimbus dev first. Takes no flags.

Manages local developer machines — the Linux guest VM that backs container workloads on macOS. Most subcommands take an optional machine [name] positional that defaults to default.

Terminal window
nimbus machine init [flags] [name]

Initializes a new machine: writes its config and state records and records the guest resource contract.

FlagEnv varDefaultWhat it does
-c, --cpus2Number of CPUs.
-m, --memory2048Memory in MiB.
-d, --disk-size20Disk size in GiB.
--imagerelease-pinned imageMachine OS image source.
--identityauto-generatedPath to the SSH identity for guest access.
--ignition-pathunsetLegacy Ignition config file for explicit non-bootc image overrides.
--firmwareunsetPath to the EFI variable store.
-v, --volumenoneHOST:GUEST volume mount; repeatable.
--nowfalseStart the machine after initializing it.
Terminal window
nimbus machine start [flags] [name]

Starts a machine, creating it first when it does not exist. Accepts the same creation flags as machine init (--cpus, --memory, --disk-size, --image, --identity, --ignition-path, --firmware, --volume), which apply only when start creates the machine, plus:

FlagEnv varDefaultWhat it does
-q, --quietfalseSuppress machine starting status output.
--no-infofalseSuppress informational tips.
Terminal window
nimbus machine stop [name]

Stops a running machine and persists the stopped state. No flags beyond the optional name.

Terminal window
nimbus machine status [flags] [name]

Displays machine status.

FlagEnv varDefaultWhat it does
-f, --formattableOutput format: json, yaml, or table.
-q, --quietfalsePrint the machine name only.
-n, --noheadingfalseOmit table headings from table output.
Terminal window
nimbus machine list [flags]

Lists initialized machines (alias: nimbus machine ls). The default machine is marked with * in table output.

FlagEnv varDefaultWhat it does
-f, --formattableOutput format: json or table.
-q, --quietfalsePrint machine names only.
-n, --noheadingfalseOmit table headings from table output.
Terminal window
nimbus machine info [-f <format>]

Displays machine host info: roots, cache locations, and the current machine release.

FlagEnv varDefaultWhat it does
-f, --formatyamlOutput format: json or yaml.
Terminal window
nimbus machine inspect [-f <format>] [name]

Prints the persisted machine record (config plus refreshed state).

FlagEnv varDefaultWhat it does
-f, --formatjsonOutput format: json or yaml.
Terminal window
nimbus machine set [flags] [name]

Updates a stopped machine’s recorded resources; the next machine start applies them.

FlagEnv varDefaultWhat it does
-c, --cpusunchangedNumber of CPUs.
-m, --memoryunchangedMemory in MiB.
-d, --disk-sizeunchangedDisk size in GiB.
Terminal window
nimbus machine cp [-q] <src-path> <dest-path>

Securely copies files between the host and a machine. Guest endpoints use NAME:/path notation (e.g. default:/tmp/file).

FlagEnv varDefaultWhat it does
-q, --quietfalseSuppress copy status output.
Terminal window
nimbus machine ssh [name] [command...]

Logs in to a machine using SSH, optionally running a command. If the first argument names an initialized machine it is treated as the machine name; otherwise all arguments are passed through as the guest command on the default machine.

Terminal window
nimbus machine rm [name]

Removes an existing machine’s config, state, and runtime layout when it is not running. No flags beyond the optional name.

Manages machine OS images.

Terminal window
nimbus machine os apply <image> [--restart]
nimbus machine os upgrade [--dry-run] [--restart]
nimbus machine os rollback [--restart]
SubcommandFlagDefaultWhat it does
apply <image>requiredOCI image reference or digest to use on the next boot.
apply--restartfalseRestart the machine immediately if it is running.
upgrade--dry-runfalseCheck whether an upgrade is available without applying it.
upgrade--restartfalseRestart the machine immediately if an upgrade is applied.
rollback--restartfalseRestart the machine immediately after queuing rollback.

upgrade switches to the supported machine OS image for the current nimbus release; rollback queues the previous bootc deployment for the next boot.

Manages Nimbus node service-manager installation artifacts (systemd units and Podman Quadlet files) on Linux hosts. Every subcommand selects a target with --systemd (native unit) or --container (Quadlet), and a scope with --user or --system (default: system). node install requires an explicit target; the other subcommands default to --systemd. See Node lifecycle and Deploy on Linux.

Terminal window
nimbus node install --systemd|--container [flags]
FlagEnv varDefaultWhat it does
--systemdInstall native systemd units for a host binary.
--containerInstall a Quadlet .container file for the Nimbus OCI image.
--user / --systemsystemService-manager scope to install into.
--binary/usr/local/bin/nimbusTrusted Nimbus binary path (native installs only).
--imagerequired with --containerNimbus OCI image reference (Quadlet installs only).
--socket-activationfalseRender a matching nimbus.socket and start from systemd’s inherited TCP listener (native only).
--enablefalseEnable the generated service after writing artifacts.
--nowfalseStart the generated service after writing artifacts.
--overwritefalseReplace existing generated artifacts.
--dry-runfalsePrint generated artifacts without writing files or calling systemctl.
Terminal window
nimbus node status [--systemd|--container] [--user|--system]

Shows the Nimbus node service status through systemd. Target and scope flags only.

Terminal window
nimbus node logs [--systemd|--container] [--user|--system] [--follow]

Prints Nimbus node service logs through journalctl.

FlagEnv varDefaultWhat it does
--followfalseFollow appended logs.
Terminal window
nimbus node doctor [--systemd|--container] [--user|--system]

Diagnoses host support for the selected node service mode. Target and scope flags only.

Terminal window
nimbus node uninstall [--systemd|--container] [--user|--system] [--dry-run]

Removes Nimbus node service-manager artifacts.

FlagEnv varDefaultWhat it does
--dry-runfalsePrint the files and commands without mutating the host.

Compose-backed local service lifecycle commands. All subcommands share one discovery rule for --file: explicit repeated --file flags win; otherwise the COMPOSE_FILE environment variable provides an ordered list (separator overridable with COMPOSE_PATH_SEPARATOR); otherwise Nimbus discovers Compose files from the current directory and parents. Lifecycle subcommands default to a deterministic per-project tenant, overridable with --tenant.

Terminal window
nimbus compose config [--file <path>]... [--services]

Validates and prints the resolved service plan from a Compose file.

FlagEnv varDefaultWhat it does
--fileCOMPOSE_FILEdiscoveredCompose files to read in order; repeat to merge overlays.
--servicesfalsePrint only service names, one per line.
Terminal window
nimbus compose up [service] [--file <path>]... [--tenant <id>]

Starts one or more declared services for the current Compose project. When the service name is omitted, starts all declared services.

FlagEnv varDefaultWhat it does
--fileCOMPOSE_FILEdiscoveredCompose files to read in order; repeat to merge overlays.
--tenantproject tenantTenant override.
Terminal window
nimbus compose down [service] [--file <path>]... [--tenant <id>]

Stops one or more persisted services for the current Compose project. When the service name is omitted, stops all persisted services in the tenant. Same flags as compose up.

Terminal window
nimbus compose ps [-f <format>] [-n] [--file <path>]... [--all-tenants]

Shows persisted sandbox state for the current Compose project.

FlagEnv varDefaultWhat it does
--fileCOMPOSE_FILEdiscoveredCompose files to read in order; repeat to merge overlays.
-f, --formattableOutput format: json, yaml, or table.
-n, --noheadingfalseOmit table headings from table output.
--all-tenantsfalseShow all tenants under the project-scoped backend root.
Terminal window
nimbus compose inspect <service> [-f <format>] [--file <path>]... [--tenant <id>]

Shows persisted sandbox details for one service.

FlagEnv varDefaultWhat it does
--fileCOMPOSE_FILEdiscoveredCompose files to read in order; repeat to merge overlays.
--tenantproject tenantTenant override.
-f, --formatjsonOutput format: json or yaml.
Terminal window
nimbus compose logs <service> [--file <path>]... [--tenant <id>] [--follow]

Prints persisted service logs for one service.

FlagEnv varDefaultWhat it does
--fileCOMPOSE_FILEdiscoveredCompose files to read in order; repeat to merge overlays.
--tenantproject tenantTenant override.
--followfalseKeep polling the persisted log file for appended output.
Terminal window
nimbus compose top <service> [-f <format>] [-n] [--file <path>]... [--tenant <id>]

Shows the persisted PID snapshot for one service.

FlagEnv varDefaultWhat it does
--fileCOMPOSE_FILEdiscoveredCompose files to read in order; repeat to merge overlays.
--tenantproject tenantTenant override.
-f, --formattableOutput format: json, yaml, or table.
-n, --noheadingfalseOmit table headings from table output.
Terminal window
nimbus compose export quadlet [flags]

Renders Podman Quadlet artifacts from an admitted Compose plan for operator review.

FlagEnv varDefaultWhat it does
--fileCOMPOSE_FILEdiscoveredCompose files to read in order; repeat to merge overlays.
--serviceall servicesExport only the named service; repeatable.
--modecontainersQuadlet export shape: containers, pod, or kube.
--podman-versionunsetPodman version the operator targets; recorded in provenance.
--output-dirstdoutWrite artifacts to a directory instead of printing them.
--overwritefalseReplace existing artifact files under --output-dir.
--strictfalseTreat every export warning as an error.

Validates and explains Nimbus operator policy files. See Tenant isolation for the policy model.

Terminal window
nimbus policy validate --file nimbus.policy.yaml [-f text|json]
nimbus policy explain --file nimbus.policy.yaml [-f text|json]
nimbus policy prove --file nimbus.policy.yaml [-f text|json]
nimbus policy diff --from before.yaml --to after.yaml [-f text|json]
SubcommandWhat it does
validateValidate a Nimbus operator policy file.
explainExplain the tenant-isolation decisions produced by a policy file.
proveProve policy advisories and accepted-risk status.
diffShow authority changes between two policy files.

Flags for validate, explain, and prove:

FlagEnv varDefaultWhat it does
--filerequiredPath to a nimbus.policy.yaml file.
-f, --formattextOutput format: text or json.

Flags for diff:

FlagEnv varDefaultWhat it does
--fromrequiredPrevious policy file.
--torequiredNext policy file.
-f, --formattextOutput format: text or json.

Encryption admin commands for local at-rest encryption. These commands read the active key provider and persistence settings from the same environment variables and config file as nimbus start (NIMBUS_ENCRYPTION_KEY_PROVIDER and friends; see Configuration). Operational guidance lives in Encryption.

Terminal window
nimbus encryption status [--format text|json]

Inspects encryption coverage and status.

FlagEnv varDefaultWhat it does
--formattextOutput format: text or json.
Terminal window
nimbus encryption migrate --source <path> --provider <family> [flags]

Migrates a plaintext database to encrypted.

FlagEnv varDefaultWhat it does
--sourcerequiredPath to the plaintext database to migrate.
--targetsource + .encryptedPath to the encrypted output database.
--providerrequiredProvider family: sqlite, redb, or libsql-cache.
--tenant-idunsetTenant ID for tenant databases.
--skip-validationfalseSkip validation after migration.
--retire-sourcefalseRemove the source after successful migration.
Terminal window
nimbus encryption export --source <path> --target <path> --provider <family> [--tenant-id <id>]

Exports an encrypted database to plaintext for recovery.

FlagEnv varDefaultWhat it does
--sourcerequiredPath to the encrypted database to export.
--targetrequiredPath to the plaintext output database.
--providerrequiredProvider family: sqlite, redb, or libsql-cache.
--tenant-idunsetTenant ID for tenant databases.
Terminal window
nimbus encryption rotate-kek --path <path> [flags]

Rotates key-encryption keys: rewraps manifests without rewriting data.

FlagEnv varDefaultWhat it does
--pathrequiredPath to the database or data directory.
--providerunsetProvider family: sqlite, redb, or libsql-cache.
--new-key-providercurrent providerReplacement key provider: master-key-file, key-dir, or aws-kms.
--new-master-key-fileunsetNew master key file when rotating to master-key-file.
--new-key-dirunsetNew key directory when rotating to key-dir.
--new-aws-kms-key-idunsetAWS KMS key ID or alias when rotating to aws-kms.
--new-aws-regionunsetAWS region override when rotating to aws-kms.
--new-aws-endpoint-urlunsetAWS endpoint override when rotating to aws-kms.
--allfalseRotate all manifests in the directory.
Terminal window
nimbus encryption rotate-dek --path <path> --provider <family> [flags]

Rotates data-encryption keys; provider-specific and may rewrite data.

FlagEnv varDefaultWhat it does
--pathrequiredPath to the encrypted database.
--providerrequiredProvider family: sqlite, redb, or libsql-cache.
--tenant-idunsetTenant ID for tenant databases.
--skip-backupfalseSkip backup before rotation.

Provisions the embedded Nimbus JS packages into an app’s .nimbus/packages/ directory so file: package specifiers resolve offline.

Terminal window
nimbus packages provision [target] [--app-dir <path>]
Argument / flagEnv varDefaultWhat it does
[target]allWhat to provision: all or an adapter (convex, firebase, mongodb, dynamodb, nimbus); dependencies are included automatically.
--app-dir.App directory to provision into.
Terminal window
nimbus packages verify [--app-dir <path>]

Verifies provisioned package bytes against the binary’s embedded checksums.

FlagEnv varDefaultWhat it does
--app-dir.App directory whose .nimbus/packages/ is verified.