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

# Dump the email templates, edit the wording, and write them back
entropy-data settings email-templates get --output yaml > email-templates.yaml
entropy-data settings email-templates put --file email-templates.yaml

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

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

# Draft a change to a data contract on a branch, test it, and land it
entropy-data datacontracts branches create orders add-status
entropy-data datacontracts branches put orders add-status --file orders.yaml
entropy-data datacontracts test orders --branch add-status
entropy-data datacontracts branches merge orders add-status --version 1.1.0

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 ...
                  branches list | create | get | put | yaml | changes | rebase | merge | delete
  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 ... | email-templates ...
  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, email-templates, 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.

Metadata

Release files for entropy-data 0.3.22

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for entropy-data 0.3.22
File Size Uploaded
entropy_data-0.3.22.tar.gz 90.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for entropy-data 0.3.22
File Interpreter ABI Platform
entropy_data-0.3.22-py3-none-any.whl Python 3 none any Details

Total release size: 164.2 kB

Release files / entropy_data-0.3.22.tar.gz

Download URL entropy_data-0.3.22.tar.gz
Size 90.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b40e29a54d80272fdb8a57c75ca92542dccfd9b5d1d99741b28ca8a932be3f01
BLAKE2b-256 checksum
How to use checksums
a42454afcc309c324254cd67b10b27e5ded5db4fa0ebf4788ec3709ee8caadce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / entropy_data-0.3.22-py3-none-any.whl

Download URL entropy_data-0.3.22-py3-none-any.whl
Size 73.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
82b4635e7034c7c1e91ceac384ecd2218576c34f1f55dde95421ff6e37959aec
BLAKE2b-256 checksum
How to use checksums
8a34e9ef97c7721b9468a2c53242ecda9629206a9d52fc6e0d86731ac830b469
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.24

2 release files

0.3.23

2 release files

This release

0.3.22 This release

2 release files

0.3.21

2 release files

0.3.15

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page