Microsoft’s .NET team, in collaboration with CopilotKit, announced an official .NET SDK package for the AG-UI protocol, a standard that defines how artificial intelligence agents communicate with applications and user-facing interfaces. The package was published in the AG-UI repository alongside the TypeScript and Python packages, and is available through NuGet under the MIT license.
The practical change is that any .NET service can now communicate directly through AG-UI without relying on an implementation specific to a particular agent framework. AG-UI support in Microsoft Agent Framework, commonly abbreviated as MAF, is also now based on the new SDK packages.
What does the package add?
AG-UI aims to address a common problem in long-running agent applications. Agents may send tokens incrementally, call tools, delegate tasks to subagents, or change the application state while executing a request. Without a shared protocol, frontends must understand different event formats for each framework or service.
The protocol turns these interactions into typed events, including RUN_STARTED, TEXT_MESSAGE_CONTENT, STATE_DELTA, and RUN_FINISHED. The client decides how to display them, whether in a web application, terminal, mobile application, or conversational platforms such as Slack and Teams.
Server and client support
The package includes two complementary paths. AGUI.Server turns an agent into an AG-UI-compatible endpoint, while AGUI.Client enables a .NET application to connect to any agent that supports the protocol. The integration is based on IChatClient, the conversation abstraction layer within Microsoft.Extensions.AI.
On the server side, the ToChatRequestContext function breaks down the incoming AG-UI request into the messages and options expected by the client, while AsAGUIEventStreamAsync converts the response stream into protocol events. This conversion also handles creating run-start and run-finish events, and closing open text or reasoning blocks before moving to another message or tool call.
Microsoft Agent Framework users can rely on the ASP.NET Core integration, which provides the AddAGUIServer() and MapAGUIServer() functions to reduce endpoint setup code.
SDK components and compatibility
The package consists of five components published through NuGet:
- AGUI.Abstractions: Protocol models for events, messages, tools, state, and interruptions.
- AGUI.Formatting: On-the-wire data formatting, with support for Server-Sent Events by default.
- AGUI.Protobuf: Optional Protobuf support covering a subset of event types.
- AGUI.Client: Consumption of AG-UI streams.
- AGUI.Server: Production of AG-UI streams.
SSE remains the default format and supports all event types mentioned in the SDK, while Protobuf support is limited to a subset.
What changes for Agent Framework users?
The basic programming model does not change for existing users, and the event format remains compatible, meaning that existing frontends can continue working with an upgraded server. However, some interface names have changed: AddAGUIServer() and MapAGUIServer() replace AddAGUI() and MapAGUI(), and the namespaces and classes have moved to the AGUI.Client, AGUI.Server, and AGUI.Abstractions packages.
The client supports consuming AG-UI from .NET Framework 4.7.2 and later, while hosting the endpoint requires a current version of .NET.
Why does this announcement matter?
The release gives .NET services a unified path for working with multiple interfaces without rebuilding the event-streaming layer for each application. It also allows roles to be exchanged between components written in C#, Python, and TypeScript, while keeping the integration layer based on IChatClient. This is particularly valuable for organizations that want to connect a single agent to web interfaces, internal applications, or different conversational channels.
However, the SDK does not eliminate the need to build the server or choose how events are displayed; it handles the protocol, while the web architecture and endpoint remain the application’s responsibility. Protobuf support also does not cover every event, so SSE remains the complete default option.