Updates and insights from the FabrCore project.
FabrCore now exposes an OpenAI-compatible Chat Completions endpoint — any system that speaks the OpenAI protocol can interact with your agents out of the box.
April 15, 2026 at 9:00 AM • 7 min read
In-memory test hosts, deterministic fake chat clients, and LLM evaluation with Microsoft.Extensions.AI.Evaluation.
April 14, 2026 at 11:30 AM • 6 min read
New OpenAI-compatible Chat Completions endpoint lets any system that speaks the OpenAI protocol talk to your agents.
April 9, 2026 at 3:15 PM • 12 min read
An experimental multi-agent orchestration layer that plans, delegates, and recovers across distributed client agents — without clients changing a line of code.
April 9, 2026 at 2:00 PM • 6 min read
A client-side proxy pattern that manages busy-state interleaving for better UX during long-running agent operations.
April 7, 2026 at 9:00 AM • 5 min read
The Microsoft Agent Framework reaches GA — what the 1.0 release means for stability and FabrCore's integration.
April 2, 2026 at 10:15 AM • 6 min read
Enhanced registry with capabilities, hidden, and note attributes for richer metadata and collision detection.
March 31, 2026 at 8:30 AM • 5 min read
How FabrCore restructured from monolithic documentation to modular plugins and tools.
March 26, 2026 at 11:00 AM • 5 min read
OrleansSqlServerInitializer auto-creates all clustering, persistence, reminders, and streaming tables.
March 24, 2026 at 9:45 AM • 5 min read
A lessons-learned post about reverting implicit stream inference back to explicit handle resolution.
March 19, 2026 at 3:30 PM • 6 min read
Configurable compaction thresholds, models, retention policies, and the OnCompaction override.
March 17, 2026 at 10:00 AM • 7 min read
IAgentMessageMonitor, captured data types, configurable LLM capture, and custom monitor implementations.
March 12, 2026 at 2:15 PM • 6 min read
TokenTrackingChatClient, LlmUsageScope, and per-call metadata capture for understanding agent costs.
March 10, 2026 at 9:00 AM • 6 min read
IAclProvider, allow/deny rules, owner-based access control, and cross-owner messaging gated by ACL checks.
March 5, 2026 at 11:20 AM • 5 min read
The new EventMessage class follows the CloudEvents spec for interoperable agent-to-agent communication.
March 3, 2026 at 8:45 AM • 5 min read
Four LLM backends in one runtime — configure each provider in fabrcore.json and let agents choose models per task.
February 27, 2026 at 10:30 AM • 7 min read
Sizing options, drag-and-drop uploads, agent reset, plugins rendered in chat, and cross-owner messaging.
February 25, 2026 at 9:15 AM • 6 min read
FabrCoreAgentService manages agent lifecycles — grain activation, OnInitialize, OnMessage, health monitoring.
February 23, 2026 at 8:45 AM • 6 min read
Batch embedding requests, singleton client caching, and native batch in memory tools — collapsing thousands of HTTP round-trips into one call.
February 23, 2026 at 7:50 AM • 5 min read
OnMessageReceived is now a Func<AgentMessage, Task<bool>> — return true to display, false to suppress. Migration guide and message type conventions.
February 21, 2026 at 5:45 PM • 8 min read
EventCallback parameters, IClientContext events, and ChatDockManager state changes — three ways to get agent messages into your Blazor parent components.
February 21, 2026 at 11:49 AM • 5 min read
Use FabrCore's diagnostics endpoints with ASP.NET Core health checks for aggregated monitoring — no custom health agents needed.
February 21, 2026 at 11:37 AM • 4 min read
Use Microsoft.Extensions.AI's structured output APIs for reliable JSON parsing from LLMs instead of building custom parsers.
February 21, 2026 at 11:21 AM • 5 min read
Input validation, allowlists, and sandboxing patterns for building secure FabrCore tools — security is your application's responsibility.
February 21, 2026 at 11:08 AM • 5 min read
Why FabrCore agents are isolated Orleans grains, and why sharing tools or state across agents contradicts the architecture.
February 21, 2026 at 10:52 AM • 4 min read
Use Microsoft.Extensions.AI's UseLogging() middleware to capture tool calls, arguments, and results through standard ILogger.
February 21, 2026 at 10:45 AM • 4 min read
How to configure FileStorageSettings.StoragePath correctly for WSL and Linux environments to avoid hardcoded Windows paths.
February 21, 2026 at 10:33 AM • 5 min read
A practical checklist for validating FabrCore configuration — catch missing API keys, empty models, and bad JSON before startup.
February 21, 2026 at 10:18 AM • 5 min read
How to use FabrCore's built-in CompactionService and TryCompactAsync to manage chat history growth before it hits context limits.
February 21, 2026 at 10:07 AM • 4 min read
Implement real-time progress feedback using SendMessage with OneWay kind — no dedicated streaming API needed.
February 21, 2026 at 9:55 AM • 5 min read
Use Channel, MessageType, and Kind fields for routing within OnMessage instead of building external routing infrastructure.
February 21, 2026 at 9:48 AM • 4 min read
Handle resource cleanup in FabrCore plugins using IDisposable and IAsyncDisposable — no custom lifecycle hooks needed.
February 21, 2026 at 9:42 AM • 5 min read
Build agent delegation workflows using FabrCore's health APIs and messaging primitives instead of custom orchestration layers.
February 21, 2026 at 9:31 AM • 4 min read
FabrCore's plugin settings convention through AgentConfiguration.Args — the GetPluginSetting pattern and best practices.
February 21, 2026 at 9:23 AM • 5 min read
Understanding FabrCore's two-scope agent tracking architecture and how to query agents without custom merge services.
February 21, 2026 at 9:12 AM • 4 min read
FabrCore already includes assembly scanning for agents, plugins, and tools — use AdditionalAssemblies instead of custom discovery.
February 21, 2026 at 9:05 AM • 4 min read
How FabrCore resolves IFabrCoreAgentHost during InitializeAsync via PluginServiceProvider — and common pitfalls to avoid.
February 21, 2026 at 7:35 AM • 5 min read
Connect MCP servers to your agents for access to external tools like GitHub, filesystem, and databases — zero code changes required.
February 20, 2026 at 3:40 PM • 10 min read
Learn how to build an LLM-powered supervisor agent that routes user messages to the best specialist via a 4-step pipeline.
February 20, 2026 at 2:10 PM • 3 min read
The story behind the rename — domain availability, naming doubts, and landing on a name that actually fits.