Taking an AI agent from a working prototype to a reliable, scalable production service involves real engineering: deployment, tools, memory, long-running work, human oversight, and observability. This breakout walks that journey using two sample agents you can run yourself on Microsoft Foundry:
field-ops-agent— a voice-enabled field technician assistant built on the Microsoft Agent Framework, showing tools, an MCP Toolbox connection, an optional Microsoft Fabric data agent, and procedural memory.fibey-coordinator— a long-running network operations coordinator that monitors telemetry, persists context across sessions, scales to zero while waiting, gates actions behind human-in-the-loop approvals, and can work in Microsoft Teams.
Together they form a multi-agent system: the coordinator delegates technician
questions to — and hands work orders off to — the field-ops agent over its
Responses endpoint (the agent-as-tool pattern, opt-in via
FIELD_OPS_AGENT_ENDPOINT).
Both agents deploy with a single azd command, emit traces to Application
Insights, and ship with sample tool data so they run end-to-end out of the box.
You can deploy both agents to your own Microsoft Foundry project with the Azure Developer CLI.
Prerequisites
- An Azure subscription with access to Microsoft Foundry
- Azure Developer CLI (
azd) v1.24+ - The Foundry agents extension:
azd extension install azure.ai.agents - Python 3.12+
Required permissions
azd provision creates the Foundry project, model deployment, ACR, storage, and
App Insights — and assigns Azure RBAC role assignments to the agent and project
identities. To run the full deploy you need:
| Role | Scope | Why |
|---|---|---|
| Contributor | Subscription (or target resource group) | Provision and manage the Azure resources. |
| User Access Administrator (or Owner instead of both) | Subscription (or resource group) | The Bicep templates create Microsoft.Authorization/roleAssignments; Contributor alone cannot write role assignments and azd provision will fail with AuthorizationFailed. |
| Foundry Owner | Subscription / Foundry account | Required because azd provision creates a new Foundry project. |
| Foundry Project Manager | Foundry project | Create and deploy the hosted agents, and assign Foundry User to the platform-created agent identity at deploy time. |
The
azdtooling assigns the remaining runtime roles automatically — Container Registry Repository Reader for the project managed identity and Foundry User for each agent's Entra identity. Optional integrations (Search, Storage, Teams) need extra role grants on the agent's identity; those are documented insrc/field-ops-agent/SETUP-INTEGRATIONS.mdandsrc/fibey-coordinator/TEAMS-SETUP.md. The Foundry roles above were previously named Azure AI Owner / Azure AI Project Manager / Azure AI User — you may still see the old names during the rename rollout. See Hosted agent permissions reference.
Clone and deploy
git clone https://github.com/microsoft/Build26-BRK241-from-prototype-to-production-build-and-run-agents-at-scale.git
cd Build26-BRK241-from-prototype-to-production-build-and-run-agents-at-scale
# Install the Foundry agents azd extension (first time only)
azd extension install azure.ai.agents
# Log in and select the subscription that will host the project
azd auth login
az login
# Provision the Foundry project, model deployment, ACR, and App Insights
azd provisionAfter provisioning, set your tenant ID so azd deploy can complete the agent's RBAC setup:
# Bash / macOS / Linux
export AZURE_TENANT_ID=$(az account show --query tenantId -o tsv)
azd deploy
# PowerShell (Windows)
$env:AZURE_TENANT_ID = (az account show --query tenantId -o tsv)
azd deployDeploy a single agent with azd deploy field-ops-agent or
azd deploy fibey-coordinator. Tear everything down with azd down.
See src/field-ops-agent/ and
src/fibey-coordinator/ for per-agent details,
example prompts, and the optional integrations (Toolbox, Fabric, Teams,
Durable Task Scheduler).
By default each agent runs standalone. To turn on the coordinator → field-ops
handoff (so fibey-coordinator delegates technician questions to — and hands
work orders off to — the field-ops-agent), point the coordinator at the
deployed field-ops agent and redeploy it:
# 1. Both agents must be deployed first (azd deploy above does both)
azd deploy field-ops-agent
azd show # copy the field-ops-agent endpoint / playground URL
# 2. Point the coordinator at the field-ops agent's Responses endpoint
azd env set FIELD_OPS_AGENT_ENDPOINT "<field-ops-agent responses base URL>"
# 3. Grant the coordinator's managed identity permission to invoke the
# field-ops hosted agent (Foundry User on the project / agent), then redeploy
azd deploy fibey-coordinatorWhen FIELD_OPS_AGENT_ENDPOINT is unset, the coordinator still runs — its
ask_field_ops / dispatch_work_order tools just return a graceful
"not configured" note. Details:
src/fibey-coordinator/README.md.
Wiring the
supplier_docsknowledge tool (Foundry IQ):azd provision/azd deploycreate the agents, but the supplier-docs knowledge tool needs a few extra steps (embedding model, corpus upload, knowledge source/base, toolbox, a role grant, and wiringTOOLBOX_ENDPOINT+ redeploy). Follow the End-to-end deployment runbook insrc/field-ops-agent/SETUP-INTEGRATIONS.md§2 — otherwise the agent answers from its offline mock.
Tip: After
azd deploysucceeds the output prints an Agent playground URL for each agent. Open it in the browser to chat with the agent immediately — no extra setup needed.
Once deployed, open each agent's playground URL (printed by azd deploy) or
retrieve it at any time with:
azd showTry these prompts in the playground:
Hey, can you pull up the fiber termination spec for the Quincy North site
and tell me which panel I should be looking at for the B-side connection?
What repair procedure should I follow for a QSFP-DD transceiver replacement?
Any P1 work orders assigned to me?
The agent responds with the fast-ack voice pattern: it acknowledges in ~1 s, then streams the full answer when the background worker finishes.
Check network telemetry for Quincy North - any active alerts?
Dispatch a work order for the CRC error on Rack B-14
What active incidents do we have across all sites?
Escalate the Quincy North optical power issue - SLA at risk
Fibey persists investigation context between sessions and can wait (scale-to-zero) for human approvals via the Durable Task Scheduler.
By the end of this session, you will be able to:
- Build an agent with the Microsoft Agent Framework and deploy it to Microsoft Foundry as a hosted agent using the Azure Developer CLI.
- Extend an agent with tools, MCP/Toolbox connections, data agents, and procedural memory — and run long-running agents with persistent sessions, scale-to-zero, and human-in-the-loop approvals.
- Operate agents in production with built-in tracing and evaluation.
Try these prompts with GitHub Copilot to explore the topics from this session.
Open Copilot Chat in Visual Studio Code (Ctrl+Alt+I on Windows/Linux,
Cmd+Shift+I on Mac), paste a prompt, and see what you learn. Connect the
Microsoft Learn MCP Server for the latest official
documentation.
- Understand the basics:
Explain what a hosted agent in Microsoft Foundry Agent Service is and how it differs from running an agent on my own infrastructure.
- Go deeper:
Using the Microsoft Learn MCP Server, find the latest documentation on the Microsoft Agent Framework and show me how to define a tool and run an agent loop in Python.
- Build something:
Help me create a hosted agent with the Microsoft Agent Framework that exposes one function tool, then deploy it to Microsoft Foundry with the Azure Developer CLI.
- Microsoft Foundry — Hosted Agents
- Microsoft Agent Framework
- Azure Developer CLI (
azd) - Model Context Protocol (MCP) tools
- Microsoft Fabric data agents
- Azure Monitor Application Insights
- Durable Task Scheduler
- Microsoft Teams bots (Bot Framework)
| Resource | Description |
|---|---|
| Build 2026 — Next Steps | Explore lab and session repos to further your learning from Microsoft Build |
| Quickstart: Deploy your first hosted agent | Step-by-step quickstart for deploying a hosted agent to Microsoft Foundry |
| Foundry Hosted Agents with the Agent Framework | How the Microsoft Agent Framework hosts and runs agents on Foundry |
| Get started with the Agent Framework | Tutorials for building your first agent, adding tools, memory, and workflows |
| Watch the session recording | Watch the recorded Microsoft Build session. |
The Microsoft Learn MCP Server gives your AI agent direct access to Microsoft's official documentation — grounded, up-to-date answers about the products and services covered in this session.
Visual Studio Code — One click installation:
GitHub Copilot CLI — Run this to install the Learn MCP Server as a plugin:
/plugin install microsoftdocs/mcp
For more info, other clients, and to post questions, visit the Learn MCP Server repo.
![]() Jeff Hollan 📢 |
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit Contributor License Agreements.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

