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-cliView package details at npmjs.com/package/@credibledata/cred-cli
Shell Autocompletion
The CLI supports bash/zsh autocompletion. To set it up, run:
cred --installRestart 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 (gcporaws). Defaults to your organization's default cluster (gcpfor most organizations)
Check Status
View your current organization and environment:
cred statusLogout
Clear stored credentials:
cred logoutAuthenticate 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 environmentGet 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 packageDelete 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 connectionCreate 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 groupGet 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-tokenThis 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 (userorgroup)<memberName>: Name of the user or group to add<role>: Member role (adminormember)
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 memberRemove Member from Group
cred rm member <groupName> <memberType> <memberName>Arguments:
<groupName>: The name of the group<memberType>: Type of member (userorgroup)<memberName>: Name of the user or group to remove
Example:
cred rm member engineering-team user john.doe@example.comGroups 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
| Option | Description |
|---|---|
-V, --cli-version | Display the CLI version number |
-h, --help | Display help (use alone for general help or after a command for specific help) |
--debug | Enable debug output (most commands) |
-y, --yes | Skip 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:
| Option | Description |
|---|---|
--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.