SnowCLI — App and Developer CLI for Snowflake ❄️🧑‍💻

I’m excited to share about a new project for Snowflake published to Snowflake Labs: SnowCLI — a developer CLI for creating apps 🎉!

SnowCLI provides a developer interface to speed up the workflow across Snowflake, Snowpark, and the Streamlit private preview. With the SnowCLI, developers can create, debug, and deploy Snowflake applications from the tool of their choice like VS Code, PyCharm, or even Vim.

As Snowflake delivers the Data Cloud, it’s been thrilling to see many users, partners, and organizations building applications that are run and powered by Snowflake. Everything from building a data engineering pipeline using Snowpark in Python, training and serving machine learning models, to creating interactive applications using Streamlit. As the ecosystem of applications grows, so has the need for native tooling to develop and deploy these applications.

CLIs (command line interfaces) provide a flexible and familiar interface for developers in creating apps. With SnowCLI, you can quickly create Python functions and stored procedures / scripts, deploy, and invoke them with just a few keystrokes. The CLI manages authentication between the development machine and Snowflake, manages artifacts and publishing, and object creation. When creating a Snowflake function I no longer need to write this:

CREATE OR REPLACE FUNCTION myfunction(id number)
returns variant
language python
runtime_version=‘3.8’
handler=‘app.run’
imports=(‘@mystage/myapp.py’)
packages=(‘numpy’, ‘pandas’);

And can simply open my Python project and run:

pip install snowflake-cli-labs
snow function create --name myfunction

SnowCLI will automatically management deployment artifacts, sync Python packages and configuration, and even help you manually import packages not published on Anaconda.

You can check out a full end to end QuickStart and Tour of the Snow CLI on GitHub.

The Snow CLI started as a passion project from a few team members at Snowflake who were hearing the feedback from developers on preferred tooling. We plan to iterate and build this into an official production-ready Snowflake CLI in the future (SnowSQL), but didn’t want to wait to get this in front of you for your thoughts and feedback. There is a lot of exciting work right now in the Snowflake developer space, and the SnowCLI is an early indicator of much more to come here.

This is an open source experimental CLI we developed in-house in response to what we were hearing developers were looking for in building apps. As a Snowflake-Labs project, it isn’t covered by official support today. However, we’d love to use this project as a conversation starter around what an ideal development toolset and CLI should look like in Snowflake.

Interested to give it a spin? Head to https://github.com/snowflake-labs/snowcli for instructions on how to run and deploy your first python code to Snowflake. Be sure to let us know your thoughts with comments on this post, sharing on social (I’m on Twitter/LinkedIn @jeffhollan ), or engaging with GitHub issues.

Issues, pull requests, and ideas are all welcome on https://github.com/snowflake-labs/snowcli

Interested in learning more about what’s in store for development in the Data Cloud? Be sure to save your spot for the virtual BUILD ’22 Event!

--

--

Jeff Hollan
Snowflake Builders Blog: Data Engineers, App Developers, AI/ML, & Data Science

Director @ Snowflake. Developer platform, Snowpark, Ecosystem. I love serverless and making it easier than ever to build in the cloud. Thoughts shared are own.