Novolis.Maui.Agent.Protocol
2026.1.1.57
dotnet add package Novolis.Maui.Agent.Protocol --version 2026.1.1.57
NuGet\Install-Package Novolis.Maui.Agent.Protocol -Version 2026.1.1.57
<PackageReference Include="Novolis.Maui.Agent.Protocol" Version="2026.1.1.57" />
<PackageVersion Include="Novolis.Maui.Agent.Protocol" Version="2026.1.1.57" />
<PackageReference Include="Novolis.Maui.Agent.Protocol" />
paket add Novolis.Maui.Agent.Protocol --version 2026.1.1.57
#r "nuget: Novolis.Maui.Agent.Protocol, 2026.1.1.57"
#:package Novolis.Maui.Agent.Protocol@2026.1.1.57
#addin nuget:?package=Novolis.Maui.Agent.Protocol&version=2026.1.1.57
#tool nuget:?package=Novolis.Maui.Agent.Protocol&version=2026.1.1.57
Novolis.Maui.Agent.Protocol
MessagePack DTOs, LocalIpc framing helpers, and UiAgentClient for the MAUI UI agent RPC protocol (ui.hello, ui.tree, ui.screenshot, ui.click, ui.type, ui.select, ui.focus, ui.scroll, ui.wait, …).
Install
dotnet add package Novolis.Maui.Agent.Protocol
Prerequisites: .NET 10 SDK (net10.0).
Endpoint
Default named pipe novolis-maui-agent (Windows) or temp socket novolis-maui-agent.sock (Unix). Override with env NOVOLIS_MAUI_AGENT_ENDPOINT.
Quick start
using Novolis.Maui.Agent.Protocol;
await using var client = new UiAgentClient();
await client.ConnectDefaultAsync();
var hello = await client.HelloAsync();
var tree = await client.TreeAsync(interactiveOnly: true);
var shot = await client.ScreenshotAsync(maxWidth: 1280);
API
| API | Purpose |
|---|---|
UiAgentClient |
Async RPC client over ILocalIpcClient |
UiAgentClient.ConnectAsync(endpoint) / ConnectDefaultAsync() |
Connect to agent host |
UiAgentClient.HelloAsync() |
Handshake; returns UiHelloResponseDto |
UiAgentClient.TreeAsync(interactiveOnly) |
Accessibility/control tree |
UiAgentClient.ScreenshotAsync(controlId?, maxWidth?) |
PNG screenshot |
UiAgentClient.ClickAsync(controlId?, x?, y?, button?, clickCount) |
Click by id or coordinates |
UiAgentClient.TypeAsync(controlId?, text?, keys?, clear) |
Type text or key chords |
UiAgentClient.SelectAsync(controlId, index?, itemText?) |
List/combo selection |
UiAgentClient.FocusAsync(controlId) |
Focus a control |
UiAgentClient.ScrollAsync(controlId?, deltaX?, deltaY?, bringIntoView) |
Scroll / bring into view |
UiAgentClient.WaitAsync(controlId, enabled?, textContains?, timeoutMs) |
Wait for control state |
UiAgentClient.GetAsync(controlIds) |
Batch read control state |
UiAgentClient.ItemsAsync(controlId) |
List items for list/combo controls |
UiTransportEndpoints.CreateDefault() |
Platform default pipe/socket endpoint |
UiProtocolCodec.Serialize<T> / Deserialize<T> |
MessagePack codec |
UiProtocolVersion.Current |
Protocol version string ("1.2") |
UiRpcMethodNames.* |
RPC method constants (ui.hello, ui.tree, …) |
AgentRoleNames.* |
Semantic roles (button, textbox, listbox, …) |
AgentIdAttribute |
Marks controls with stable agent ids |
UiTreeNodeDto / UiBoundsDto / UiControlStateDto / UiItemDto |
Core DTO records |
Related / dogfood
| Package / app | Notes |
|---|---|
Novolis.Maui.Agent |
Host side — embed agent in a MAUI page |
MauiAgentDump |
CLI tree/screenshot client |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- MessagePack (>= 3.1.10)
- Novolis.Transports.LocalIpc (>= 2026.1.10.32)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Novolis.Maui.Agent.Protocol:
| Package | Downloads |
|---|---|
|
Novolis.Maui.Agent
In-process MAUI UI agent host: LocalIpc ui.* protocol, tree dump, screenshot, click/type/wait. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.1.57 | 36 | 10/3/2026 |
| 2026.1.1.56 | 36 | 10/3/2026 |
| 2026.1.1.36 | 39 | 10/2/2026 |
| 2026.1.1.33 | 39 | 10/2/2026 |
| 2026.1.1.32 | 43 | 10/1/2026 |
| 2026.1.1.30 | 39 | 10/1/2026 |
| 2026.1.1.28 | 44 | 9/30/2026 |