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.
- env variables
- $HOME/.config/snowplow/snowplow.yml
- inline arguments
SNOWPLOW_CONSOLE_API_KEY_ID=********-****-****-****-************
SNOWPLOW_CONSOLE_API_KEY=********-****-****-****-************
SNOWPLOW_CONSOLE_ORG_ID=********-****-****-****-************
console:
api-key-id: ********-****-****-****-************
api-key: ********-****-****-****-************
org-id: ********-****-****-****-************
./snowplow-cli data-structures --api-key-id ********-****-****-****-************ --api-key ********-****-****-****-************ --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.