Skip to main content

Gable CLI and SDK

gable is Gable on the command line. It publishes contracts, registers data assets and more.

gable --help
Usage: gable [OPTIONS] COMMAND [ARGS]...

Options:
  --endpoint TEXT  Customer API endpoint for Gable, in the format
                   https://api.company.gable.ai/
  --api-key TEXT   API Key for Gable
  --version        Show the version and exit.
  --help           Show this message and exit.

Commands:
  auth        View configured Gable authentication information
  contract    Validate/publish contracts and check data asset compliance
  data-asset  Commands for data assets
  ping        Pings the Gable API to check for connectivity

Getting Started

gable is hosted on PyPi, so to install it just run:

pip install gable

Installing Additional Modules for MySQL and PostgreSQL

Gable's CLI allows you to introspect your database and register tables as data assets within Gable's system. Connecting to these databases require additional packages to communicate with your database(s) of choice.

For MySQL, install the additional packages by running:

pip install 'gable[mysql]'

For PostgreSQL, install the additional packages by running:

pip install 'gable[postgres]'

To install all additional dependencies at once, you can run:

pip install 'gable[all]'

Uploading Lineage Results

Upload a single legacy results file with --results-file:

gable lineage upload --project-root . --namespace dev --results-file results.json

Referenced Prime artifacts require all three explicit file arguments:

gable lineage upload --project-root . --namespace dev \
  --strands-file strands.json \
  --metadata-file strand-metadata.json \
  --code-paths-file code-paths.json

Only explicitly named files are uploaded; sibling files are never discovered. Incomplete artifact sets, missing files, and conflicting options are rejected before any upload. Referenced artifacts cannot be combined with --results-file.

The referenced trio is packaged into one gzip-compressed tar stream and sent to /sca/results through the existing chunk transport. There is no separate declaration or completion call. The command succeeds only after the server confirms that all three files are present and valid. Partial transfers are not usable, and individual files cannot replace an existing set.

Retry the same command after an interruption. The CLI saves a small <strands-file>.upload-<identity>.json retry-state file before uploading. Keep that file to resume automatically. State is scoped to file contents and target, so a different scan or endpoint does not reuse an unrelated run. No scan artifacts are modified. Use --run-id <UUIDv7> to resume a known run explicitly or to request a new run; different content under an existing run ID is rejected by the server.

Setting up zsh/bash Autocomplete

The Gable CLI supports shell autocomplete for zsh and bash so you can hit TAB to see available commands and options as you write the command.

To enable it, run the following commands:

_SHELL=zsh # or bash
GABLE_CONFIG_DIR=~/.config/gable
mkdir -p $GABLE_CONFIG_DIR
_GABLE_COMPLETE=${_SHELL}_source gable > $GABLE_CONFIG_DIR/complete.sh

Then add the following to your shell startup scripts (e.g. .zshrc, .bashrc):

source ~/.config/gable/complete.sh

Authentication

To establish an authenticated connection with Gable via the CLI, you need:

  • The API endpoint associated with your organization
  • An API key that corresponds to the endpoint

In order to find your API key and API endpoint, see the documentation in your Gable web app at (/docs/settings/api_keys).

There are two supported methods for providing this config to the CLI:

Authenticating with CLI Arguments

You have the option to pass the endpoint and API key information directly as arguments during the CLI invocation. For example:

gable --endpoint "https://api.yourorganization.gable.ai" --api-key "yourapikey" ping

Authenticating with Environment Variables

To avoid providing this config every time you execute a command, you can set them as environment variables: GABLE_API_ENDPOINT and GABLE_API_KEY. To make them persistent in your environment, add this to your shell initialization file (e.g. .zshrc or .bashrc):

export GABLE_API_ENDPOINT="https://api.yourorganization.gable.ai"
export GABLE_API_KEY="yourapikey"

Then, you can simply use the CLI as follows:

gable ping

Accessing APIs Behind Proxies (Custom API Headers)

To access the Gable API behind corporate or customer proxies that require custom authentication, users can provide additional HTTP headers using the GABLE_API_HEADERS environment variable. This feature is essential for organizations whose infrastructure enforces proxy authentication or requires custom metadata in API requests.

Usage

Set the GABLE_API_HEADERS environment variable as a JSON string containing your custom headers:

export GABLE_API_HEADERS='{"Authorization": "Bearer YOUR_TOKEN", "X-Proxy-Header": "proxy-value"}'

When set, these headers are automatically included in every API request made by the CLI or client library. Custom headers will override default headers (such as X-API-KEY), allowing flexible integration with proxies, gateways, or custom authentication schemes.

Example

