Version 0.23.02 - Available here: https://aka.ms/ODIN
A browser-based planning toolkit for Azure Local (formerly Azure Stack HCI). ODIN combines architecture design, workload-based hardware sizing, storage planning, network and switch configuration, reference architectures, and deployment/report outputs. Configuration data is processed locally in the browser.
Disclaimer: This tool is provided as-is without Microsoft support. This is an experimental project to help customers accelerate their skills ramp up for Azure Local, while helping IT architects to validate desired configurations.
- Features
- What's New
- Quick Start
- Prerequisites Checklist
- Usage Guide
- Configuration Options
- Export Formats
- Browser Compatibility
- Troubleshooting
- Report an Issue and Contributing
- Best Practices
- Security Considerations
- Additional Resources
- License
- Version History
- Azure Local Designer: Guided planning for connected, disconnected, multi-rack, and Microsoft 365 Local deployments, with hyperconverged and disaggregated architecture paths
- Workload-Based Hardware Sizer: Size Azure Local infrastructure for VMs, AKS Arc, AVD, Foundry Local, Agentic Retrieval, AI Video Indexer, and GitHub Enterprise Local workloads
- Discovered-Estate Import: Import VMware RVTools workbooks or Azure Migrate collector ZIP files to create grouped or per-machine Sizer workloads entirely in the browser
- Storage Spaces Direct Calculator: Model maximum volume size, storage-pool consumption, resiliency, provisioning, and single-tier or tiered disk configurations
- Network and Switch Planning: Design traffic intents, VLANs, IP ranges, RDMA, switched and switchless storage, external SAN connectivity, and Clos fabrics; generate and validate Cisco NX-OS and Dell OS10 configurations
- Architecture Knowledge Tools: Explore outbound-connectivity guidance, interactive AzLoFlows diagrams, and Microsoft Sovereign Private Clouds reference architectures
- Integrated Planning Workflow: Transfer deployment information between Sizer and Designer, persist work locally, and share supported configurations using JSON exports or generated URLs
- Reports and Deployment Outputs: Generate ARM parameter files, configuration reports, diagrams, Word-compatible documents, PDFs, Markdown, and editable PowerPoint presentations
- Privacy-Preserving Browser Experience: Configuration data remains in the browser, with bounded import validation and an opt-out for anonymous aggregate usage counters
Agentic Retrieval sizing now follows the current Foundry Local requirements. This release separates CPU and embedding-GPU pools, models Combined, Knowledge, and Agentic deployment modes, and includes explicit external or local language-model endpoint capacity.
What's new
- Documented deployment topology — all modes include three D8s_v3-equivalent CPU workers; Combined and Knowledge add two embedding GPU workers, while Agentic-only does not allocate embedding GPUs.
- Explicit LLM endpoint sizing — choose an external OpenAI-compatible endpoint, Foundry Local minimum, or Foundry Local production. Local GPT-OSS-20B choices add the documented dedicated CPU, memory, storage, GPU, and VRAM baseline.
- GPU validation — Agentic Retrieval offers the full AKS Arc DDA list (T4, A2, A16, L4, L40, L40S, and RTX Pro 6000), identifies NC8_A2 and NC8_A16 as recommended sizes, and rejects insufficient local model-host VRAM.
- Compatible payload update —
SIZER_VERSIONis now 3 withdeploymentModeandllmEndpoint; oldercomputeModeexports still import as Combined with an external endpoint. - Reports and schemas aligned — Sizer cards, JSON Schema, Markdown/HTML reports, and PowerPoint output use the Agentic Retrieval name and current topology.
- Dependency audit restored — patched
js-yamlandbrace-expansionversions are enforced. The unavailable nanoid fix remains visible through one narrowly scoped temporary audit exception. - Validation — all 1,504 / 1,504 browser tests pass, including the new deployment-mode, endpoint, GPU, and legacy-import cases.
-
Open ODIN online:
- In a current web browser, go to https://aka.ms/ODIN
-
Unsure about hardware? Start with the Sizer:
- Open the ODIN Sizer from the main page or navigate to
sizer/index.html - Add workloads directly, import a VMware RVTools workbook, or import an Azure Migrate collector ZIP
- Configure deployment type, resiliency, hardware assumptions, and growth headroom
- Review the recommended hardware (CPU, memory, storage, GPUs, power, and rack space)
- Click Configure in Designer to transfer the sizing results into the Designer wizard automatically
- Open the ODIN Sizer from the main page or navigate to
-
Follow the wizard:
- Answer questions about your deployment scenario
- Configure network settings, storage, and identity options
- Review the configuration summary in real-time
-
Export your configuration:
- Generate ARM parameters JSON
- Export full configuration for sharing or backup
- Download configuration reports
ODIN can run from a downloaded copy of this repository when the hosted site is unavailable or the planning workstation is disconnected from the internet. This is an end-user access option; no development environment or npm installation is required.
-
Download and extract the repository files to the offline workstation.
-
Open Windows PowerShell in the extracted repository root.
-
Start the included local web server:
PowerShell.exe -ExecutionPolicy Bypass -File .\tests\serve.ps1
-
Open http://localhost:5500 in a current browser.
-
Press
Ctrl+Cin PowerShell when finished.
The Designer, Sizer, S2D Calculator, switch tools, bundled diagrams, imports, and exports run locally. External Microsoft Learn links and anonymous aggregate usage counters require connectivity and are unavailable while fully offline.
If you want to deploy Azure Local on physical hardware, before starting, ensure you have:
- ✅ Azure Local certified hardware (check Microsoft Hardware Catalog)
- ✅ Minimum 1 node (up to 16 for single-site clusters)
- ✅ RDMA-capable network adapters for storage, for multi-node clusters.
- ✅ Compatible Top of Rack (ToR) switches with latest firmware installed.
- ✅ Outbound internet connectivity or configured proxy
- ✅ Available IP address ranges for infrastructure and management
- ✅ DNS servers configured and reachable
- ✅ VLAN support (if using tagged VLANs)
- ✅ Network Time Protocol (NTP) configured
- ✅ Active Azure subscription with appropriate permissions
- ✅ Azure Arc resource provider registered
- ✅ Sufficient quota for Azure Local resources
- ✅ Resource group created in target region
- ✅ Active Directory domain and appropriate permissions when using domain-based identity
- ✅ Local Identity prerequisites when using the AD-less connected deployment path
The Designer experience provides guided workflow of valid cluster design choices and decisions, rather than one fixed sequence. Start by selecting Connected, Disconnected, Multi-Rack, or Microsoft 365 Local. Connected and Disconnected deployments then select a Hyperconverged or Disaggregated architecture where applicable.
Based on those choices, ODIN presents the relevant steps for cloud and region, scale and physical machines, network adapters and traffic intents, storage connectivity, outbound connectivity, IP planning, identity, security, optional services, and deployment outputs. Disconnected and disaggregated designs use dedicated branches for their additional topology and connectivity decisions.
- Progress is automatically saved to browser localStorage
- Return anytime and see a "Resume Session" prompt
- Choose to continue or start fresh
- Click Export button in the summary panel (right side)
- Saves complete state as timestamped JSON file
- Share with team members or backup for later
- Click Import button in the summary panel (right side)
- Select previously exported JSON file
- Review changes and confirm import
- Click Subnet Calculator button next to the Infrastructure Network CIDR input
- Enter IP/CIDR notation (e.g., 192.168.1.0/24)
- See network details, usable host range, and subnet info
- Click Load Example Configuration Template in the summary panel (right side)
- Browse pre-built deployment configurations for common scenarios
- Load a template to pre-populate the wizard with recommended settings
- Automatically shown on first visit (can be reset by clearing browser localStorage)
- Step-by-step overlay highlighting key wizard features
- Helps new users understand the workflow quickly
| Deployment Type | Description | Architecture Choices |
|---|---|---|
| Connected | Azure-connected Azure Local deployment | Hyperconverged or Disaggregated |
| Disconnected | Azure Local disconnected operations for air-gapped or limited-connectivity environments | Hyperconverged or Disaggregated, with dedicated management/workload cluster paths |
| Multi-Rack | Rack-aware architecture for larger-scale and failure-domain planning | Guided rack-aware configuration |
| Microsoft 365 Local | Purpose-built planning path for Microsoft 365 Local workloads | Guided Microsoft 365 Local configuration |
Hyperconverged combines compute and Storage Spaces Direct capacity in the Azure Local machines. Disaggregated uses external Fibre Channel or iSCSI SAN storage with a Clos leaf-spine fabric and supports up to 64 compute machines across multiple racks.
| Intent | Description | Adapters |
|---|---|---|
| All Traffic | Single intent for management, compute, and storage | 2 adapters |
| Compute + Management | Shared network for VMs and management, dedicated storage | 4+ adapters |
| Compute + Storage | Combined compute and storage traffic, dedicated management | 4+ adapters |
| Custom | User-defined adapter-to-intent mapping | Flexible (2–8 adapters) |
Disaggregated deployments use a separate intent model with external SAN storage (Fibre Channel or iSCSI) and a Clos leaf-spine fabric — see the Disaggregated Architecture Wizard for details.
| Type | Description | Requirements |
|---|---|---|
| Switched | Traditional ToR switch-based storage networking | ToR switches, any supported scale |
| Switchless | Direct node-to-node storage connections | 2–4 nodes, no storage switches |
| Tool | Purpose |
|---|---|
| ODIN Sizer | Workload-driven sizing for VMs, AKS Arc, AVD, Foundry Local, Agentic Retrieval, AI Video Indexer, and GitHub Enterprise Local. Supports RVTools and Azure Migrate imports, growth modelling, hardware recommendations, and 3D rack visualization. |
| S2D Calculator | Plans maximum supported volume size and storage-pool consumption for Azure Local and Windows Server single-tier or tiered configurations. |
| Switch Config Generator | Generates example ToR / BMC / border switch configurations for Cisco NX-OS and Dell OS10, with rack-aware support and infrastructure token replacement. |
| QoS Validator | Validates a pasted show running-config (Cisco) or show running-configuration (Dell OS10) against Azure Local QoS requirements (PFC, ETS, ECN, MTU 9216, system QoS policy, interface-level PFC/trunking). |
| Knowledge Tab | Provides outbound-connectivity guidance, the AzLoFlows interactive flow-diagram builder, and Microsoft Sovereign Private Clouds reference architectures with editable PowerPoint export. |
- Azure Resource Manager template parameters
- Ready for deployment with Azure CLI or Portal
- Includes placeholders for values not collected by wizard
- Copy to Clipboard: Available on ARM parameters page
- Complete wizard state export
- Version-tagged for compatibility tracking
- Includes timestamp and metadata
- Can be re-imported to restore session
- Machine-readable JSON Schema (draft-07) definitions for both export surfaces, so you can generate and validate ODIN JSON outside the UI (CI/CD, Terraform, scripts) before importing it
- Designer:
docs/json-schema/odin-design.schema.json— published athttps://azure.github.io/odinforazurelocal/docs/json-schema/odin-design.schema.json - Sizer:
docs/json-schema/odin-sizer.schema.json— published athttps://azure.github.io/odinforazurelocal/docs/json-schema/odin-sizer.schema.json - See the JSON Schema reference & examples for both envelopes side by side, required vs optional fields, and how to validate from any language (ajv, python-jsonschema, or VS Code
$schema)
- Comprehensive configuration report covering deployment scenario, network, intents, IP plan, identity, security, and SDN options
- Download as a Word-compatible HTML
.doc, Markdown with embedded diagrams, or an editable.pptxdeck generated directly in the browser - Includes decision rationale, network diagrams (SVG / Mermaid / draw.io), and a 2D rack diagram
- Print-friendly formatting (browser "Save as PDF" supported)
- Save as PDF and Download Word for sized hardware results
- Includes per-workload breakdown, hardware configuration, capacity bars, and power / heat / rack-space estimates
- Use a current version of Microsoft Edge, Google Chrome, Mozilla Firefox, or Safari
- Chromium-based browsers are used for the automated browser test suite
- ES6+ JavaScript support
- CSS Custom Properties
- Flexbox and Grid
- localStorage API
- File API (for import/export)
- Internet Explorer is not supported
- Local persistence depends on the browser allowing
localStorage; private-browsing behavior varies by browser and policy - File downloads, clipboard access, and very large imports may be constrained by browser or device settings
- localStorage may be disabled in browser settings
- Private/Incognito browsing or enterprise policy may restrict or clear localStorage
- Clear browser cache and try again
- Check browser console for errors
- Ensure pop-up blocker isn't preventing downloads
- Verify file is valid JSON (use JSON validator)
- Confirm the file was exported by the correct ODIN tool (Designer and Sizer use different formats)
- Review the displayed validation message for unsupported values, malformed JSON, or import-size limits
- Legacy exports are migrated where supported; exporting a fresh configuration is useful when diagnosing an unsupported format
Enable detailed logging in browser console:
- Open Developer Tools (F12)
- Go to Console tab
- Look for errors or warnings
- Check localStorage:
localStorage.getItem('azureLocalWizardState')
- Report bugs or request new features via GitHub Issues
- Include browser version, OS, screenshot if possible, and steps to reproduce the issue
- Provide exported config (sanitized) if required to recreate the problem
For detailed contribution guidelines, see CONTRIBUTING.md.
- Review Prerequisites - Click "Prerequisites" before starting
- Try Templates - Load a pre-built template for common scenarios
- Save Progress - Export configuration at major milestones
- Validate Early - Use real-time validation to catch errors
- Use Calculator - CIDR calculator helps avoid subnet conflicts
- Document IP Ranges - Keep track of all CIDRs and ranges
- Avoid Overlaps - Use CIDR calculator to verify no conflicts
- Plan for Growth - Size infrastructure pool with headroom
- Test DNS - Verify DNS resolution before deployment
- Review Gateway - Ensure default gateway is outside IP pools
- Export Regularly - Save configuration at each major decision
- Version Control - Keep exports with version tags
- Share with Team - Use export/import to collaborate
- Document Changes - Note modifications in separate doc
- Backup Configs - Store exports in version control system
- Imported files, shared URLs, restored state, and generated documents are treated as untrusted input at their rendering and parsing boundaries
- CIDR, IP, numeric, enum, and identifier fields use context-specific validation
- File imports are structure- and size-validated before application; Azure Migrate ZIP imports also validate archive paths, encryption, duplicates, and extracted content
- Configuration inputs, imported inventories, and generated outputs stay in the browser and may be persisted in localStorage
- Anonymous integer-only page-view and feature-use counters are sent to Firebase; no configuration values, machine names, IP addresses, or user identifiers are included
- Usage counters can be disabled from the navigation toggle and are also disabled when the browser sends Do Not Track or Global Privacy Control
- Clear localStorage on shared computers
- Don't include sensitive credentials in configurations
- Don't share exports containing private IP ranges publicly
- Review imported configs before applying
- Use prerequisites checklist to verify security requirements
- JSON Schema reference & examples — validate ODIN exports outside the UI (CI/CD, Terraform, scripts)
odin-design.schema.json— Designer export schema (draft-07)odin-sizer.schema.json— Sizer export schema (draft-07)
Published under MIT License. This project is provided as-is, without warranty or support, it is intended for planning and automation example purposes. See official Azure documentation for deployment guidance and support.
Built for the Azure Local community to simplify network architecture planning and deployment configuration.
Version: 0.23.02
Last Updated: August 2026
Compatibility: Azure Local 2506+
For questions, feedback, or support, please visit the GitHub repository or consult the official Azure Local documentation.
Historical release summaries have moved to the ODIN Version History. For the complete change record, see CHANGELOG.md.
