Web Console¶
azemu ships an embedded web console that gives you a local "Azure Portal"
for your emulator. It runs on port 4570 (configurable via
AZEMU_CONSOLE_PORT) and is served directly from the azemu binary with
no extra dependencies.
Open http://localhost:4570 after starting azemu.
Views¶
The console has three composable views, each modelled after a real Azure Portal interaction pattern.
Cockpit (Home)¶
The default view at /. A dashboard showing:
- Service cards for each azemu port (ARM :4566, Metadata :4567, Health :4568, ADO OIDC :4569) with live health status
- Meta strip showing version, uptime, resource count, store type, and TLS algorithm
- Resource inventory tiles grouped by ARM resource type, with Export, Import, and Reset controls
- Live request log streaming ARM requests in real time via SSE
Portal Classic¶
A blade-style view at /resource-groups/:name, modelled after the Azure
Portal resource group blade:
- Breadcrumb navigation (Home / Resource groups / name)
- Command bar (Create, Refresh, Export template, Delete)
- Essentials panel (subscription, location, provisioning state)
- Resources table with type badges, location, status, and creation time
IDE Explorer¶
A three-pane layout at /explorer, modelled after VS Code:
- Side nav with service categories and emulator tools
- Resource tree grouping resources by resource group, with expand/collapse and selection
- Detail blade with tabbed content (Overview, Secrets, Keys, Access, JSON) and an essentials grid
- Docked log panel at the bottom with tabs for Request log, Events, and State store
Live request streaming¶
The console connects to GET /api/requests/stream (SSE) and displays
ARM requests as they arrive. Each entry shows:
- Timestamp, HTTP method, path, status code, and duration in milliseconds
- Method and status are color-coded (GET green, PUT orange, DELETE red; 2xx green, 4xx amber, 5xx red)
The backend keeps a ring buffer of the last 500 requests. On connect, the SSE endpoint sends a backfill of recent entries, then streams new ones as they happen.
Building the console¶
The console SPA source lives in console/ (React, Vite, TypeScript).
The built assets are embedded into the Go binary via internal/console/.
make console-build # npm ci + build + copy to internal/console/dist
make build # go build with embedded assets
For development with hot reload:
Configuration¶
| Variable | Default | Purpose |
|---|---|---|
AZEMU_CONSOLE_PORT |
4570 |
HTTP port for the web console |