Skip to content
Tracon

Tracon and DevUI

Microsoft Agent Framework already ships a user interface, so the first question about Tracon is usually why a second one exists. The two answer different questions, and MAF’s own documentation draws the line.

DevUI introduces itself this way:

DevUI is a sample app to help you visualize and debug your agents and workflows during development. It is not intended for production use.

Its security and deployment page says what to do instead:

For production deployments, build your own custom interface using the Agent Framework SDK with appropriate security measures.

Tracon is one implementation of that production-facing layer, delivered as packages instead of as an instruction. It is not an official answer to that guidance, and it does not replace DevUI: DevUI stays the fastest way to look at an agent while you write it.

Only the rows below are drawn from published documentation. DevUI does not document how it stores state, so this page makes no claim about that.

DevUI Tracon
Stated purpose A sample app for local development An operational layer for your production host
Stated production use Not intended for it The reason it exists
Network binding Binds to 127.0.0.1 by default Loopback by default; remote access is opt-in
Authentication Optional bearer token Bearer token, scoped API keys, and your own ASP.NET Core authorization policy

These are Tracon’s own capabilities, not a judgement about DevUI. They are the work that the recommendation above leaves to you.

  • Records that outlive the process. Runs, events, tool calls, timings, and cost, written to PostgreSQL, SQL Server, or SQLite in a schema of their own.
  • Definitions you can move backwards. An agent is data, versioned, with rollback.
  • A tenant boundary. Optional. When you enable it, a tenant_id scopes every query.
  • An audit trail you can check. audit_log is hash-chained, and GET /api/audit/verify reports whether the chain is intact.

DevUI is not deficient. A sample app that says it is a sample app is doing its job. The gap it describes is the gap Tracon fills.

Tracon is not a hosted product either. It is a package family that runs inside your own process. You still own authentication, model providers, storage, and outbound connections.

Most governance features start switched off. Tenancy, rate limiting, retention, and at-rest protection are opt-in. RequireProductionProfile() turns each of those into a decision you make at startup rather than one you discover later.

  • What Tracon is — the packages, the four rules, and whether it fits.
  • Capability map — every feature with its package, storage need, and limit.
  • Security — the access layers and the tenant boundary in detail.