Support
Log In

CLI

Everything the Credible App manages, scriptable from your terminal

The Credible CLI (cred) puts the platform in your terminal. Everything the Credible App manages is scriptable — the same environments, packages, connections, and groups — which makes the CLI the natural building block for automation and CI/CD.

Installation

Prerequisites: Node.js version 20+ and npm package manager

Install the Credible CLI globally from the npm registry:

npm install -g @credibledata/cred-cli

View package details at npmjs.com/package/@credibledata/cred-cli

Shell Autocompletion

The CLI supports bash/zsh autocompletion. To set it up, run:

cred --install

Restart your shell, then type cred + TAB to see available commands, or cred ls + TAB to see resource types. Completion is context-aware — cred set environment + TAB completes your environment names, and cred ls version + TAB completes your package names. To remove it, run cred --cleanup.

Core Commands

Authentication & Session

Login

Authenticate with your organization via Auth0:

cred login <organizationName> [-c gcp|aws]

Options:

  • -c, --cluster <cluster>: Target cluster (gcp or aws). Defaults to your organization's default cluster (gcp for most organizations)

Check Status

View your current organization and environment:

cred status

Logout

Clear stored credentials:

cred logout

Authenticate as a Service Account

For scripts and CI/CD, authenticate with a service account JWT instead of the browser-based login — for example, a group access token:

cred set-access-token <jwtToken> [-o <organizationName>]

Options:

  • -o, --organization <organizationName>: Organization to set for the session

Resource Management

List Environments

cred ls environment

Get Environment Details

cred get environment <environmentName>

Create Environment

cred add environment <environmentName> [--readmeFile <path>] [--replication <count>] [-y]

Options:

  • --readmeFile <path>: Path to README file to include
  • --replication <count>: Replication count for the environment's packages (must be at least 1)

Update Environment

cred update environment <environmentName> [--replication <count>] [-y]

Delete Environment

cred rm environment <environmentName> [-y]

Set Default Environment

cred set environment <environmentName>

Setting a default environment only applies to CLI sessions - it doesn't affect any web experiences

List Packages

cred ls package

Delete Package

cred rm package <packageName> [-y]

Update Package

cred update package <packageName> [options]

Options:

  • --version <versionId>: Set which version is latest/pinned
  • --description <text>: Update package description
  • --replication <count>: Set replication count (must be at least 1)

The "latest" version may also be called "pinned" in the web UI

Publish New Version

Run from your package directory:

cred publish [--set-latest] [--replication <count>] [-y]

Options:

  • --set-latest: Set the published version as the package's latest version
  • --replication <count>: The number of replicas to create

List Package Versions

cred ls version <packageName>

Archive Version

cred archive <packageName> <versionId> [-y]

Unarchive Version

cred unarchive <packageName> <versionId> [-y]

There is no cred set package command. Use cred set environment to set your default environment. Packages are managed through publish/archive/unarchive commands.

List Connections

cred ls connection

Create Connection

cred add connection <connectionFileName> [--include-tables <tables>] [--exclude-tables <tables>] [--skip-indexing] [-y]

Options:

  • --include-tables <tables>: Comma-separated list of tables to index for AI-assisted modeling, as {dataset/schema}.{table} (use * for all tables in a schema, e.g. sales.*,finance.orders)
  • --exclude-tables <tables>: Comma-separated list of tables to exclude from indexing (same format); mutually exclusive with --include-tables
  • --skip-indexing: Disable automatic indexing for this connection; cannot be combined with the table flags

The connectionFileName should be a JSON file containing an array of connection objects. The connection name is a field within the JSON, not a command-line argument.

Command Syntax:

cred add connection <connectionFileName>

JSON File Structure:

The file should contain an array of connection objects. Each connection has:

  • name: The connection name (required)
  • type: Connection type (postgres, bigquery, snowflake, trino, databricks, mysql)
  • Connection-specific configuration based on type

BigQuery Example:

[
  {
    "name": "my-bigquery-connection",
    "type": "bigquery",
    "bigqueryConnection": {
      "defaultProjectId": "my-project",
      "billingProjectId": "billing-project",
      "location": "us-central1",
      "serviceAccountKeyJson": "{\"type\":\"service_account\",\"project_id\":\"...\"}",
      "maximumBytesBilled": "1000000",
      "queryTimeoutMilliseconds": "30000"
    }
  }
]

Note: For BigQuery, the serviceAccountKeyJson field contains the entire JSON content as a string (not a file path).

PostgreSQL Example:

[
  {
    "name": "my-postgres-connection",
    "type": "postgres",
    "postgresConnection": {
      "host": "localhost",
      "port": 5432,
      "databaseName": "mydb",
      "userName": "myuser",
      "password": "mypassword"
    }
  }
]

Alternatively, you can use a connection string:

[
  {
    "name": "my-postgres-connection",
    "type": "postgres",
    "postgresConnection": {
      "connectionString": "postgresql://user:password@localhost:5432/mydb"
    }
  }
]

Snowflake Example:

[
  {
    "name": "my-snowflake-connection",
    "type": "snowflake",
    "snowflakeConnection": {
      "account": "myaccount.us-east-1",
      "username": "myuser",
      "password": "mypassword",
      "warehouse": "COMPUTE_WH",
      "database": "MYDB",
      "schema": "PUBLIC",
      "responseTimeoutMilliseconds": 60000
    }
  }
]

Databricks Example (Personal Access Token):

