Sign in during Public Preview to get the Team plan free, plus an early-adopter discount when we launch. Sign in
Put locally run in front of the commands you already use, and they deploy to your machine instead of Azure.
Real subscriptions. Real credentials. Real API behaviour.
# Real Azure CLI, running against your local environment
$ locally run az network vnet create \
-g hello -n vnet1 \
--address-prefix 10.0.0.0/16
{
"newVNet": {
"addressSpace": {
"addressPrefixes": ["10.0.0.0/16"]
},
"id": ".../virtualNetworks/vnet1",
"location": "berlin",
"name": "vnet1",
"provisioningState": "Succeeded",
"type": "Microsoft.Network/virtualNetworks"
}
}
# Leave the prefix off and use an Azure region to hit real Azure
Deploy it, then use it. The Azure services your code talks to, running on your machine.
See every emulator → · Which ones come with each plan is on the pricing page.
# Create a Service Bus namespace, queue and topic
$ locally run az servicebus namespace create \
-n locally-ns -g servicebus-rg \
--location berlin
$ locally servicebus queue create --namespace locally-ns --name orders
Queue "orders" created in namespace "locally-ns".
$ locally servicebus topic create --namespace locally-ns --name events
Topic "events" created in namespace "locally-ns".
# Real namespaces, queues and topics - on your machine
Every request, trace and resource, one click away in the Locally Dashboard.
The Dashboard's logging view - every HTTP request flowing through your local environment, in real time.
Locally runs entirely on your machine - control plane, identity, data planes, dashboard. Provision subscriptions, deploy resources and run your tests on a plane, on a train, or anywhere you write your best code.
Switch between subscriptions in the Locally Dashboard - each one a complete Azure environment, on your machine.
Need a real database? Locally launches a Postgres, MySQL or Redis container via Docker or Podman if you have them installed - still on your machine, never in the cloud.
Break Azure on purpose, then see how your app copes.
# Throttle half of Storage requests in london
$ locally chaos storage 429 \
--percentage 50 --location london
storage 429: any plugin in london now fires on 50% of requests.
$ locally run npm test
PASS tests/upload.test.js
FAIL tests/thumbnails.test.js
✕ retries when Storage returns 429
Tests: 1 failed, 7 passed, 8 total
# Found on your machine, not by your users
Ask your assistant what's running, or have it do the work.
npx skills add locallybuild/skills. Learn more →# In Claude Code, with Locally's MCP server
> What resource groups do I have?
⏺ locally - list_resource_groups_in_subscription (MCP)
⎿ 2 resource groups
⏺ You have two: orders-rg and shared.
> Deploy the install-consul runbook.
⏺ locally - locally_runbooks_deploy (MCP)
⎿ Deployed "install-consul"
⏺ Done. install-consul is now in your subscription.
One prefix, every tool. Add locally run to any command to hit Locally. Leave it off and use an Azure region to hit Azure. No new SDKs, no new patterns, no per-tool setup.
* The Azure SDKs currently need a few lines of code to point at Locally - we're looking to make this automatic in the future.
Share infrastructure, policies and know-how across your team.
# Runbooks synced from your team
$ locally runbooks list
TEAM ORDER NAME TYPE DETAILS
Platform 10 core-network Template (Sub) auto-deploy
Platform 20 shared-services Template (RG) auto-deploy, rg: shared
Platform 30 postgres-seed Data Script Microsoft.DBforPo.../seed
# Deploy an on-demand one yourself
$ locally runbooks deploy install-consul
Deploying runbook "install-consul" from team "Platform"...
Preparing Template Deployment..
------------------------------------------
Scope: Subscription
Location: berlin
Deployment Name: locally-armtemplate-3f29c1
------------------------------------------
Template Deployment deployed successfully!
Runs entirely on your machine, with the tools you already use.
Install Locally →Or read more: Pricing · Documentation