FabrCore.Host
0.6.17
dotnet add package FabrCore.Host --version 0.6.17
NuGet\Install-Package FabrCore.Host -Version 0.6.17
<PackageReference Include="FabrCore.Host" Version="0.6.17" />
<PackageVersion Include="FabrCore.Host" Version="0.6.17" />
<PackageReference Include="FabrCore.Host" />
paket add FabrCore.Host --version 0.6.17
#r "nuget: FabrCore.Host, 0.6.17"
#:package FabrCore.Host@0.6.17
#addin nuget:?package=FabrCore.Host&version=0.6.17
#tool nuget:?package=FabrCore.Host&version=0.6.17
FabrCore
A .NET framework for building distributed AI agent systems on Orleans and Microsoft Agent Framework.
FabrCore provides the building blocks for creating, hosting, and connecting to AI agents that run as Orleans grains. Agents are durable, scalable, and communicate through a structured message-passing architecture with built-in support for LLM providers, tool execution, MCP integration, and real-time monitoring.
Website: fabrcore.ai | Built by: Vulcan365 AI
New to FabrCore? Start with the blogs and guides on fabrcore.ai/blogs for walkthroughs, architecture deep-dives, and real-world patterns.
Key Features
- Distributed AI Agents -- Orleans grains with durable state, timers, reminders, and health monitoring
- Microsoft Agent Framework -- Built on
Microsoft.Agents.AIwithChatClientAgent, sessions, and thread patterns - Multi-LLM Support -- Azure OpenAI, OpenAI, Anthropic, and custom providers via
Microsoft.Extensions.AI - Plugins and Tools -- Stateful plugins and stateless standalone tools with dependency injection
- MCP Integration -- Model Context Protocol servers via Stdio and HTTP transports
- Inter-Agent Messaging -- Fan-out, pipeline, supervisor patterns with ACL-based access control
- Real-Time Monitoring -- Agent message traffic, events, LLM request/response capture, and token tracking
- ChatDock UI -- Floating chat panel component for Blazor Server with multi-instance support
- Audio Transcription -- Azure OpenAI gpt-4o transcription model support
- Testing Harness -- In-memory agent testing with mock and live LLM modes
Architecture
+---------------------------------------------------+
| Your Application |
+-------------------+-------------------------------+
| FabrCore.Client | FabrCore.Host |
| ClientContext | AgentGrain (Orleans 10) |
| ChatDock (UI) | API / Chat Completions |
| Health Monitor | WebSocket Middleware |
+-------------------+-------------------------------+
| FabrCore.Sdk |
| FabrCoreAgentProxy * ChatClientAgent |
| Plugins * Tools * MCP * Agent Monitor |
+---------------------------------------------------+
| FabrCore.Core |
| Interfaces * Data Models * Grain Abstractions |
+---------------------------------------------------+
Packages
| Package | Description |
|---|---|
| FabrCore.Core | Core interfaces, data models, and grain abstractions |
| FabrCore.Sdk | Agent SDK -- FabrCoreAgentProxy, plugins, tools, MCP, monitoring |
| FabrCore.Host | Server host -- Orleans silo, REST API, chat completions, WebSocket |
| FabrCore.Client | Client library -- ClientContext, ChatDock Blazor component, health monitoring |
Quick Start
1. Install packages
dotnet add package FabrCore.Host
FabrCore.Host pulls in FabrCore.Sdk and FabrCore.Core transitively. For client applications, add FabrCore.Client instead.
2. Create an agent
using FabrCore.Sdk;
using FabrCore.Core;
[AgentAlias("my-assistant")]
public class MyAssistantAgent : FabrCoreAgentProxy
{
public override async Task<AgentMessage> OnMessage(AgentMessage message)
{
var (agent, session) = await Host.CreateChatClientAgent(
modelName: "AzureProd",
instructions: "You are a helpful assistant."
);
var response = await agent.SendAsync(session, message.Text);
return message.ToReply(response);
}
}
3. Configure the server
var builder = WebApplication.CreateBuilder(args);
builder.AddFabrCoreServer();
var app = builder.Build();
app.UseFabrCoreServer();
app.Run();
4. Configure model access
Copy FabrCore.json.example to FabrCore.json in your project root and add your LLM provider configuration:
{
"ModelConfigurations": [
{
"Name": "AzureProd",
"Provider": "Azure",
"Uri": "https://your-resource.cognitiveservices.azure.com/",
"Model": "gpt-4.1-mini",
"ApiKeyAlias": "AZURE_KEY"
}
],
"ApiKeys": [
{
"Alias": "AZURE_KEY",
"Value": "your-api-key-here"
}
]
}
Note:
FabrCore.jsonis gitignored by default to prevent accidental secret commits.
Documentation
Full documentation is available in the docs/skills directory:
| Topic | Description |
|---|---|
| FabrCore Overview | Architecture, prerequisites, and project templates |
| Agent Development | Building agents with lifecycle methods, state, timers, and reminders |
| Microsoft Agent Framework | ChatClientAgent, sessions, thread patterns, and Microsoft.Extensions.AI |
| Server Setup | Orleans silo, REST API, WebSocket, LLM providers, and system agents |
| Client Setup | Blazor Server clients, Orleans connectivity, and agent messaging |
| ChatDock Component | Floating chat panel UI with customizable positions and multi-instance |
| Plugins and Tools | Stateful plugins, stateless tools, and DI integration |
| MCP Integration | Model Context Protocol servers via Stdio and HTTP transports |
| Messaging and Access Control | Inter-agent communication patterns, routing, and ACL rules |
| Agent Monitor | Message traffic monitoring, LLM call capture, and token tracking |
| Orleans Configuration | Clustering, persistence, streaming, reminders, and multi-silo |
| Testing | In-memory test harness with mock and live LLM modes |
| Audio Transcription | Azure OpenAI gpt-4o audio transcription |
Check out the FabrCore Blog for tutorials, architecture deep-dives, integration guides, and best practices.
Technology Stack
- .NET 10 -- Latest .NET runtime
- Orleans 10.0 -- Distributed actor framework for grain-based agents
- Microsoft.Agents.AI 1.0 -- Microsoft Agent Framework for AI agent patterns
- Microsoft.Extensions.AI -- Unified AI abstractions for multi-provider LLM support
- Blazor Server -- Real-time web UI for agent interaction
Building from Source
dotnet build src/FabrCore.sln
License
Licensed under the Apache License, Version 2.0.
See NOTICE for attribution requirements.
Contributing
Contributions are welcome! Please open an issue or pull request on GitHub.
Links
| 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
- FabrCore.Core (>= 0.6.17)
- FabrCore.Sdk (>= 0.6.17)
- Microsoft.Data.SqlClient (>= 7.0.0)
- Microsoft.Orleans.Client (>= 10.0.1)
- Microsoft.Orleans.Clustering.AdoNet (>= 10.0.1)
- Microsoft.Orleans.Clustering.AzureStorage (>= 10.0.1)
- Microsoft.Orleans.Core.Abstractions (>= 10.0.1)
- Microsoft.Orleans.Persistence.AdoNet (>= 10.0.1)
- Microsoft.Orleans.Persistence.AzureStorage (>= 10.0.1)
- Microsoft.Orleans.Reminders (>= 10.0.1)
- Microsoft.Orleans.Reminders.AdoNet (>= 10.0.1)
- Microsoft.Orleans.Reminders.AzureStorage (>= 10.0.1)
- Microsoft.Orleans.Runtime (>= 10.0.1)
- Microsoft.Orleans.Sdk (>= 10.0.1)
- Microsoft.Orleans.Server (>= 10.0.1)
- Microsoft.Orleans.Streaming (>= 10.0.1)
- Microsoft.Orleans.Streaming.AzureStorage (>= 10.0.1)
- OpenTelemetry.Api (>= 1.15.1)
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 |
|---|---|---|
| 0.6.17 | 100 | 4/17/2026 |
| 0.6.16 | 81 | 4/16/2026 |
| 0.6.15 | 94 | 4/15/2026 |
| 0.6.14 | 115 | 4/12/2026 |
| 0.6.13 | 88 | 4/12/2026 |
| 0.6.12 | 96 | 4/11/2026 |
| 0.6.11 | 87 | 4/11/2026 |
| 0.6.10 | 93 | 4/10/2026 |
| 0.6.9 | 108 | 4/8/2026 |
| 0.6.8 | 94 | 4/7/2026 |
| 0.6.7 | 83 | 4/7/2026 |
| 0.6.6 | 105 | 4/5/2026 |
| 0.6.5 | 87 | 4/5/2026 |
| 0.6.4 | 101 | 4/2/2026 |
| 0.6.2 | 96 | 4/1/2026 |
| 0.6.1 | 90 | 3/31/2026 |
| 0.6.0 | 113 | 3/31/2026 |
| 0.5.58 | 92 | 3/20/2026 |
| 0.5.57 | 86 | 3/20/2026 |
| 0.5.56 | 89 | 3/18/2026 |