https://github.com/moabukar/miniblue
Local Azure development. One binary. No account needed. 25+ emulated services for testing, CI and local dev.
https://github.com/moabukar/miniblue
azure azure-emulator ci-cd cloud developer-tools devops golang localstack terraform testing
Last synced: 12 days ago
JSON representation
Local Azure development. One binary. No account needed. 25+ emulated services for testing, CI and local dev.
- Host: GitHub
- URL: https://github.com/moabukar/miniblue
- Owner: moabukar
- License: mit
- Created: 2026-04-03T23:14:09.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-04-16T01:51:52.000Z (28 days ago)
- Last Synced: 2026-04-16T02:35:14.862Z (28 days ago)
- Topics: azure, azure-emulator, ci-cd, cloud, developer-tools, devops, golang, localstack, terraform, testing
- Language: Go
- Homepage: https://miniblue.io/
- Size: 32.5 MB
- Stars: 315
- Watchers: 2
- Forks: 38
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
- Security: SECURITY.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
miniblue
The free, open-source Azure emulator. Develop and test your Azure apps locally.
Local Azure development. One binary. No account needed.
> **Disclaimer:** miniblue is an independent open-source project. It is not affiliated with, endorsed by, or associated with Microsoft or Azure.
---
## Quick Start
```bash
# Homebrew
brew tap moabukar/tap && brew install miniblue
# Or Docker
docker run -p 4566:4566 -p 4567:4567 moabukar/miniblue:latest
```
Then interact with it:
```bash
azlocal health
azlocal group create --name myRG --location eastus
azlocal keyvault secret set --vault myvault --name db-pass --value secret123
azlocal storage blob upload --account myacct --container data --name file.txt --data "Hello!"
```
No Azure account or credentials needed.
## What it does
26 Azure services emulated behind a single port. Works with Terraform, Pulumi, Azure SDKs, and curl.
| Service | Service | Service |
|---------|---------|---------|
| Resource Groups | Blob Storage | Table Storage |
| Queue Storage | Key Vault | Cosmos DB |
| Service Bus | Azure Functions | Virtual Networks |
| DNS Zones | Container Registry | Event Grid |
| App Configuration | Managed Identity | DB for PostgreSQL |
| DB for MySQL | Azure SQL Database | Azure Cache for Redis |
| Container Instances | Public IP Addresses | Network Security Groups |
| Load Balancer | Application Gateway | Storage Accounts |
## How it compares
| | LocalStack (AWS) | MiniStack (AWS) | Azurite (Azure) | miniblue |
|---|---|---|---|---|
| Services | 80+ | 36 | 3 (storage only) | **26** |
| Docker image | ~1GB | ~200MB | ~300MB | **~8MB** |
| Startup | ~10s | ~5s | ~3s | **<1s** |
| Real backends | DynamoDB Local | RDS, S3, SQS | No | **Postgres, Redis, Docker** |
| Terraform | Yes | Yes | No | **Yes** |
| License | BSL | MIT | MIT | MIT |
## Terraform
https://github.com/user-attachments/assets/eea72535-6eb7-419d-9f9c-6f42b80d5efc
```bash
bash scripts/trust-cert.sh # one-time cert trust
```
```hcl
provider "azurerm" {
features {}
metadata_host = "localhost:4567"
skip_provider_registration = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000001"
client_id = "miniblue"
client_secret = "miniblue"
}
```
See [examples/terraform/](examples/terraform/) for full examples including three-tier, serverless, and microservices scenarios.
## Real Backends (optional)
| Feature | Env var |
|---------|---------|
| Real PostgreSQL databases | `POSTGRES_URL=postgres://user:pass@host:5432/db` |
| Real Redis connectivity | `REDIS_URL=redis://host:6379` |
| Real Docker containers (ACI) | Docker daemon running |
| File persistence | `PERSISTENCE=1` |
| Postgres persistence | `DATABASE_URL=postgres://...` |
## Configuration
| Variable | Default | Description |
|----------|---------|-------------|
| `PORT` | `4566` | HTTP port |
| `TLS_PORT` | `4567` | HTTPS port |
| `LOG_LEVEL` | `info` | debug, info, warn, error |
| `SERVICES` | all | Comma-separated list to enable selectively |
| `PERSISTENCE` | off | Set to `1` for file-based persistence |
Full configuration reference in the [docs](https://miniblue.io/getting-started/configuration/).
## Documentation
Full docs at **[miniblue.io](https://miniblue.io)** covering:
- [Installation](https://miniblue.io/getting-started/installation/) (Homebrew, Docker, binary, Helm)
- [Quick Start](https://miniblue.io/getting-started/quickstart/)
- [Terraform Guide](https://miniblue.io/guides/terraform/)
- [Pulumi Guide](https://miniblue.io/guides/pulumi/)
- [SDK Guide](https://miniblue.io/guides/sdk/) (Python, Go, JavaScript)
- [CLI Reference](https://miniblue.io/guides/azure-cli/)
- [API Parity Matrix](https://miniblue.io/services/parity/)
- [Architecture](https://miniblue.io/architecture/overview/)
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md). Each service is its own Go package under `internal/services/`.
## Sponsors
miniblue is sponsored by [CoderCo](https://coderco.io).
Want to sponsor this project? Reach out at devopsbymo@gmail.com.
## License
MIT - see [LICENSE](LICENSE).
