Skip to content

Setup Guide

Canonical pre-event readiness page for APEX MicroHack participants.


  • Participants: Complete this page before event day so your team can start on time.
  • Team leads: Use it to confirm your team’s subscription, quota, and cleanup ownership.
  • Self-guided learners: Follow the same steps if you are exploring the workshop outside a live event.

If any item below fails, your team is not ready to participate:

  • Copilot Chat or the Accelerator custom agents are unavailable in VS Code.
  • The current models declared by the Accelerator agents are blocked by account or organization policy.
  • The MCP servers declared in the Accelerator do not load or cannot authenticate.
  • No Azure subscription with the required access is assigned.
  • More than one team is trying to share the same subscription.
  • Not enough quota in swedencentral.
  • A Dev Container that does not open successfully.

Resolve blockers before event day. Do not treat them as day-of issues.


Before the event:

  1. Sign in to GitHub in VS Code with the account you will use during the workshop.
  2. Confirm Copilot Chat opens and responds.
  3. Create or open a repository from the current APEX Accelerator and confirm its custom agents appear.
  4. Check that your account or organization permits the models declared in .github/agents/*.agent.md.

Do not copy a hard-coded model list from this page. The Accelerator agent frontmatter is the current source for model selection, and organization policy determines whether those models are available to you.

The reviewed Accelerator revision configures:

MCP serverPurpose
GitHub MCPRepository operations, issues, pull requests, code search, and file content
Azure Resource Manager MCPAzure Cost Management and Pricing tools
Azure MCPAzure resource, subscription, deployment, and policy context

Open .vscode/mcp.json in your template-derived repository for the current configuration. The astro-docs MCP server in this documentation repository is only for maintaining the site and is not part of the participant toolchain.

Current APEX reference: MCP server integration.

Subscription typeCompatible
Azure in CSPYes
Enterprise Agreement (EA)Yes
Pay As You GoYes
Visual Studio subscriptionYes
Azure Free Account (with credit card)Yes
Azure PassNo
  • One Azure subscription per team is the only supported model. Shared subscriptions are not supported.
  • Owner is the preferred role because facilitators may need to deploy Azure Policy assignments for governance challenges.
  • If your organization restricts Owner, confirm with your facilitator whether Contributor plus Resource Policy Contributor is accepted for your event.
  • Your subscription must have enough quota in swedencentral. See Quota and Estimated Costs.

Verify with:

Terminal window
az login
az account show --output table
Docker-compatible container runtime

GitHub Copilot custom agents run inside a Dev Container, so you need a local container runtime.

Verify with:

Terminal window
docker --version
Visual Studio Code on the host

Install VS Code version 1.100 or newer, then install the host extensions below before opening the container:

ExtensionIDWhy it matters
Dev Containersms-vscode-remote.remote-containersRequired to open any Dev Container
GitHub Copilot Chatgithub.copilot-chatHandles host-side sign-in and licensing

Install both at once:

Terminal window
code --install-extension ms-vscode-remote.remote-containers
code --install-extension github.copilot-chat

Extensions such as Bicep, Azure CLI Tools, PowerShell, and Azure Resource Groups are installed automatically from the Dev Container definition.

Azure CLI, PowerShell 7, and Git

These tools are preinstalled inside the Dev Container. Install them locally only if you plan to work outside the container.

Recommended checks:

Terminal window
az version
pwsh --version
git --version

Ensure your network allows outbound HTTPS to the following services:

ServiceDomains
GitHubgithub.com, api.github.com
GitHub Copilot and GitHub MCPcopilot.github.com, api.githubcopilot.com, *.githubusercontent.com
Azure*.azure.com, *.microsoft.com, login.microsoftonline.com
Microsoft Learn documentationlearn.microsoft.com
Azure Resource Manager pricing toolsAzure management and pricing endpoints permitted by your organization
Terraform registryregistry.terraform.io
Dockerdocker.io, registry-1.docker.io

#CheckHow to verifyWhy it blocks
1Copilot Chat accessCopilot Chat opens in VS Code with the participant accountThe workshop depends on Copilot Chat and custom agents
2Accelerator agents and selected modelsThe agents from .github/agents/ appear and their declared models are permitted by account or organization policyA blocked agent or model stops the corresponding workflow step
3Configured MCP serversThe GitHub and Azure servers in .vscode/mcp.json load and can authenticateWorkflow steps need repository and Azure context
4Azure subscription with required accessaz login && az account show worksYou cannot deploy or validate infrastructure without it
5One subscription per teamConfirm with your facilitator or team leadShared subscriptions are not supported
6Quota in swedencentralaz vm list-usage -l swedencentral -o tableInsufficient quota blocks deployment
7Dev Container opens successfullyF1 -> Dev Containers: Reopen in ContainerAll challenge work happens inside the container

1. Create your working repository
  1. Go to the APEX Accelerator template
  2. Click Use this template -> Create a new repository
  3. Choose an owner, give the repository a name, select Private, and click Create repository
  4. Clone your new repository and open it in VS Code:
Terminal window
git clone https://github.com/<your-org-or-user>/<your-new-repo>.git
cd <your-new-repo>
code .

When VS Code opens, accept the “Reopen in Container” prompt.

2. Pull and build the Dev Container
  1. Press F1 → run Dev Containers: Reopen in Container
  2. Wait for the container to build (watch progress in the terminal)
  3. Once complete, verify the core tools:
Terminal window
az version
bicep --version
pwsh --version
3. Initialize your repository

After the Dev Container starts, run the initialization commands from the repository root:

Terminal window
npm install
npm run init
npm run sync:workflows
CommandPurpose
npm installInstalls Node.js dependencies for validation scripts and linting.
npm run initReplaces accelerator-template references with your repository URL. Run npm run init -- --dry-run first if you want to preview changes.
npm run sync:workflowsFetches the latest GitHub Actions workflows from the upstream APEX project into .github/workflows/.

Review and commit the initialization changes:

Terminal window
git --no-pager diff
git add -A && git commit -m "chore: initialize from template"
git push
4. Set up Azure automation

Review the Azure Setup documentation before running this command. The setup workflow can create an Entra ID application, federated credentials, role assignments, GitHub secrets, and repository variables. Confirm the target tenant, subscription, management group, repository, and required permissions first.

Everyone on the team participates in setup, but mutations must be serialized. From the exact repository created from the APEX Accelerator template and its working directory, name one participant as the current setup owner. Teammates observe the run, verify the target tenant, subscription, management group, repository, and permissions, and record the output before another participant takes ownership.

npm run setup can overwrite GitHub secrets and OIDC-related values, including AZURE_CLIENT_ID, AZURE_TENANT_ID, and AZURE_SUBSCRIPTION_ID. Do not run it concurrently from multiple clones or accounts. If the target or permissions are unclear, stop and escalate to the facilitator.

When your team and facilitator have authorized those changes, run:

Terminal window
az login
npm run setup

The workflow reports the cloud and repository configuration it creates. Review its output and resulting repository changes. Idempotent behavior does not make the command a harmless prerequisite check. Preserve the command output and resulting repository changes as evidence.

Use the same Azure Setup page for headless mode, manual setup steps, and troubleshooting.

5. Allow GitHub Actions to create pull requests

The maintenance workflows open pull requests automatically when they detect drift. This requires one permission change in your repository settings before you trigger them.

  1. Open your repository on GitHub.
  2. Go to Settings → Actions → General.
  3. Scroll to Workflow permissions.
  4. Check Allow GitHub Actions to create and approve pull requests.
  5. Click Save.
6. Run the maintenance workflows

After Azure setup completes, trigger the two scheduled maintenance workflows once so your repository has a fresh baseline before the event. Both run weekly on Mondays after this initial seed.

Terminal window
gh workflow run "Weekly Maintenance"
gh workflow run "Governance Policy Baseline"
WorkflowPurposeSchedule
Weekly MaintenanceChecks the pinned Azure MCP release, refreshes the AVM module index, and tracks Azure service deprecations.Mondays 06:00 UTC
Governance Policy BaselineCollects effective Azure Policy assignments (including management-group inheritance) from your subscription so the IaC planner consumes real governance constraints. Requires step 4 to be complete.Mondays 05:00 UTC

Verify both runs succeeded:

Terminal window
gh run list --workflow "Weekly Maintenance" --limit 1
gh run list --workflow "Governance Policy Baseline" --limit 1

Each run may open a pull request when it detects drift (new AVM module versions, policy changes, deprecated services). Review and merge those PRs as they appear — they are never auto-merged.

7. Sign in to Azure for workshop deployments
Terminal window
az login
az account set --subscription "<your-subscription-id>"
az account show --query "{Name:name, SubscriptionId:id, TenantId:tenantId}" -o table
8. Confirm custom agents

The current Accelerator includes the custom agent files and workspace configuration. In VS Code Copilot Chat:

  1. Confirm agents such as 01-Orchestrator, 02-Requirements, and 10-Challenger appear in the agent picker.
  2. If they are missing, confirm that you opened the template-derived repository in its Dev Container and reload the window.
  3. Do not enable legacy discovery settings as a substitute for loading the current repository configuration.
9. Verify model and MCP access
  1. Open the Accelerator agent files and confirm the models they currently declare are permitted by your account or organization.
  2. Select 01-Orchestrator, but do not ask it to deploy anything. Confirm the agent loads and can propose a human handoff.
  3. Check that the GitHub and Azure MCP servers declared in .vscode/mcp.json start without configuration or authentication errors.
  4. Use any validation command provided by the current Accelerator revision rather than relying on a command copied from older guidance.

If a model or MCP server is unavailable, preserve the error, check account and organization policy, reload VS Code, and compare your repository with the current Accelerator configuration.

10. Verify your toolchain

Verify the core tools manually:

Terminal window
az version
bicep --version
node --version
npm --version
gh --version
11. Start the workflow

Open Copilot Chat (Ctrl+Alt+I) and choose the entry point that matches your working repo:

  • If your repository created from the accelerator template includes 01-Orchestrator, you can start there.
  • If not, go straight to the specific agent named on each challenge page.

To start with the orchestrator, select 01-Orchestrator and prompt it with:

Describe the Azure infrastructure project you want to build.

The current APEX workflow uses human-selected main agents. The Orchestrator identifies the next step and proposes a handoff; it does not autonomously execute the main-agent sequence. You select the next main agent, review its scope and output, resolve required Challenger findings, and approve each transition.

  1. Requirements — 02-Requirements creates requirements and the initial SKU manifest. 10-Challenger reviews the requirements before approval.
  2. Architecture — 03-Architect creates architecture and cost evidence. Architecture and cost feasibility receive separate reviews before approval.
  3. Design (optional) — 04-Design creates diagrams or decision records when they help explain the architecture.
  4. Governance (Step 3.5) — 04g-Governance discovers effective policy constraints and reconciles them before planning.
  5. IaC planning — 05-IaC Planner creates the implementation plan and machine-readable contracts. Challenger findings must be resolved before approval.
  6. Code generation — choose 06b-Bicep CodeGen or 06t-Terraform CodeGen according to the approved requirements, then review deterministic validation evidence.
  7. Deployment — explicitly authorize 07b-Bicep Deploy or 07t-Terraform Deploy for the reviewed scope.
  8. As-built documentation — 08-As-Built records observed results, verification limits, and unresolved issues.

The MicroHack scores this work as eight workshop challenges. Challenges 5, 7, and 8 are workshop stages rather than numbered APEX workflow steps, and Challenge 4 deliberately sends the team back through affected decisions and approvals. Workflow artifacts are written to agent-output/{project}/ as you complete each step.


Use this quick check after you finish setup steps:

  • My repository was created from the current APEX Accelerator, not from the docs repo.
  • The Dev Container opens and the terminal tools load correctly.
  • Repository initialization commands (npm install, npm run init, npm run sync:workflows) have been completed.
  • The team reviewed the side effects of npm run setup and completed only the authorized Azure and GitHub configuration.
  • The Weekly Maintenance and Governance Policy Baseline workflows have been triggered at least once and completed successfully.
  • az account show works inside the container.
  • The agent dropdown appears in Copilot Chat.
  • The models declared by the current Accelerator agents are permitted and load successfully.
  • The GitHub and Azure MCP servers declared in .vscode/mcp.json load and authenticate successfully.
  • My team has exactly one Azure subscription assigned.
  • My team knows who will own cleanup at the end of the event.

Per-team resource profile
Resource typeQuantitySKU or tierRegion
Resource groups1-2N/ASweden Central
App Service plan1P1v4 or S1Sweden Central
App Services1-2N/ASweden Central
Azure SQL server1N/ASweden Central
Azure SQL database1S0 or BasicSweden Central
Storage accounts1-2Standard_LRSSweden Central
Key Vault1StandardSweden Central
Application Insights1N/ASweden Central
Log Analytics workspace1Per-GBSweden Central
Optional Challenge 4 disaster recovery resources
Resource typeQuantitySKU or tierRegion
Resource groups1N/AGermany West Central
App Service plan1P1v4 or S1Germany West Central
App Services1N/AGermany West Central
Azure SQL database replica1S0 or BasicGermany West Central
Storage account1Standard_GRSSweden Central

Optional advanced services such as Front Door, Application Gateway, WAF, or Traffic Manager may increase quota and spend if your team chooses them.

Check quota and request increases

Use the Azure portal search for Quotas, filter by region, and review the resource families your team expects to deploy.

Useful CLI checks:

Terminal window
az vm list-usage --location swedencentral --output table
az storage account list --query "length(@)"

Common issues:

IssueResponse
“Subscription not registered”az provider register --namespace Microsoft.Web
“Quota exceeded”Request an increase in Azure portal → Quotas
“Region not available”Confirm with your facilitator before changing regions
“SKU not available in region”Pick an approved alternative SKU
Estimated event cost
ConfigurationEstimated cost for ~8 hours
Single team, core path€5-10
Single team with Challenge 4 DR work€10-20

Delete all event resources immediately after the workshop to avoid unnecessary spend.

Optional pre-event quota smoke test
Terminal window
az login
az account set --subscription "<your-subscription-id>"
az group create --name rg-quota-test --location swedencentral
az group delete --name rg-quota-test --yes --no-wait

Cleanup steps:

  1. Delete all resource groups created during the microhack:

    Terminal window
    az group delete -n rg-freshconnect-dev-swc --yes --no-wait
    # Repeat for any additional resource groups (e.g., secondary region)
    az group delete -n rg-freshconnect-dev-gwc --yes --no-wait
  2. Ask your facilitator to remove governance policies from the team subscription. If you are running the workshop as a facilitator or self-guided owner, use the Governance Scripts reference in this docs repo.

  3. Verify cleanup is complete:

    Terminal window
    az group list --query "[?starts_with(name, 'rg-freshconnect')]" -o table
    # Expected: empty result

Cleanup must be confirmed before the team leaves the event venue.


  • Ask your facilitator if you are blocked on subscription access, policy permissions, or quota approval.
  • Use the Copilot Guide for agent and prompt usage during the workshop.
  • Use Troubleshooting if your container, Azure auth, or tooling fails.
  • Review Workshop Prep after setup if you still need the scenario and team-role context.