Azure Functions CLI
⚠️ Preview release. This is the first public preview of the Azure Functions CLI. It is not production-ready and is not at feature parity with Core Tools (v4). Expect breaking changes before GA. For stable workflows, keep using Core Tools.
This release is a ground-up rebuild designed around a small core func binary plus on-demand workloads (host, language stacks, templates, extension bundle).
What's new in v5
- New architecture. Small core binary built on System.CommandLine, Spectre.Console, and .NET 10. The Functions host, language stacks, templates, and the extension bundle ship as separate workloads installed on demand.
- Per-stack workloads. Install only what you need:
dotnet,node,python, orgo(more coming soon). - Decoupled host. The Functions host is no longer baked into the CLI. It's a workload of its own, so you can install, update, or pin host versions independently of the CLI version, and run multiple host versions side by side.
- Profiles. Pin the host (and other workload versions) to match a specific Azure Functions environment, so your local install lines up with what Azure is running.
- Interactive
func rundashboard. When attached to a TTY,func run(aliasfunc start) renders a live dashboard: a sticky header showing the host status and list - Rebranded. The product is now Azure Functions CLI. The legacy "Core Tools" name is being phased out in v5.
Install
Because this is a preview, you must opt in to prereleases when installing.
PowerShell (Windows, macOS, Linux):
& ([scriptblock]::Create((irm https://aka.ms/func-cli/install.ps1))) -PrereleaseBash (macOS, Linux):
curl -sSL https://aka.ms/func-cli/install.sh | PRERELEASE=true bashBoth scripts auto-detect your OS and architecture, download this release from GitHub, and install to ~/.azure-functions. The install directory is added to your PATH automatically (run source ~/.bashrc or open a new shell on Linux/macOS to pick it up).
Getting started
The CLI ships with just the core commands. Before you can create or run a Functions app, you need to install the workloads for your stack. The easiest way to do that is func setup.
1. Set up your machine
Run func setup on its own to get an interactive multi-select prompt for the stacks you want:
func setupPrefer non-interactive? Pass the stack directly with --features:
func setup --features dotnet # .NET
func setup --features node # Node.js
func setup --features python # Python
func setup --features go # GoOr set up multiple stacks at once (comma-separated or repeated):
func setup --features node,pythonEither way, func setup installs the Functions host, the worker for each selected stack, templates, and the extension bundle.
2. Create a project
Two scaffolding entry points, depending on what you want:
func quickstart: scaffolds a complete, ready-to-run sample app (trigger code, host config, optional IaC) from a curated catalog. Best when you want a working starting point.func init+func new: build a project from scratch.func initcreates an empty project;func newis the template engine for adding individual functions by trigger (HTTP, Timer, Blob, Queue, Cosmos DB, Durable, etc.).
func quickstart # complete sample app
# or
func init # initalize an empty projectAdd individual Function templates via
func new
3. Run it locally
func runFeedback
File issues at https://github.com/Azure/azure-functions-core-tools/issues and tag with v5.