[
  {
    "name": "my-databricks-connection",
    "type": "databricks",
    "databricksConnection": {
      "host": "dbc-xxxxxxxx-xxxx.cloud.databricks.com",
      "path": "/sql/1.0/warehouses/abcdef1234567890",
      "token": "dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "defaultCatalog": "main",
      "defaultSchema": "default"
    }
  }
]

Alternatively, authenticate with an OAuth M2M service principal:

[
  {
    "name": "my-databricks-connection",
    "type": "databricks",
    "databricksConnection": {
      "host": "dbc-xxxxxxxx-xxxx.cloud.databricks.com",
      "path": "/sql/1.0/warehouses/abcdef1234567890",
      "oauthClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "oauthClientSecret": "doseXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "defaultCatalog": "main",
      "defaultSchema": "default"
    }
  }
]

See the Databricks connection reference for details on creating a SQL warehouse and credentials.

The connection name is defined in the JSON file itself, not as a command argument. Names can contain only letters, numbers, and underscores, and must start with a letter or underscore. You can include multiple connections in a single JSON file array.

Delete Connection

cred rm connection <connectionName> [-y]

List Groups

cred ls group

Get Group Details

cred get group <groupName>

Create Group

cred add group <groupName> [-d <description>] [-y]

Options:

  • -d, --description: Description for the group
  • -y, --yes: Skip confirmation

Delete Group

cred rm group <groupName> [-y]

Create Group Access Token

cred add group-access-token <groupName> <tokenName> [-e <expiresAt>] [-j]

Arguments:

  • <groupName>: The name of the group
  • <tokenName>: Name for the API key/token

Options:

  • -e, --expires-at <expiresAt>: Token expiration date in ISO 8601 format (e.g., 2027-12-31T23:59:59Z); defaults to no practical expiration
  • -j, --json-output: Output only JSON, for use in scripts

Example:

cred add group-access-token ai-agents-group production-token

This command generates an API key that can be used to authenticate applications or services with the permissions of the specified group. The token is displayed once and should be stored securely.

List Group Access Tokens

cred ls group-access-token <groupName>

Delete Group Access Token

cred rm group-access-token <groupName> <tokenName> [-y]

Add Member to Group

cred add member <groupName> <memberType> <memberName> <role>

Arguments:

  • <groupName>: The name of the group
  • <memberType>: Type of member (user or group)
  • <memberName>: Name of the user or group to add
  • <role>: Member role (admin or member)

Examples:

# Add a user as admin
cred add member engineering-team user john.doe@example.com admin

# Add a nested group as member
cred add member engineering-team group data-analysts member

Remove Member from Group

cred rm member <groupName> <memberType> <memberName>

Arguments:

  • <groupName>: The name of the group
  • <memberType>: Type of member (user or group)
  • <memberName>: Name of the user or group to remove

Example:

cred rm member engineering-team user john.doe@example.com

Groups enable role-based access control (RBAC) for organizing users and managing permissions across environments and packages. Groups can contain both individual users and other groups (nested groups).

These commands monitor and manage the materialized tables and search indexes the Credible service builds for a published package version.

List Materializations

List the materializations of a package version, with status and any failure reason:

cred ls materialization <packageName> <versionId>

Get Materialization Details

Status, physical table and connection, serving build, and freshness/staleness:

cred get materialization <packageName> <versionId> <materializationId>

List Indexes

List the dimensional search indexes of a package version, with status, any failure reason, and freshness:

cred ls index <packageName> <versionId>

Get Index Details

Status, row count, last indexed time, and freshness/staleness:

cred get index <packageName> <versionId> <indexId>

List Runs

List a package's build/refresh runs, most recent first. Runs are package-scoped and cover both materialized sources and dimensional indexes:

cred ls run <packageName> [versionId] [--source <sourceName>] [--dimension <dimension>]

Options:

  • [versionId]: Filter to the runs a specific version initiated (e.g., 0.1.21); omit to list every run in the package
  • --source <sourceName>: Only list runs targeting this persisted source
  • --dimension <dimension>: Only list runs targeting this indexed dimension

Get Run Details

Includes the run's build-plan graph — per-unit state, physical table names, and row counts:

cred get run <packageName> <runId>

Trigger a Run

Trigger an on-demand rebuild/refresh for a package version. Defaults to a full run (all sources and indexes):

cred rerun <packageName> <versionId> [--source <sourceName>] [--dimension <dimension>] [-y]

Options:

  • --source <sourceName>: Scope the run to a single persisted source
  • --dimension <dimension>: Scope the run to a single indexed dimension
  • --model-file <modelFilePath>: Disambiguate a source/dimension defined in more than one model file
  • --include-upstream: Also force-rebuild the target's upstream persisted dependencies (only meaningful with --source/--dimension)

Cancel a Run

Cancel an in-flight run:

cred cancel-run <packageName> <runId> [-y]

Command Options

Global Options

OptionDescription
-V, --cli-versionDisplay the CLI version number
-h, --helpDisplay help (use alone for general help or after a command for specific help)
--debugEnable debug output (most commands)
-y, --yesSkip confirmation prompts

Pagination

List commands (cred ls environment, cred ls connection, cred ls package, cred ls index, cred ls run) return all records by default and accept:

OptionDescription
--page <number>Page number (starts at 1)
--page-size <number>Items per page (max: 500)

Earlier CLI versions used project where the platform now uses environment (e.g., cred ls project). The project commands still work as deprecated aliases — use the environment forms going forward.

Next Steps

On this page