How microsoft/release-manager-assistant works
1. Overall shape
This repo is a containerized, multi-service AI assistant for release management. It is split into a browser UI, a real-time session layer, an orchestration/agent backend, an MCP-based tool server, and Azure infrastructure code that deploys the whole stack.
2. User-facing frontend
src/frontend/react-app is a React/Vite single-page app served as static content. It contains the chat UI, message rendering, and input controls. Its job is limited to presentation and user interaction; it does not contain business logic or direct integrations with Jira/Azure DevOps.
3. Real-time session boundary
src/backend/services/session_manager is the WebSocket-facing service. It sits between the UI and the AI backend, managing client connections, conversation state, and message flow. The presence of client_manager, conversation_handler, and websocket_handler indicates it is the gateway for live chat sessions rather than the reasoning engine itself.
4. Message/state infrastructure
The session layer uses shared utilities for queues, Redis messaging, and thread-safe caches from src/backend/common/utilities. The repo and README point to Redis as the backing service for session management and message queuing, so ephemeral conversation state is externalized rather than embedded in the frontend or orchestrator.
5. Orchestrator as the reasoning core
src/backend/services/orchestrator is the main AI workflow service. It contains the agent coordinator, planner, fallback, final-answer generation, and domain agents. This is where user intent is interpreted and routed to the right capability, rather than directly answering in one model call.
6. Agent specialization
The orchestrator splits work across agents such as planner_agent, jira_agent, azure_devops_agent, visualization_agent, and fallback_agent. This creates a clear internal boundary: planning and routing are separate from system-specific retrieval/update logic and separate again from response synthesis.
7. External system integrations
Jira integration is handled through the orchestrator’s jira_plugin, while Azure DevOps integration is modeled through an MCP-oriented path plus the dedicated src/backend/mcp_server. The MCP server exposes Azure DevOps and Jira service adapters, including synthetic/static data for demo or offline scenarios. This makes tool access a separate service boundary rather than embedding every API client in the orchestrator.
8. Shared contracts and cross-cutting code
src/backend/common is a shared package used by the services. It contains request/response schemas, configuration models, HTTP/caching clients, telemetry/logging, safety checks, and generic helpers. Architecturally, this is the glue layer that keeps the services consistent without coupling them tightly.
9. Safety, telemetry, and storage
The common package includes text/image safety utilities and OpenTelemetry-style logging/tracing support. The README also calls out Azure Content Safety, Azure Storage, and Key Vault: storage is used for durable artifacts such as visualization outputs, Key Vault for secrets, and telemetry for observability across services.
10. Azure deployment topology
The infra directory is the deployment boundary. Core modules provision networking, container apps environment, container registry, monitoring, storage, Key Vault, and AI project resources. App modules then deploy the frontend, session manager, orchestrator, Redis, and MCP server into that foundation.
11. Runtime and packaging
Each backend service has its own Dockerfile and requirements file, so the runtime unit is a container per service. The repo also includes docker-compose.yml, devcontainer support, and deployment scripts for local and cloud workflows, which indicates the architecture is designed to run both locally and in Azure-managed containers.
12. Delivery pipeline
.github/workflows and .azdo/pipelines show that CI/CD is supported in both GitHub and Azure DevOps. The scripts under scripts/ handle image build/push and deployment orchestration, which reinforces that deployment is infrastructure-driven rather than manually assembled.
13. Primary end-to-end flow
A user sends a chat message from the React app → the session manager receives it over WebSocket → the orchestrator plans the request and invokes the right agent → the agent calls Jira, Azure DevOps/MCP, or visualization tooling as needed → the orchestrator composes the final answer → the session manager returns it to the browser. This is the key diagram path to preserve.
14. Important architectural boundaries
The main boundaries are: UI vs real-time session gateway, session gateway vs AI orchestration, orchestration vs external tools, and app runtime vs Azure infrastructure. Those separations are the core of the repository’s design and are the most important lines to draw in an architecture diagram.
Main entry points: orchestrator/app.py Orchestrator · agent_orchestrator.py Agent Router · app App Stack · mcp_server/app.py MCP Server
Components 26
Frontend
Browser UI and static app
- React UI · Chat interface and message rendering
src/frontend/react-app - Chat Parts · Chat, message list, input, and header components
src/frontend/react-app/src/components
Session Layer
WebSocket gateway and conversation state
- Session Service · Entry point for live client sessions
src/backend/services/session_manager/app.py - WebSocket · Manages browser connections and live message transport
src/backend/services/session_manager/handlers/websocket_handler.py - Conversation · Coordinates per-conversation message handling
src/backend/services/session_manager/handlers/conversation_handler.py - Clients · Tracks connected clients and routing state
src/backend/services/session_manager/handlers/client_manager.py
Orchestrator
Planning and agent execution
- Orchestrator · Main reasoning and response service
src/backend/services/orchestrator/app.py - Agent Router · Coordinates planning, tool use, and answer generation
src/backend/services/orchestrator/agents/agent_orchestrator.py - Planner · Breaks user requests into actionable steps
src/backend/services/orchestrator/agents/planner_agent.py - Jira Agent · Handles Jira-oriented actions and retrieval
src/backend/services/orchestrator/agents/jira_agent.py - DevOps Agent · Handles Azure DevOps-oriented actions and retrieval
src/backend/services/orchestrator/agents/azure_devops_agent.py - Fallback · Handles unsupported or degraded requests
src/backend/services/orchestrator/agents/fallback_agent.py - Answer Gen · Composes the final user-facing response
src/backend/services/orchestrator/agents/final_answer_generator_agent.py
Tooling
MCP and external-system adapters
- Jira Plugin · Orchestrator-side Jira tool integration
src/backend/services/orchestrator/plugins/jira_plugin.py - DevOps Plugin · Orchestrator-side Azure DevOps integration path
src/backend/services/orchestrator/plugins/az_devops_plugin.py - MCP Server · Separate service exposing tool adapters and demo data
src/backend/mcp_server/app.py - Tool Factory · Builds MCP service adapters
src/backend/mcp_server/core/factory.py - Tool Adapters · Azure DevOps and Jira service implementations
src/backend/mcp_server/services
Shared Backend
Common contracts, utilities, and cross-cutting code
- Contracts · Request, response, config, and domain models
src/backend/common/contracts - Utilities · Queues, Redis messaging, caches, and config helpers
src/backend/common/utilities - Telemetry · Logging, tracing, and trace context support
src/backend/common/telemetry - Safety · Text and image safety checks
src/backend/common/safety
Infrastructure
Azure deployment and runtime foundation
- Infra Root · Top-level Azure deployment composition
infra/main.bicep - Core Stack · Network, host, security, storage, monitoring, and AI foundation
infra/core - App Stack · Deploys frontend, session manager, orchestrator, Redis, and MCP server
infra/app
Delivery
Container and CI/CD workflows
- CI/CD · GitHub and Azure DevOps pipeline definitions
.github/workflows
Connections 31
- React UI → Session Service: chat over WS · Browser UI sends user messages to the live session service
- Chat Parts → React UI: compose UI · Presentation components form the chat experience
- Session Service → WebSocket: accepts · Session service uses WebSocket handling as its entry path
- WebSocket → Clients: tracks clients · Connection handling relies on client tracking and routing state
- WebSocket → Conversation: routes messages · Inbound/outbound chat events flow through conversation handling
- Conversation → Utilities: queues/state · Conversation flow uses shared queueing, Redis messaging, and caches
- Conversation → Orchestrator: forwards intent · Session layer sends normalized requests to the orchestrator
- Orchestrator → Agent Router: starts workflow · Service entry point invokes the orchestration core
- Agent Router → Planner: plans · Orchestrator decomposes requests into steps
- Agent Router → Jira Agent: routes jira · Jira-related tasks are delegated to the Jira agent
- Agent Router → DevOps Agent: routes devops · Azure DevOps-related tasks are delegated to the DevOps agent
- Agent Router → Fallback: degrades · Unsupported or failed paths fall back to recovery behavior
- Agent Router → Answer Gen: synthesizes · Workflow concludes with final answer generation
- Jira Agent → Jira Plugin: uses · Jira agent calls the orchestrator-side Jira integration
- DevOps Agent → DevOps Plugin: uses · DevOps agent calls the orchestrator-side DevOps integration
- DevOps Plugin → MCP Server: tool calls · Azure DevOps access can be delegated to the MCP tool service
- Jira Plugin → MCP Server: tool calls · Jira access can also be mediated through the tool service
- MCP Server → Tool Factory: builds adapters · MCP app wires its service adapters through a factory
- Tool Factory → Tool Adapters: instantiates · Factory creates Azure DevOps and Jira service implementations
- Orchestrator → Contracts: uses schemas · Orchestrator depends on shared request/response and config models
- Orchestrator → Telemetry: emits traces · Orchestrator uses shared logging and tracing support
- Orchestrator → Safety: checks content · Safety utilities guard text and image handling
- Orchestrator → Utilities: shares helpers · Orchestrator uses shared config, HTTP, and storage helpers
- Infra Root → Core Stack: provisions · Root deployment composes the foundation Azure modules
- Infra Root → App Stack: deploys · Root deployment composes application modules
- App Stack → Session Service: hosts · Infrastructure deploys the session manager container app
- App Stack → Orchestrator: hosts · Infrastructure deploys the orchestrator container app
- App Stack → React UI: serves · Infrastructure deploys the frontend container/app
- App Stack → MCP Server: hosts · Infrastructure deploys the MCP tool service
- Core Stack → Telemetry: feeds monitoring · Monitoring and tracing are part of the Azure foundation
- CI/CD → Infra Root: deploys via · CI/CD pipelines drive the Azure deployment workflow