export GABLE_API_KEY=your_api_key
export GABLE_API_ENDPOINT=https://api.example.com
export GABLE_API_HEADERS='{"Authorization": "Bearer YOUR_TOKEN", "X-Proxy-Header": "proxy-value"}'
gable ping

Uploading compliance results

Create a results file with the existing upload envelope:

{"type":"COMPLIANCE","run_id":"01900000-0000-7000-8000-000000000010","data":{}}
gable lineage upload --results-file compliance.json

The run must already have a component and uploaded strands. data is a provisional object with no domain-specific schema. Results are stored at strands/<run_id>/compliance.json; another upload replaces the previous document without creating a run or changing its status.

For large result files, supply the routing metadata explicitly:

gable lineage upload --results-file compliance.json \
  --payload-type COMPLIANCE \
  --run-id 01900000-0000-7000-8000-000000000010

--payload-type accepts CODE, DATA_STORE, EDGE, CODE_STRANDS, DATA_COMPONENTS, CODE_DATA_EDGES, COMPLIANCE, or AI_AUGMENTATION; it and --run-id must be supplied together. In this mode the CLI gzip-compresses and chunks the file as opaque bytes, adds the metadata to every chunk request header, and does not parse, validate, or reserialize the JSON. The backend routes using the headers, then parses the body only when the selected upload handler needs it. If both options are omitted, the legacy envelope is parsed as before. Explicit uploads do not require --project-root or --namespace, but their run must already exist unless the body includes the upload context needed to create it.

Metadata

Release files for gable 0.72.0

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

Source distribution (sdist)

Source distribution for gable 0.72.0
File Size Uploaded
gable-0.72.0.tar.gz 218.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gable 0.72.0
File Interpreter ABI Platform
gable-0.72.0-py3-none-any.whl Python 3 none any Details

Total release size: 498.5 kB

Release files / gable-0.72.0.tar.gz

Download URL gable-0.72.0.tar.gz
Size 218.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1c546356ed07480d6fa1883b76ea8adef8d89b1d8e6d70ce7b281c8c460dd78e
BLAKE2b-256 checksum
How to use checksums
075284071fe66feff90b63494a9e2f96362834e6dfa99359dbe67f7b6714753c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.21

Release files / gable-0.72.0-py3-none-any.whl

Download URL gable-0.72.0-py3-none-any.whl
Size 280.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c14764ab963de3eab8ec7d365f1cb5916a104e5b545e87a9edd5fc7bd9387347
BLAKE2b-256 checksum
How to use checksums
8d992791dfde837a74e15caa6835bb615691b608f2e64f9294a03a52a06425fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.21

Release history Release notifications | RSS feed

This release

0.72.0 This release

2 release files

0.71.2

2 release files

0.71.1

2 release files

0.69.0

2 release files

0.67.0

2 release files

0.66.0

2 release files

0.64.3

2 release files

0.64.1

2 release files

0.64.0

2 release files

0.63.1

2 release files

0.63.0

2 release files

0.61.8

2 release files

0.61.7

2 release files

0.61.6

2 release files

0.61.5

2 release files

0.61.4

2 release files

0.61.1

2 release files

0.60.0

2 release files

0.59.9

2 release files

0.59.8

2 release files

0.59.7

2 release files

0.59.6

2 release files

0.59.5

2 release files

0.58.5

2 release files

0.58.4

2 release files

0.58.1

2 release files

0.58.0

2 release files

0.57.3

2 release files

0.57.2

2 release files

0.57.1

2 release files

0.56.0

2 release files

0.55.0

2 release files

0.54.1

2 release files

0.54.0

2 release files

0.53.1

2 release files

0.53.0

2 release files

0.52.1

2 release files

0.51.4

2 release files

0.51.3

2 release files

0.51.2

2 release files

0.51.1

2 release files

0.51.0

2 release files

0.50.2

2 release files

0.50.1

2 release files

0.50.0

2 release files

0.49.4

2 release files

0.49.1

2 release files

0.49.0

2 release files

0.48.1

2 release files

0.46.1

2 release files

0.46.0

2 release files

0.43.2

2 release files

0.43.1

2 release files

0.43.0

2 release files

0.42.0

2 release files

0.41.1

2 release files

0.39.0

2 release files

0.38.0

2 release files

0.37.9

2 release files

0.37.8

2 release files

0.37.7

2 release files

0.37.5

2 release files

0.37.4

2 release files

0.37.3

2 release files

0.37.1

2 release files

0.37.0

2 release files

0.33.0

2 release files

0.31.0

2 release files

0.30.0

2 release files

0.25.0

2 release files

0.24.1

2 release files

0.24.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.2

2 release files

0.16.1

2 release files

0.15.3

2 release files

0.15.2

2 release files

0.15.1

2 release files

0.14.0

2 release files

0.12.2

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

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