Command line interface for Hotdata.
Homebrew
brew install hotdata-dev/tap/hotdata-cliBinary (macOS, Linux)
Download a binary from Releases.
Build from source (requires Rust)
cargo build --release
cp target/release/hotdata /usr/local/bin/hotdataRun the following command to authenticate:
hotdata authThis launches a browser window where you can authorize the CLI to access your Hotdata account.
Alternatively, authenticate with an API key using the --api-key flag:
hotdata <command> --api-key <api_key>Or set the HOTDATA_API_KEY environment variable (also loaded from .env files):
export HOTDATA_API_KEY=<api_key>
hotdata <command>API key priority (lowest to highest): config file → HOTDATA_API_KEY env var → --api-key flag.
| Command | Subcommands | Description |
|---|---|---|
auth |
status, logout |
Authenticate (run without subcommand to log in) |
workspaces |
list, set, get, create, update |
Manage workspaces |
connections |
list, get, create, refresh, update, delete, new |
Manage connections |
tables |
list |
List tables and columns |
datasets |
list, create |
Manage uploaded datasets |
query |
Execute a SQL query | |
results |
list |
Retrieve stored query results |
jobs |
list |
Manage background jobs |
skills |
install, status |
Manage the hotdata-cli agent skill |
| Option | Description | Type | Default |
|---|---|---|---|
--api-key |
API key (overrides env var and config) | string | |
-v, --version |
Print version | boolean | |
-h, --help |
Print help | boolean |
hotdata workspaces list [--format table|json|yaml]
hotdata workspaces set [<workspace_id>]listshows all workspaces with a*marker on the active one.setswitches the active workspace. Omit the ID for interactive selection.- The active workspace is used as the default for all commands that accept
--workspace-id.
hotdata connections list [--workspace-id <id>] [--format table|json|yaml]
hotdata connections get <connection_id> [--workspace-id <id>] [--format yaml|json|table]
hotdata connections refresh <connection_id> [--workspace-id <id>]
hotdata connections new [--workspace-id <id>]listreturnsid,name,source_typefor each connection.refreshtriggers a schema refresh for a connection.newlaunches an interactive connection creation wizard.
# List available connection types
hotdata connections create list [--format table|json|yaml]
# Inspect schema for a connection type
hotdata connections create list <type_name> --format json
# Create a connection
hotdata connections create --name "my-conn" --type postgres --config '{"host":"...","port":5432,...}'hotdata tables list [--workspace-id <id>] [--connection-id <id>] [--schema <pattern>] [--table <pattern>] [--limit <n>] [--cursor <token>] [--format table|json|yaml]- Without
--connection-id: lists all tables withtable,synced,last_sync. - With
--connection-id: includes column details (column,data_type,nullable). --schemaand--tablesupport SQL%wildcard patterns.- Tables are displayed as
<connection>.<schema>.<table>— use this format in SQL queries.
hotdata datasets list [--workspace-id <id>] [--limit <n>] [--offset <n>] [--format table|json|yaml]
hotdata datasets <dataset_id> [--workspace-id <id>] [--format table|json|yaml]
hotdata datasets create --file data.csv [--label "My Dataset"] [--table-name my_dataset]
hotdata datasets create --sql "SELECT ..." --label "My Dataset"- Datasets are queryable as
datasets.main.<table_name>. --file,--sql, and--query-idare mutually exclusive.- Format is auto-detected from file extension or content.
- Piped stdin is supported:
cat data.csv | hotdata datasets create --label "My Dataset"
hotdata query "<sql>" [--workspace-id <id>] [--connection <connection_id>] [--format table|json|csv]- Default format is
table, which prints results with row count and execution time. - Use
--connectionto scope the query to a specific connection.
hotdata results <result_id> [--workspace-id <id>] [--format table|json|csv]
hotdata results list [--workspace-id <id>] [--limit <n>] [--offset <n>] [--format table|json|yaml]- Query results include a
result-idin the table footer — use it to retrieve past results without re-running queries.
hotdata jobs list [--workspace-id <id>] [--job-type <type>] [--status <status>] [--all] [--limit <n>] [--offset <n>] [--format table|json|yaml]
hotdata jobs <job_id> [--workspace-id <id>] [--format table|json|yaml]listshows only active jobs (pendingandrunning) by default. Use--allto see all jobs.--job-typeaccepts:data_refresh_table,data_refresh_connection,create_index.--statusaccepts:pending,running,succeeded,partially_succeeded,failed.
Config is stored at ~/.hotdata/config.yml keyed by profile (default: default).
| Variable | Description | Default |
|---|---|---|
HOTDATA_API_KEY |
API key (overrides config file) | |
HOTDATA_API_URL |
API base URL | https://api.hotdata.dev/v1 |
HOTDATA_APP_URL |
App URL for browser login | https://app.hotdata.dev |
Releases use a two-phase workflow wrapping cargo-release.
Phase 1 — prepare
scripts/release.sh prepare <version>Creates a release/<version> branch, bumps the version, updates CHANGELOG.md, pushes the branch, and opens a pull request.
Phase 2 — finish
scripts/release.sh finishSwitches to main, pulls latest, tags the release, and triggers the dist workflow.