Quick Start
Get Started in Under 5 Minutes
FabrCore is an open-source .NET framework for building distributed AI agent systems powered by Orleans. Choose the setup method that works best for you.
Prerequisites
- .NET 10 SDK
- Visual Studio 2022+ (17.x) or VS Code with C# Dev Kit
- Git
- An LLM API key (Azure OpenAI or OpenAI)
Option 1: NuGet Packages
Add FabrCore to an existing project via NuGet:
Server (Host)
dotnet add package FabrCore.Host
dotnet add package FabrCore.Sdk
Client (Blazor Server Interactive)
dotnet add package FabrCore.Client
Option 2: Clone the Repository
Clone and run the full source for development and debugging:
Step 1: Clone
git clone https://github.com/vulcan365/FabrCore.git
cd FabrCore
Step 2: Configure
Create fabrcore.json with your LLM provider details:
{
"ModelConfigurations": [
{
"Name": "default",
"Provider": "Azure",
"Uri": "https://your-resource.openai.azure.com/",
"Model": "gpt-4o",
"ApiKeyAlias": "my-key"
}
],
"ApiKeys": [
{ "Alias": "my-key", "Value": "your-api-key-here" }
]
}
Step 3: Run
dotnet run
Open http://localhost:5000 in your browser.
Your First Agent
Here's a minimal agent using FabrCore:
MyAgent.cs
using FabrCore.Core;
using FabrCore.Sdk;
using Microsoft.Extensions.AI;
[AgentAlias("MyAgent")]
public class MyAgent : FabrCoreAgentProxy
{
private AIAgent? agent;
private AgentThread? thread;
public MyAgent(
AgentConfiguration config,
IServiceProvider serviceProvider,
IFabrCoreAgentHost fabrAgentHost)
: base(config, serviceProvider, fabrAgentHost) { }
public override async Task OnInitialize()
{
(agent, thread) = await CreateChatClientAgent(
"default",
threadId: config.Handle);
}
public override async Task<AgentMessage> OnMessage(AgentMessage message)
{
var response = message.Response();
var result = await agent!.RunAsync(message.Message, thread);
response.Message = result.Text;
return response;
}
}
What's happening here?
FabrCoreAgentProxy is the base class for all agents. CreateChatClientAgent wires up an LLM-backed agent with automatic message persistence via Orleans. The OnMessage handler processes each user message and returns a response.