Skip to content

CLI reference

datamuru [OPTIONS] COMMAND [ARGS]...

By default, interactive commands print the DataMuru branded CLI header. Use --no-banner before the command name when scripting:

datamuru --no-banner validate --config datamuru.yml

init

Create a starter project.

datamuru init
  [--name TEXT]
  [--provider TEXT]
  [--cloud TEXT]
  [--edition TEXT]
  [--execution-mode state-only|live-readonly|live-apply]
  [--output-dir TEXT]

Defaults: name datamuru-project, provider databricks, edition open-source, execution mode state-only, and current output directory. Cloud defaults to snowflake for the Snowflake provider and azure otherwise.

The generated Databricks provider config uses host_env, token_env, and sql_warehouse_id_env so workspace-specific values stay outside YAML. The generated Snowflake provider config uses account_env, user_env, browser SSO, and live-readonly compatible defaults.

validate

datamuru validate [--config TEXT] [--strict]

--strict fails when validation returns warnings.

doctor

datamuru doctor [--config TEXT] [--output text|json]

Runs provider-aware diagnostics. Default config: datamuru.yml.

plan

datamuru plan
  [--config TEXT]
  [--target TEXT]
  [--out TEXT]
  [--output text|json]

--out writes a saved plan. --target accepts a resource address.

apply

datamuru apply
  [--config TEXT]
  [--target TEXT]
  [--plan TEXT]
  [--auto-approve]

Use either current configuration planning or --plan for a saved plan.

destroy

datamuru destroy
  [--config TEXT]
  [--target TEXT]
  [--confirm-destroy]

Destruction requires --confirm-destroy.

import discover

datamuru import discover
  [--config TEXT]
  [--catalog TEXT]...
  [--include-system]
  [--include-identities]
  [--include-grants]
  [--grant-scope catalog|schema|all]
  [--max-grant-objects INTEGER]
  [--max-catalog-grant-objects INTEGER]
  [--max-schema-grant-objects INTEGER]
  [--progress-checkpoint TEXT]
  [--job-checkpoint TEXT]
  [--resume-from TEXT]
  [--output text|json]

Requires one workspace declaration and a live execution mode. Text output shows a progress bar with the current provider stage. JSON output suppresses progress so automation can parse stdout safely.

Repeat --catalog to restrict catalog, schema, and grant discovery to selected catalogs. --include-grants defaults to --grant-scope catalog so broad enterprise imports do not accidentally scan every schema grant. Use --grant-scope all only after scoping catalogs and estimating warehouse cost. --max-grant-objects stops the run before expensive grant discovery starts when too many catalog/schema objects are in scope. Use --max-catalog-grant-objects and --max-schema-grant-objects to set separate caps for each object type. This keeps a workspace with few catalogs but many schemas from launching an unexpectedly large SQL grant scan. --progress-checkpoint writes the latest structured progress event to JSON so long-running imports can be observed from another terminal or CI step. --job-checkpoint writes resumable grant-scan state, including completed grant targets and discovered grants. --resume-from loads a previous job checkpoint and skips completed grant targets while refreshing catalog/schema inventory.

import generate

datamuru import generate
  [--config TEXT]
  [--catalog TEXT]...
  [--include-groups]
  [--include-identities]
  [--include-grants]
  [--grant-scope catalog|schema|all]
  [--max-grant-objects INTEGER]
  [--max-catalog-grant-objects INTEGER]
  [--max-schema-grant-objects INTEGER]
  [--progress-checkpoint TEXT]
  [--job-checkpoint TEXT]
  [--resume-from TEXT]
  [--include-system]
  [--out TEXT]
  [--suite-out TEXT]
  [--suite-layout standard|enterprise]
  [--suite-prefix TEXT]
  [--output text|json]

Repeat --catalog to select more than one catalog. Use --suite-layout enterprise with --suite-out when generated review files must include provider, environment, workspace, and catalog scope in their file names. Use --suite-prefix only when your organization has a stricter naming standard.

import map-snowflake

datamuru import map-snowflake
  [--config TEXT]
  [--catalog TEXT]...
  [--target-account TEXT]
  [--target-workspace TEXT]
  [--database-prefix TEXT]
  [--schema-case upper|lower|preserve]
  [--out TEXT]
  [--output text|json]

Generates a draft Databricks-to-Snowflake migration mapping from live Databricks catalog/schema discovery. The command does not move data and does not mutate Snowflake. It writes a reviewable YAML contract that maps Databricks catalogs to Snowflake databases and Databricks schemas to Snowflake schemas.

Use --catalog to keep the draft bounded. Use --database-prefix and --schema-case to match enterprise Snowflake naming standards.

import map-databricks

datamuru import map-databricks
  [--config TEXT]
  [--database TEXT]...
  [--target-workspace TEXT]
  [--target-cloud azure|aws|gcp]
  [--catalog-prefix TEXT]
  [--identifier-case lower|preserve]
  [--out TEXT]
  [--output text|json]

Generates a draft Snowflake-to-Databricks mapping from live-readonly Snowflake database/schema discovery. Databases map to catalogs and schemas map to schemas. Repeat --database to bound the source scope.

The command performs no mutation or data movement. Identifier normalization is deterministic, and target catalog or schema collisions block generation.

import adopt

