Sign in during Public Preview to get the Team plan free, plus an early-adopter discount when we launch. Sign in
Locally is a single binary plus the plugins you choose to install. It runs entirely on your machine and, once set up, works offline. This page lists what that machine needs.
| Platform | Architectures | Notes |
|---|---|---|
| macOS | Apple silicon (arm64), Intel (amd64) | Installed with Homebrew. The DNS resolver entry is written to /etc/resolver. |
| Linux | amd64, arm64 | Installed with Homebrew on Linux or a direct download. DNS is configured through systemd-resolved, with a dnsmasq fallback where resolved isn't in use. |
| Windows | amd64 | Installed with Scoop. *.locally resolution uses a Name Resolution Policy Table (NRPT) rule; the wizard labels Windows support as preview. |
Getting Started has the install commands for each platform. Direct downloads for every platform are in your Locally Account.
Day-to-day use needs no elevated rights. Two one-time setup steps do, because they change the machine rather than your user account, and locally setup shows you the exact command to run yourself rather than running it silently:
sudo on macOS and Linux, Administrator on Windows).*.locally names (locally configure dns).5660-5680, plus 5671 (AMQP) and 5883 (MQTT), must be free. On Windows, Locally also binds 127.0.0.1:53 for DNS. The full map is on Networking & Proxies.api.locally.build (certificate renewal at least every 32 days, licence checks), account.locally.build (sign-in) and get.locally.build (downloads and locally update). Between renewals Locally runs with no internet connection at all.
Locally needs Docker or Podman only for the features that start containers: Web Apps, Function Apps, Container Instances, Container Apps, pulling from the Container Registry emulator into a runtime, and Virtual Machines. Everything else - the control plane, Storage, Key Vault, Service Bus, Cosmos DB, the directory and the rest - runs in-process with no runtime installed. Both runtimes are auto-detected at launch; locally configure docker or locally configure podman teaches the runtime's daemon to reach Locally's registry, and Networking & Proxies covers the extra step Docker Desktop's VM needs to resolve *.locally.
Locally holds its state in memory for the lifetime of a launch, so its footprint grows with what you create - blobs and file shares are the exception, and are spilled to a temporary directory that is removed at shutdown. Each installed plugin is a separate process. A laptop that comfortably runs your IDE and a container runtime runs Locally; the containers you ask it to start are the part that consumes real resources, and that is the same cost as running them yourself.
None is required. The Azure CLI, Terraform, OpenTofu, Pulumi, Bicep, PowerShell and the Azure SDKs are what Locally is for, and Automatic Configuration points whichever you have at Locally when you prefix a command with locally run. Some locally subcommands shell out to the Azure CLI (for example locally refresh-reference-data) and say so in their help.
locally validate checks the certificate, its domains and expiry, the resolver, the container runtime and your sign-in, and prints the fix for anything it finds. locally setup is the guided version of the same checks and is safe to re-run.
$
locally validate
Sign in during Public Preview to get the Team plan free, plus an early-adopter discount when we launch. Sign in
Your Azure infrastructure, running on your machine. Deploy in seconds, break things freely, and ship to Azure when you're ready.