Tracon.AGUI
1.0.0-preview.6
Prefix Reserved
dotnet add package Tracon.AGUI --version 1.0.0-preview.6
NuGet\Install-Package Tracon.AGUI -Version 1.0.0-preview.6
<PackageReference Include="Tracon.AGUI" Version="1.0.0-preview.6" />
<PackageVersion Include="Tracon.AGUI" Version="1.0.0-preview.6" />
<PackageReference Include="Tracon.AGUI" />
paket add Tracon.AGUI --version 1.0.0-preview.6
#r "nuget: Tracon.AGUI, 1.0.0-preview.6"
#:package Tracon.AGUI@1.0.0-preview.6
#addin nuget:?package=Tracon.AGUI&version=1.0.0-preview.6&prerelease
#tool nuget:?package=Tracon.AGUI&version=1.0.0-preview.6&prerelease
Tracon.AGUI
The AG-UI endpoint for Tracon. It connects a front end that speaks the AG-UI protocol (CopilotKit and others) to a Tracon agent.
An AG-UI request is a Tracon run: it is recorded, the tenant is resolved, the roles are enforced, the quota is counted
and the cost is written. Session ownership applies when Tracon:SessionOwnership is on (it is off by default); until
then a threadId is whatever the front end chooses, and any operator of the tenant can continue it. Only the dialect on
the wire is different.
Installation
dotnet add package Tracon.AGUI --prerelease
builder.AddTracon()
.UseOpenAI(apiKey)
.AddClientTool("open_page", "Opens a page in the user's browser.", schema)
.AddAgent(new AgentDefinition
{
Name = "assistant",
Instructions = "You help the user.",
Model = new ModelBinding { Provider = "openai", Model = "gpt-4o-mini" },
ToolNames = ["open_page"],
});
app.MapTracon();
app.MapTraconAGUI();
MapTraconAGUI needs MapTracon first. It inherits the access protection from there: loopback by default, the bearer token,
your authorization policy, the Operator role and the runs:write API key scope.
The endpoint is POST /tracon/agui/{agentName}. The body is an AG-UI RunAgentInput and the answer is
text/event-stream, one data: frame per AG-UI event.
curl -N -X POST http://localhost:5081/tracon/agui/assistant \
-H 'Content-Type: application/json' \
-d '{"threadId":"t1","runId":"r1","messages":[{"id":"m1","role":"user","content":"hello"}],
"tools":[{"name":"open_page","description":"Opens a page in the browser.","parameters":{"type":"object","properties":{"url":{"type":"string"}}}}],
"context":[]}'
How a request is read
| AG-UI field | What Tracon does |
|---|---|
threadId |
The session. At most 200 characters. It belongs to the tenant that opened it, and with Tracon:SessionOwnership on also to the user. |
messages |
Only the messages after the last assistant message are new. A user message is the run's message; a tool message answers a pending client-side tool call. Everything before is already in the session. System and developer messages are not read. |
tools |
Must name every client-side tool the agent carries. The schema is always the code's. A tool the agent does not carry is ignored. |
resume |
Answers a tool approval ({ "approved": true, "reason": "...", "remember": false }) or a request for user input (the requested fields). |
context |
Becomes run documents, kept apart from the instructions. |
state, forwardedProps |
Not used. |
What comes back
The first event after RUN_STARTED is a CUSTOM event named tracon.run that carries the Tracon run id. A tool that waits for
approval, and an MCP server that asks the user for input, end the run with an interrupt in RUN_FINISHED. A failure after the
stream began is a RUN_ERROR event that carries a correlation id the server log has.
Notes
- A tool is defined only in code. An AG-UI request cannot add a tool or change a schema.
- The package takes
AGUI.ServerandAGUI.Abstractions(MIT, published by the AG-UI protocol project). It is not part of theTraconmeta package, so an application whose front end does not speak AG-UI carries neither. - It does not support Native AOT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- AGUI.Abstractions (>= 1.0.1)
- AGUI.Server (>= 1.0.1)
- Tracon.AspNetCore (= 1.0.0-preview.6)
-
net8.0
- AGUI.Abstractions (>= 1.0.1)
- AGUI.Server (>= 1.0.1)
- Tracon.AspNetCore (= 1.0.0-preview.6)
-
net9.0
- AGUI.Abstractions (>= 1.0.1)
- AGUI.Server (>= 1.0.1)
- Tracon.AspNetCore (= 1.0.0-preview.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-preview.6 | 50 | 10/27/2026 |