datamuru import adopt
  [--config TEXT]
  --target TEXT...
  [--auto-approve]
  [--output text|json]

Preview is the default. Repeat --target to select multiple declared resources. A catalog target also selects its declared schemas. --auto-approve writes state only when every selected resource exists live and matches its declared fingerprint.

state inspect

datamuru state inspect [--config TEXT] [--output text|json]

Reports whether the configured state backend can run in the current OSS runtime. Local state is ready for read-write workflows. Remote backend values (s3, azure_blob, and gcs) are recognized as configuration contracts, but the OSS alpha reports them as blocked instead of attempting cloud reads or writes. Use JSON output in CI to fail early before plan or apply workflows. When a remote state contract is configured, plan, apply, destroy, and adoption commands fail before provider work with DMR-STATE-REMOTE.

edition show

datamuru edition show [--config TEXT] [--output text|json]

Reports the configured edition and enabled or restricted features.

enterprise activation check

datamuru enterprise activation check [--config TEXT] [--output text|json]

Checks whether an Enterprise project has the hosted control plane feature, activation metadata, and configured license key environment variable needed for onboarding. JSON output includes a redacted activation payload and never prints the license key value.

enterprise activation export

datamuru enterprise activation export
  [--config TEXT]
  --out TEXT
  [--allow-blocked]
  [--output text|json]

Writes a redacted Enterprise activation handoff bundle for onboarding. The command fails without writing a file when activation is blocked. Use --allow-blocked only when support asks for a diagnostic bundle that includes failed checks.

enterprise activation purchase-request

datamuru enterprise activation purchase-request
  [--config TEXT]
  --out TEXT
  [--allow-blocked]
  [--output text|json]

Writes a redacted offline purchase and license activation request for the Enterprise onboarding or support workflow. The artifact includes commercial metadata, requested entitlements, tenant fulfillment fields, and license environment-variable status. It does not provision a tenant, call a license server, or include the license key value.

enterprise activation fulfill

datamuru enterprise activation fulfill
  --request TEXT
  --decision approve|reject
  --operator TEXT
  --decision-reference TEXT
  --out DIRECTORY
  [--notes TEXT]
  [--output text|json]

Validates a redacted purchase request and records an offline operator decision. Approval writes a versioned fulfillment decision and activation receipt; rejection writes only the decision. Conflicting existing evidence blocks the command. It performs no payment processing, license signing, network request, provider mutation, state mutation, or tenant provisioning.

enterprise activation evidence

datamuru enterprise activation evidence
  [--config TEXT]
  --out TEXT
  [--allow-blocked]
  [--output text|json]

Writes a redacted audit evidence report for Enterprise activation handoff. The report wraps activation readiness, the hosted control plane contract, audit metadata, and follow-up actions. The command fails without writing a file when activation is blocked unless --allow-blocked is set for support triage.

enterprise activation package

datamuru enterprise activation package
  [--config TEXT]
  --out TEXT
  [--allow-blocked]
  [--output text|json]

Writes a single redacted activation handoff directory for onboarding. The package includes:

  • enterprise-activation.json;
  • purchase-request.json;
  • activation-evidence.json;
  • control-plane-contract.json;
  • control-plane-architecture.json;
  • tenant-entitlement-record.json;
  • manifest.json.

The command fails without writing files when activation is blocked unless --allow-blocked is set for support triage. The manifest records artifact schema versions, ready or blocked status, and redaction guarantees.

enterprise control-plane tenant-record

datamuru enterprise control-plane tenant-record
  [--config TEXT]
  --out TEXT
  [--allow-blocked]
  [--output text|json]

Writes an immutable, redacted tenant entitlement record with schema datamuru.tenant_entitlement_record.v1. The record_id is stable for the same project, tenant, and entitlement binding even when the generation time or license-key availability changes. The command is offline and does not provision a tenant, call a license server, mutate provider resources, or mutate state.

The command fails without writing a file when activation is blocked. Use --allow-blocked only for a support-requested diagnostic record containing failed checks. JSON output is the complete redacted record.

enterprise control-plane contract

datamuru enterprise control-plane contract
  [--config TEXT]
  [--out TEXT]
  [--output text|json]

Builds a redacted hosted control plane handoff contract from local project configuration. The contract combines activation readiness, state backend posture, feature flags, and hosted follow-up actions. It does not provision a tenant, call a license server, or include the license key value.

enterprise control-plane architecture

datamuru enterprise control-plane architecture
  [--config TEXT]
  [--out TEXT]
  [--output text|json]

Builds a versioned hosted control plane reference architecture contract. The contract describes components, data flows, extension points, trust boundaries, accepted decisions, implementation backlog, and non-goals. It is an offline planning artifact and does not provision hosted infrastructure.

agile export

datamuru agile export
  [--format github-issues]
  [--source TEXT]
  --out TEXT
  [--release-target TEXT]
  [--output text|json]

Exports local GitHub issue draft files from the documented DataMuru roadmap table. The first supported format is github-issues. The command writes one Markdown issue draft per backlog row plus manifest.json for review and later automation.

Use --release-target to export one milestone at a time. This command does not create GitHub issues and does not require GitHub credentials.

Exit behavior

Commands return a nonzero exit code for structured DataMuru errors. Do not parse human-formatted Rich output in automation; use JSON output where available.