Repository navigation
A local Azure emulator with a real identity plane and real RBAC. Docs: https://armite.cloud · Install: https://armite.cloud/install
What it does
- Entra ID: client-credentials token endpoint, OpenID discovery, JWKS; IMDS for managed identity.
- ARM: resource groups (including
PATCHfor tags), role definitions for all 934 built-in roles, role assignments at any scope. - RBAC: Actions/NotActions/DataActions/NotDataActions with Azure's glob semantics, deny by default, enforced on the management plane and the data plane. A 403 names the action and the scope.
- Key Vault: vaults; secrets with versions, soft delete, recover and purge.
- Storage: accounts and a blob data plane served by Azurite behind the RBAC layer; user delegation SAS issued by Armite and checked against RBAC at use.
- Persistence: encrypted journal and snapshot in your data directory; survives
kill -9. - Operations:
x-ms-request-idon every response and one log line per request (text or JSON),armite hosts,armite version. - Verified end to end with
az, the Azure SDKs for JavaScript and Python, Terraform'sazurermprovider andcurl.
Install
docker run -d --name armite -p 127.0.0.1:8443:8443 -p 127.0.0.1:8081:8081 -v armite:/data ghcr.io/ioflux-org/armite:0.1.2
go install github.com/ioflux-org/armite/cmd/armite@v0.1.2Archives below for Linux and macOS (amd64, arm64) and Windows (amd64); checksums in armite_0.1.2_checksums.txt. The image is multi-arch (linux/amd64, linux/arm64) with Azurite inside.
Demo clips
hero, storage, ops and docker, as MP4 and GIF, attached below. What each one shows: https://github.com/ioflux-org/armite/tree/main/demo
Known limits
One tenant and one subscription; principals are declared in the config file (no Graph); services are Key Vault secrets and Blob Storage. Every known difference from Azure: https://armite.cloud/divergences
Full Changelog: v0.1.1...v0.1.2