Top Related Projects
⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.
High-Performance Serverless event and data processing platform
Kubernetes Native Serverless Framework
Apache OpenWhisk is an open source serverless cloud platform
Quick Overview
Azure Functions Core Tools is a command-line interface for developing and testing Azure Functions locally. It provides a local development experience for creating, testing, and deploying Azure Functions, allowing developers to work offline and streamline their development process.
Pros
- Local development and testing of Azure Functions without the need for constant cloud deployment
- Cross-platform support (Windows, macOS, and Linux)
- Seamless integration with Visual Studio Code and other development environments
- Ability to run and debug functions locally with full access to logs and debugging tools
Cons
- Requires separate installation and setup, which can be time-consuming for new users
- May have version compatibility issues with Azure Functions runtime in the cloud
- Limited support for some advanced Azure Functions features in local development
- Can consume significant system resources when running multiple functions locally
Getting Started
To get started with Azure Functions Core Tools:
- Install Node.js (version 10.x or later)
- Install the Azure Functions Core Tools:
npm install -g azure-functions-core-tools@4
- Create a new function project:
func init MyFunctionProject
cd MyFunctionProject
- Create a new function:
func new --name MyHttpTrigger --template "HTTP trigger"
- Run the function locally:
func start
Your function is now running locally and can be accessed at http://localhost:7071/api/MyHttpTrigger.
Competitor Comparisons
⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.
Pros of Serverless
- Multi-cloud support (AWS, Azure, Google Cloud, etc.)
- Extensive plugin ecosystem for enhanced functionality
- Strong community support and active development
Cons of Serverless
- Steeper learning curve for beginners
- More complex configuration for advanced scenarios
- Potential vendor lock-in with cloud-specific features
Code Comparison
Azure Functions Core Tools:
func init MyFunctionProject
func new --name MyFunction --template "HTTP trigger"
func start
Serverless:
service: my-service
provider:
name: aws
runtime: nodejs14.x
functions:
hello:
handler: handler.hello
events:
- http: GET hello
Key Differences
- Azure Functions Core Tools is specific to Azure, while Serverless supports multiple cloud providers
- Serverless uses YAML for configuration, Azure Functions Core Tools uses JSON and host.json
- Azure Functions Core Tools provides a more streamlined experience for Azure-specific development
- Serverless offers more flexibility in terms of cloud provider choice and customization
Use Cases
- Choose Azure Functions Core Tools for Azure-focused serverless development
- Opt for Serverless when working with multiple cloud providers or requiring extensive customization
Both tools are actively maintained and have strong communities, making them viable options for serverless development depending on specific project requirements and cloud preferences.
High-Performance Serverless event and data processing platform
Pros of nuclio
- Platform-agnostic: Can run on various cloud providers and on-premises
- High performance: Optimized for low latency and high throughput
- Advanced auto-scaling capabilities
Cons of nuclio
- Steeper learning curve compared to Azure Functions
- Less extensive documentation and community support
- Limited integration with Microsoft ecosystem
Code Comparison
azure-functions-core-tools:
[FunctionName("HttpTrigger")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
// Function logic here
}
nuclio:
package handler
import (
"github.com/nuclio/nuclio-sdk-go"
)
func Handler(context *nuclio.Context, event nuclio.Event) (interface{}, error) {
// Function logic here
}
Both frameworks allow for easy creation of serverless functions, but they differ in syntax and runtime environment. Azure Functions Core Tools is tightly integrated with the Azure ecosystem, while nuclio offers more flexibility in deployment options and supports multiple languages and platforms.
Kubernetes Native Serverless Framework
Pros of Kubeless
- Platform-agnostic: Works with any Kubernetes cluster, not tied to a specific cloud provider
- Supports multiple programming languages out-of-the-box
- Leverages Kubernetes native concepts, making it easier for teams already familiar with Kubernetes
Cons of Kubeless
- Less extensive documentation and community support compared to Azure Functions
- Requires more setup and configuration, as it's not a fully managed service
- Limited integration with other cloud services compared to Azure's ecosystem
Code Comparison
Azure Functions Core Tools:
func new --name MyFunction --template "HTTP trigger"
func start
Kubeless:
kubeless function deploy hello --runtime python3.7 \
--from-file test.py \
--handler test.hello
kubeless function call hello --data '{"msg": "Hello World!"}'
Both tools provide CLI interfaces for creating and managing serverless functions, but Kubeless is more focused on Kubernetes-native deployment and management, while Azure Functions Core Tools offers a more streamlined experience for Azure-specific deployments.
Apache OpenWhisk is an open source serverless cloud platform
Pros of OpenWhisk
- Open-source and vendor-neutral, allowing for greater flexibility and community contributions
- Supports multiple programming languages and runtimes out-of-the-box
- Offers a distributed architecture for better scalability and fault tolerance
Cons of OpenWhisk
- Steeper learning curve and more complex setup compared to Azure Functions Core Tools
- Less integrated with cloud services and tooling ecosystems
- May require more infrastructure management and maintenance
Code Comparison
OpenWhisk action example:
function main(params) {
var name = params.name || 'World';
return {payload: 'Hello, ' + name + '!'};
}
Azure Functions Core Tools function example:
public static async Task<IActionResult> Run(
HttpRequest req,
ILogger log)
{
string name = req.Query["name"];
return new OkObjectResult($"Hello, {name}");
}
Both examples demonstrate simple serverless functions, but OpenWhisk uses a more language-agnostic approach, while Azure Functions Core Tools integrates more closely with .NET and Azure-specific patterns.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME

