Skip to main content

Entropy Data CLI

CI PyPI Python

The entropy-data CLI lets you manage your Entropy Data platform from the command line.

You can manage data products, data contracts, access agreements, teams, source systems, definitions, certifications, and more — directly from your terminal or CI/CD pipeline.

Install

Requires Python >= 3.11.

uv tool install entropy-data
entropy-data --help

Or with pip:

pip install entropy-data
entropy-data --help

Docker

docker run --rm entropydata/entropy-data-cli --help

Getting Started

1. Configure a connection

Generate an API key in the Entropy Data UI under organization settings, then:

entropy-data connection add prod
# prompts for API key and host

2. Explore your data platform

# List teams
entropy-data teams list

# Get a specific data product
entropy-data dataproducts get my-data-product

# List data contracts as JSON
entropy-data datacontracts list --output json

3. Manage resources

# Create or update a team from a YAML file
entropy-data teams put marketing --file team.yaml

# Show the team roles configuration, or switch to a custom role catalog
entropy-data settings team-roles get
entropy-data settings team-roles put --file team-roles.yaml

# Approve an access agreement
entropy-data access approve 640864de-83d4-4619-afba-ccea8037ed3a

# Search across all resources
entropy-data search query "customer orders"

Commands

entropy-data [--version] [--connection NAME] [--output table|json|yaml] [--debug]

  connection      list | get | add | remove | set-default | test
  dataproducts    list | get | put | delete | import-from-git | star | unstar | star-status | stargazers | gitconnection ...
  datacontracts   list | get | put | test | delete | yaml | generate | import-from-git | gitconnection ...
  access          list | get | put | delete | approve | reject | cancel | request
  teams           list | get | put | delete | git-credentials ... | notifications ...
  sourcesystems   list | get | put | delete
  definitions     list | get | put | delete
  certifications  list | get | put | delete
  classifications list | get | put | delete
  policies        list | get | put | delete
  example-data    list | get | put | delete
  test-results    list | get | publish | delete
  costs           list | add | delete
  assets          list | get | put | delete | tags ...
  tags            list | get | put | delete
  api-keys        create | delete
  connectors      list | get | put | delete
  integrations    list | get | runs | runs-get | runs-latest | run | cancel
  organization    get | members ... | git-credentials ...
  settings        get-customization | put-customization | get-scim-mapping | put-scim-mapping | team-roles ...
  events          poll
  lineage         list | submit | delete
  schemas         get
  search          query
  semantics       namespaces ... | concepts ... | relationships ... | search
  usage           list | submit | delete
  export          dir
  apply           dir [--include] [--exclude] [--prune] [--dry-run]
  import          zip
  sync            --source SRC --target TGT --include a,b [--exclude] [--prune] [--dry-run] [--keep DIR]

Syncing organization state between instances

sync copies the portable declarative state of an organization from one Entropy Data instance to another — for example to promote a test environment to prod. It exports the source and applies it to the target in one step (export dir + apply dir do the same in two). Only state reachable through the public /api/** API and portable across instances is copied (no secrets, telemetry, or environment-specific identity). Every write is an idempotent PUT-by-id, so runs converge and are safe to repeat.

sync copies nothing by default — name the resources to sync with --include.

Supported resources (in dependency order): teams, tags, definitions, policies, sourcesystems, certifications, classification-schemes, assets, datacontracts, dataproducts, example-data, access, semantic-namespaces, semantic-ontology, organization-features.

Not synced: users & team members, API keys, git credentials, integration and connector credentials, usage, costs, test results, events, and lineage (per-instance identity, secrets, or telemetry). Organization customization, SCIM mapping, team-roles configuration, notification channels, connectors, and integrations are not supported yet.

# Preview a test -> prod sync of selected resources without writing anything.
entropy-data sync --source test --target prod --include teams,policies,datacontracts,dataproducts --dry-run

# Sync those resources.
entropy-data sync --source test --target prod --include teams,policies,datacontracts,dataproducts

# Mirror: also delete target resources that are absent from the source.
entropy-data sync --source test --target prod --include datacontracts --prune

# The two-step equivalent, with a reviewable YAML tree in between.
entropy-data -c test export dir ./state
entropy-data -c prod apply dir ./state

apply dir — apply a local export tree

apply dir <path> reconciles a local export directory into the connected instance, in the spirit of kubectl apply -f <dir>. The tree follows a folder-as-kind convention: the directory name is the resource kind and each YAML file below it is one resource, addressed by the id in its body.

state/
  teams/                          # folder name = resource kind
    marketing.yaml                # one file per resource (filename is cosmetic)
  policies/
    pii-policy.yaml
  datacontracts/
    orders-1-orders.yaml
  semantic-ontology/
    main.yaml                     # document resources: one YAML doc per namespace
  organization-features/
    organization-features.yaml    # singleton: <name>/<name>.yaml

Unlike kubectl, the files carry no kind: field — the enclosing folder is authoritative, so a file only means what its folder says. Folders that are not a known resource kind are ignored. Unlike sync, apply dir applies the whole tree by default (the directory is your selection); use --include/--exclude to narrow it, --dry-run to preview, and --prune to also delete instance resources absent from the tree. This layout matches the app's own organization export, so an export dir tree and an in-app export zip interchange.

Useful options:

  • --include a,b — narrow the apply to these resources (names from the supported list above). Optional; the whole tree is applied when omitted.
  • --exclude a,b — drop resources from the applied set.
  • --prune — after upserts, delete target resources absent from the directory, in reverse dependency order. Guarded by a confirmation prompt unless --yes is passed.
  • --dry-run — print per-resource create/update/(prune) counts; no writes.

Notes:

  • Team members are stripped on import (users are per-instance identities); the export keeps them so the artifact is a faithful snapshot.
  • The semantics graph is copied as one OSI ontology YAML document per namespace (semantic-ontology/<namespace>.yaml) via the app's .../{ns}/ontology.yaml endpoint, which imports it in the correct internal dependency order and provisions the namespace from the metadata (display name, read-only flag, owning team) carried in the document's root custom_properties — so there is no separate namespace artifact. Requires that endpoint on the target instance. A tree exported by an older version that still carries a semantic-namespaces/ folder is applied as before.
  • The organization feature configuration is an org-level singleton (organization-features/organization-features.yaml), applied last and never pruned. It requires the app's GET/PUT /api/organization/features endpoint (entropy-data#1521), which must be merged and deployed to the target instance first.

Connection Management

Connections are stored in ~/.entropy-data/config.toml:

default_connection_name = "prod"

[connections.prod]
api_key = "ed_abc123..."
host = "https://api.entropy-data.com"

[connections.dev]
api_key = "ed_xyz789..."
host = "https://localhost:8080"

You can also use environment variables (ENTROPY_DATA_API_KEY, ENTROPY_DATA_HOST) or CLI options (--api-key, --host).

.env File Support

The CLI automatically loads a .env file from the current working directory. This is useful for project-specific configuration:

# .env
ENTROPY_DATA_API_KEY=ed_abc123...
ENTROPY_DATA_HOST=https://api.entropy-data.com

Values from .env are loaded as environment variables and do not override already-set environment variables.

Resolution precedence: CLI options > environment variables / .env > config file.

TLS behind a corporate proxy or internal CA

By default the CLI verifies TLS certificates against the bundled CA certificates (certifi). In a corporate network with a TLS-inspecting proxy or an internal certificate authority, this can fail with CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate, because the root CA is installed in the operating system's trust store but not in the bundled list.

Use the global --system-truststore option to verify against the operating system's trust store (macOS Keychain, Windows certificate store, or the system CA certificates on Linux) instead:

entropy-data --system-truststore datacontracts list

You can also enable it for every invocation by exporting an environment variable:

export ENTROPY_DATA_SYSTEM_TRUSTSTORE=1

This keeps certificate verification on while trusting the corporate root CA, and applies to every command that makes HTTPS requests.

Development

git clone https://github.com/entropy-data/entropy-data-cli
cd entropy-data-cli
uv sync --dev
uv run pytest
uv run ruff check .

Release

  1. Update the version in pyproject.toml
  2. Update CHANGELOG.md with a ## [X.Y.Z] section
  3. Commit, tag, and push:
git add pyproject.toml CHANGELOG.md
git commit -m "Bump version to X.Y.Z"
git tag vX.Y.Z
git push origin main --tags

The release workflow will automatically run tests, publish to PyPI, create a GitHub Release, and push a Docker image to Docker Hub.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

entropy_data-0.3.21.tar.gz (84.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

entropy_data-0.3.21-py3-none-any.whl (70.1 kB view details)

Uploaded Python 3

File details

Details for the file entropy_data-0.3.21.tar.gz.

File metadata

  • Download URL: entropy_data-0.3.21.tar.gz
  • Upload date:
  • Size: 84.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for entropy_data-0.3.21.tar.gz
Algorithm Hash digest
SHA256 70aca18b5b06dbfdb6fb90e5fd7dd9cfdb0cc0d7797e9676f5616637e960b83b
MD5 df7b7b8c2f06baff22fe245fec1cefe2
BLAKE2b-256 327b9dcac4245bcc4dcdc71ea8fe396fd571533b30b1ce819eddca80e8ec1dfa

See more details on using hashes here.

Provenance

The following attestation bundles were made for entropy_data-0.3.21.tar.gz:

Publisher: release.yaml on entropy-data/entropy-data-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file entropy_data-0.3.21-py3-none-any.whl.

File metadata

  • Download URL: entropy_data-0.3.21-py3-none-any.whl
  • Upload date:
  • Size: 70.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for entropy_data-0.3.21-py3-none-any.whl
Algorithm Hash digest
SHA256 f371cd45257144610762780b90dac8c11e3fe795478bf5655fbeef8a57fdc742
MD5 133b8c939310dd865112bd247d8dbf5a
BLAKE2b-256 bd7c07e2f97fde2a756679bf280096332596e4f75d4319eae445610bbdee0a6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for entropy_data-0.3.21-py3-none-any.whl:

Publisher: release.yaml on entropy-data/entropy-data-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page