cred) is a powerful command-line interface for managing semantic data models, packages, environments, and connections in the Credible Data platform. Built for data engineers and DevOps professionals, it enables automated workflows and seamless CI/CD integration.
Installation
Prerequisites: Node.js version 20+ and npm package manager
npm install -g @credibledata/cred-cli
Core Commands
The CLI supports bash/zsh autocompletion. Type
cred + TAB to see available commands, or cred ls + TAB to see resource types (environment, package, connection, version, group).Authentication & Session
Login
Authenticate with your organization via Auth0:cred login <organizationName>
Check Status
View your current organization and environment:cred status
Logout
Clear stored credentials:cred logout
Resource Management
- Environments
- Packages
- Connections
- Groups
List Environments
cred ls environment
Get Environment Details
cred get environment <environmentName>
Create Environment
cred add environment <environmentName> [--readmeFile <path>] [-y]
--readmeFile: Path to README file to include
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]
--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
cred publish [--set-latest] [-y]
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]
--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
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>
name: The connection name (required)type: Connection type (postgres,bigquery,snowflake,trino,databricks,mysql)- Connection-specific configuration based on type
[
{
"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"
}
}
]
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"
}
}
]
[
{
"name": "my-postgres-connection",
"type": "postgres",
"postgresConnection": {
"connectionString": "postgresql://user:password@localhost:5432/mydb"
}
}
]
[
{
"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
}
}
]
[
{
"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"
}
}
]
[
{
"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"
}
}
]
The connection name is defined in the JSON file itself, not as a command argument. 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]
-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>
<groupName>: The name of the group<tokenName>: Name for the API key/token
cred add group-access-token ai-agents-group production-token
Add Member to Group
cred add member <groupName> <memberType> <memberName> <role>
<groupName>: The name of the group<memberType>: Type of member (userorgroup)<memberName>: Name of the user or group to add<role>: Member role (adminormember)
# 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>
<groupName>: The name of the group<memberType>: Type of member (userorgroup)<memberName>: Name of the user or group to remove
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).
Command Options
Global Options
| Option | Description |
|---|---|
-V, --version | Display 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 |
--set-latest | Set published version as the latest (publish command) |