Tracon.Core 1.0.0-preview.3

Prefix Reserved
This is a prerelease version of Tracon.Core.
dotnet add package Tracon.Core --version 1.0.0-preview.3
                    
NuGet\Install-Package Tracon.Core -Version 1.0.0-preview.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Tracon.Core" Version="1.0.0-preview.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tracon.Core" Version="1.0.0-preview.3" />
                    
Directory.Packages.props
<PackageReference Include="Tracon.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Tracon.Core --version 1.0.0-preview.3
                    
#r "nuget: Tracon.Core, 1.0.0-preview.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Tracon.Core@1.0.0-preview.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Tracon.Core&version=1.0.0-preview.3&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Tracon.Core&version=1.0.0-preview.3&prerelease
                    
Install as a Cake Tool

Tracon.Core

The Tracon runtime: the agent catalog, the definition compiler, the tool registry, and run recording.

This package runs on its own. Without any further configuration every store is an in-memory implementation, so a first agent works with no database, no HTTP layer, and no UI — add those when you need them.

dotnet add package Tracon.Core --prerelease
builder.AddTracon()          // reads the "Tracon" configuration section
       .AddTool(GetOrderStatus)
       .UseOpenAI(apiKey);       // Tracon.OpenAI

Everything is registered with TryAdd. Register your own implementation of a seam before this call and yours wins — Tracon never overwrites a consumer's registration. Add .RequireCustomBinding<T>() for a seam the deployment must not run without: the host does not start while Tracon's built-in default is what resolves.

Keep every Tracon package on the same version. Each package depends on its Tracon siblings at exactly its own version, and a host whose loaded Tracon package assemblies come from more than one release stops before any hosted service starts, with an error that lists each assembly and version. Tracon.Client is not compared: it talks to a server over HTTP. There is no setting that turns this check off, and a process that never starts a host does not run it.

Security-sensitive settings come up permissive for the same "no surprises" reason. Add .RequireProductionProfile() when that is the wrong default: it changes no setting, and refuses to start while tenant separation, session ownership, at-rest protection, content inspection, rate limiting or retention is still on its permissive default and the risk has not been accepted by name.

What it does

An agent definition is data: a name, a model binding, a system prompt, and the names of the tools, skills, and callable agents it may use. The compiler turns that data into a Microsoft Agent Framework AIAgent.

Stage Responsibility
Agent sources Load definitions from code or a database
IAgentCatalog Resolve the named definition
AgentDefinitionCompiler Validate and compile it into an AIAgent
RunRecordingAgent Record the run around the compiled agent
IRunStore Persist the run and its event stream

IAgentCatalog.ResolveAsync is the entry point. What it hands back is already wrapped in the run recording decorator, so every run is written to IRunStore whether it came from the HTTP API, the UI, or your own code. There is no path that runs an agent without recording it.

MAF types are not wrapped

AIAgent, AgentSession, ChatMessage, and AIFunction are used directly and appear in the public API as themselves. Tracon is a control plane over the Microsoft Agent Framework, not an abstraction layer on top of it — anything you know how to do with MAF keeps working, and MAF's own extension points stay reachable.

Tools are defined in code only

[Description("Returns the status of an order.")]
static string GetOrderStatus([Description("Order number")] string orderId)
    => orders.Find(orderId).Status;

AddTool registers a method; the parameter schema is generated from its signature. An agent created from the UI or the HTTP API can select from these tools, but tool code can never be written through them. That is a security boundary, and it is not configurable.

A tool receives an empty service provider from MAF, so it cannot resolve a dependency at call time. Take dependencies at registration instead — register a factory, or close over the instance you need. Instance-method tools registered by scanning a type have the same problem.

Definitions are validated before they are stored

Compiling a definition checks that its model, tools, skills, and callable agents all exist and that the call graph has no cycles. The same check runs on the save path, so a definition that could not run is rejected at write time rather than at the first run.

Optional image generation

An image provider package can register the code-defined generate_image tool. The feature is disabled until TraconImageOptions.Enabled is true and the selected provider and image model are set. The tool returns attachment ids, not image bytes, and records image or token usage in the normal tool invocation row.

builder.AddTracon()
       .UseOpenAI(apiKey)
       .UseOpenAIImages(options =>
       {
           options.Enabled = true;
           options.Model = "gpt-image-1";
       });

UseOpenAIImages, UseAzureOpenAIImages, and UseGoogleImages use keyed generators. Select one with TraconImageOptions.Provider; an unkeyed consumer IImageGenerator remains the fallback for a custom provider. Configure image pricing under Tracon:Pricing:Images; a missing price always records a null cost.

In-memory by default, durable when configured

Registered Runs survive a restart Good for
nothing no tests, a first look, single-process tools
UsePostgreSql / UseSqlServer / UseSqlite yes anything that has to be looked at later

The seams are the same either way (Tracon.Abstractions), so moving from one to the other is a registration change, not a code change.

What is not in here

The HTTP API (Tracon.AspNetCore), the management UI (Tracon.UI), model providers (Tracon.OpenAI, .Anthropic, .Google, .Azure), workflows (Tracon.Workflows), and MCP (Tracon.Mcp) are separate packages. Install Tracon to get the common set in one reference.

Compatibility

Targets net8.0, net9.0, and net10.0. The package is trimming- and AOT-compatible.

Two overloads are the exception and say so in their signature: AddTool(Delegate) and AddToolsFrom<T>() build a tool from method metadata and therefore carry [RequiresUnreferencedCode] and [RequiresDynamicCode]. The warning is passed to you rather than suppressed. The recommended path is AddGeneratedTools(), which a source generator fills in at compile time with no reflection at all; passing an AIFunction you built yourself to AddTool(AIFunction) is equally annotation-free.

License: PolyForm Small Business 1.0.0 - free below 100 people and 1,000,000 USD (2019, inflation adjusted) revenue; a commercial licence applies above that. Terms ship in the package as LICENSE.md. Details: https://tracon.dev/reference/licensing/

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (12)

Showing the top 5 NuGet packages that depend on Tracon.Core:

Package Downloads
Tracon.AspNetCore

Tracon HTTP layer. MapTracon connects the management API and the OpenAI-compatible run endpoints. Includes layered access protection: loopback by default, bearer token, ASP.NET Core authorization policy.

Tracon.OpenAI

OpenAI provider adapter for Tracon. Model catalog, IChatClient creation and OpenAI specific run options.

Tracon.Mcp

Model Context Protocol client for Tracon. It discovers tools from remote MCP servers and lists them with code-registered tools. It requires approval by default.

Tracon.Sqlite

SQLite persistence layer for Tracon. Single-file setup: for demos, embedded scenarios, and testing with real SQL behavior. Ships with embedded SQL migrations. Single-writer; not for use in a multi-instance deployment.

Tracon.Workflows

Workflow execution engine for Tracon. Agents from the catalog are chained together with the Sequential, Concurrent, Handoff, GroupChat, and Magentic patterns; every execution is recorded in the runs table and can be resumed from checkpoints.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-preview.3 68 9/24/2026
1.0.0-preview.2 133 9/20/2026
1.0.0-preview.1 111 9/20/2026