| Branch | Status |
|---|---|
| main | |
| in-proc |
Azure Functions Core Tools
The Azure Functions Core Tools provide a local development experience for creating, developing, testing, running, and debugging Azure Functions.
Helpful Documentation
Usage
func [context] <action> [-/--options] [--help]
Global Options
These options are available for all commands:
--script-root <PATH>: Set the root directory of the function app. Changes the working directory to the specified path. Defaults to the current directory.-v | --version: Display the version of Azure Functions Core Tools.-h | --help: Display help information about Azure Functions Core Tools or a specific command.
For more detailed usage information, run func --help.
Versions
v1 (v1.x branch): Requires .NET 4.7.1 Windows Only
v4: (main branch): Self-contained cross-platform package (recommended)
Installing the CLI
Windows
msi
| Version | Platform | Download Link | Notes |
|---|---|---|---|
| v4 | Windows 64-bit | Download | VS Code debugging requires 64-bit |
| v4 | Windows 32-bit | Download | |
| v3 | Windows 64-bit | Download | VS Code debugging requires 64-bit |
| v3 | Windows 32-bit | Download |
npm
| Version | Installation Command |
|---|---|
| v4 | npm i -g azure-functions-core-tools@4 |
| v3 | npm i -g azure-functions-core-tools@3 --unsafe-perm true |
| v2 | npm i -g azure-functions-core-tools@2 --unsafe-perm true |
chocolatey
| Version | Installation Command |
|---|---|
| v4 | choco install azure-functions-core-tools |
| v3 | choco install azure-functions-core-tools-3 |
| v2 | choco install azure-functions-core-tools-2 |
[!NOTE] To debug Azure Functions in VSCode, the 64-bit version is required. This is now the default installation. However, if needed, you can explicitly specify it using the following parameter:
--params "'/x64'"
winget
| Version | Installation Command |
|---|---|
| v4 | winget install Microsoft.Azure.FunctionsCoreTools |
| v3 | winget install Microsoft.Azure.FunctionsCoreTools -v 3.0.3904 |
Mac
homebrew
| Version | Installation Commands |
|---|---|
| v4 | brew tap azure/functions brew install azure-functions-core-tools@4 |
| v3 | brew tap azure/functions brew install azure-functions-core-tools@3 |
| v2 | brew tap azure/functions brew install azure-functions-core-tools@2 |
If upgrading to a new version, you may have to run brew update to pull the latest formula
before you run the install command. Or, you can run brew upgrade.
[!NOTE] Homebrew allows side-by-side installation of v2 and v3. You can switch versions with:
brew link --overwrite azure-functions-core-tools@3
Linux
Installation for Linux requires two steps:
- Setting up the package feed
- Installing the tools
1. Set up package feed
Ubuntu
| OS Version | Installation Commands |
|---|---|
| Ubuntu 22.04 | wget -q https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb |
| Ubuntu 20.04 | wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb |
| Ubuntu 19.04 | wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb |
| Ubuntu 18.10 | wget -q https://packages.microsoft.com/config/ubuntu/18.10/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb |
| Ubuntu 18.04 | wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb |
| Ubuntu 16.04 / Mint 18 | wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb |
Debian 12
export DEBIAN_VERSION=12
apt-get update && apt-get install gpg wget -y
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /usr/share/keyrings/microsoft-prod.gpg
wget -q https://packages.microsoft.com/config/debian/$DEBIAN_VERSION/prod.list
mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
chown root:root /usr/share/keyrings/microsoft-prod.gpg
chown root:root /etc/apt/sources.list.d/microsoft-prod.list
apt-get update && apt-get install azure-functions-core-tools-4 -y
apt-get update && apt-get install libicu-dev -y
2. Install
| Version | Installation Commands |
|---|---|
| v4 | sudo apt-get update sudo apt-get install azure-functions-core-tools-4 |
| v3 | sudo apt-get update sudo apt-get install azure-functions-core-tools-3 |
| v2 | sudo apt-get update sudo apt-get install azure-functions-core-tools-2 |
Other Distributions
npm can be used on all platforms. On unix platforms, you may need to specify --unsafe-perm if you are running npm with sudo. That's due to npm behavior of post install script.
Alternatively, you can install the CLI manually by downloading the latest release from the GitHub repo:
-
Download the latest release for your platform from here.
-
Unzip the CLI package
- Using your preferred tool, unzip the downloaded release. To unzip into an
azure-functions-clidirectory using theunziptool, run this command from the directory containing the downloaded release zip:
unzip -d azure-functions-cli Azure.Functions.Cli.linux-x64.*.zip - Using your preferred tool, unzip the downloaded release. To unzip into an
-
Make the
funccommand executable- Zip files do not maintain the executable bit on binaries. So, you'll need to make the
funcbinary, as well asgozip(used by func during packaging) executables. Assuming you used the instructions above to unzip:
cd azure-functions-cli chmod +x func chmod +x gozip ./func --version # Test the executable - Zip files do not maintain the executable bit on binaries. So, you'll need to make the
-
Optionally add
functo your$PATH- To execute the
funccommand without specifying the full path to the binary, add its directory to your$PATHenvironment variable. Assuming you're still following along from above:
export PATH=`pwd`:$PATH func - To execute the
Default Directories
CurrentDirectory: is the default directory the functions runtime looks for functions in.%TMP%\LogFiles\Application\Functions: is the default directory for logs. It mirrors the logs directory on Azure as well.
Telemetry
The Azure Functions Core tools collect usage data in order to help us improve your experience. The data is anonymous and doesn't include any user specific or personal information. The data is collected by Microsoft.
You can opt-out of telemetry by setting the FUNCTIONS_CORE_TOOLS_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
License
This project is under the benevolent umbrella of the .NET Foundation and is licensed under the MIT License
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Contact Us
For questions on Azure Functions or the tools, you can ask questions here:
File bugs at Azure Functions Core Tools repo on GitHub.
Top Related Projects
⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.
High-Performance Serverless event and data processing platform
Kubernetes Native Serverless Framework
Apache OpenWhisk is an open source serverless cloud platform
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot