Skip to main content

Snowplow CLI

Snowplow CLI brings data management elements of Snowplow Console into the command line. It allows you to download your data structures and data products to YAML/JSON files and publish them back to Console. This enables git-ops-like workflows, with reviews and branching.

Install

Snowplow CLI can be installed with homebrew:

brew install snowplow/taps/snowplow-cli

Verify the installation with

snowplow-cli --help

For systems where homebrew is not available binaries for multiple platforms can be found in releases.

Example installation for linux_x86_64 using curl

curl -L -o snowplow-cli https://github.com/snowplow/snowplow-cli/releases/latest/download/snowplow-cli_linux_x86_64
chmod u+x snowplow-cli

Verify the installation with

./snowplow-cli --help

Configure

You will need three values.

An API Key Id and the corresponding API Key (secret), which are generated from the credentials section in BDP Console.

The organization ID, which can be retrieved from the URL immediately following the .com when visiting BDP console:

Snowplow CLI can take its configuration from a variety of sources. More details are available from ./snowplow-cli data-structures --help. Variations on these three examples should serve most cases.

SNOWPLOW_CONSOLE_API_KEY_ID=********-****-****-****-************
SNOWPLOW_CONSOLE_API_KEY=********-****-****-****-************
SNOWPLOW_CONSOLE_ORG_ID=********-****-****-****-************

Snowplow CLI defaults to yaml format. It can be changed to json by either providing a --output-format json flag or setting the output-format: json config value. It will work for all commands where it matters, not only for generate.

Configure YAML language server (optional)

During the data products authoring process it's convenient to have the editor highlight errors, suggest possible values, and show examples. All files generated by Snowplow CLI's generate and download commands will contain a special comment as part of the file. This comment can be interpreted by a YAML Language server.

For VS Code you can get this authoring functionality using this YAML extension. Instructions for other editors can be found here.

After that running snowplow-cli ds generate test and opening the generated file in the configured editor of choice should look something like the following:

MCP server

The Snowplow CLI includes a local Model Context Protocol (MCP) server that enables natural language interaction with AI assistants like Claude Desktop, Cursor, GitHub Copilot, and other MCP-compatible clients for creating, validating, and managing your Snowplow tracking plans. This allows you to:

  • Create and validate data structures through conversation
  • Analyze tracking requirements and suggest implementations
  • Validate data products and source applications

For setup instructions and configuration examples for different MCP clients, see our MCP tutorial.

Use cases