Library / SDK
SciSharp/BotSharp avatar
SciSharp/BotSharp

BotSharp: a .NET multi-agent framework for wiring LLM agents into business systems

Project brief: AI Multi-Agent Framework in .NET. Out-of-the-box machine learning algorithms allow ordinary programmers to develop artificial intelligence applications faster and easier.

3,104 stars651 forksC#Apache-2.0

At a glance

What is it?
BotSharp is an Apache-2.0 C# framework that treats an AI agent as a plugin pipeline: LLM providers, storage, RAG and messaging channels all sit behind interfaces you replace. It suits .NET shops that already own their business logic. It is not a hosted product, and the repository has not been pushed to since 2025-10-17.
Who is it for?
Adopt BotSharp if your business logic already lives in C# and you want agent routing, conversation state and RAG behind interfaces you can swap, rather than a hosted agent service. Do not adopt it if you need a managed runtime, a Python or TypeScript stack, or a project with recent commits: the last push was on 2025-10-17.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 18, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem BotSharp solves for .NET teams

Most agent frameworks assume you will move your application logic to them. BotSharp assumes the opposite. The README describes it as an open source machine learning framework for an AI bot platform builder, and the stated goal is connecting LLMs to an existing application focused on your business. The intended reader is a corporate developer who already writes C# for an information management system and does not want to reimplement that system in another language to add an agent.

The design follows from that audience. BotSharp adopts machine learning algorithms in C# directly, which the README argues makes refactoring easier because the typed language catches shape changes at compile time. That is a claim about workflow, not about model quality: the framework does not train models, it orchestrates calls to ones you configure. If your team is comfortable in Python and has no .NET code to integrate with, the main reason to choose BotSharp disappears.

Plugin loader, pipeline and agent profile: the actual mechanism

The kernel is deliberately small. The README states that BotSharp uses component design, keeps the kernel to a minimum, and implements business functions through external components. Everything else is a plugin registered against a unified interface, and the core module list names the moving parts: plugin loader, hooking, authentication, agent profile, conversation and state, routing and planning, templating, file repository, caching, rich content, and LLM provider.

An agent in BotSharp is therefore a configuration object plus a set of plugins, not a class you subclass. The agent profile holds the definition, conversation and state hold the running context, and routing and planning decide which agent handles a turn. The README lists multiple LLM planning approaches for tasks that range from simple to complex, and says multiple agents with different responsibilities can cooperate on one task. Storage is equally swappable: the repository ships BotSharp.Core.Repository plus Mongo, LiteDB and Tencent COS plugins, and retrieval is covered by a knowledge base plugin and a Qdrant plugin.

The cost of this shape is indirection. To follow one request you trace through the plugin loader, the hooking layer, the routing decision, the selected LLM provider and the repository. That is the price of being able to replace any of them, and it is worth naming before you start reading the source.

Running the backend and the admin UI locally

The README gives a two-part quick start. First clone the repository and run the WebStarter project, passing the solution name as a property. The Windows and Linux forms differ only in path separators.

bash
git clone https://github.com/dotnetcore/BotSharp
cd BotSharp
dotnet run --project ./src/WebStarter/WebStarter.csproj -p SolutionName=BotSharp

The second step is the admin UI, which lives in a separate repository. It is a SvelteKit application, so it needs Node rather than the .NET SDK.

bash
 git clone https://github.com/SciSharp/BotSharp-UI
 cd BotSharp-UI
 npm install
 npm run dev

According to the README, the UI is then reachable at http://localhost:5015/. A hosted demo with the UI is also linked from the README, which is the fastest way to see the agent and conversation screens before committing to a local build. Note that the backend and the UI are separate repositories with separate dependency trees, so a working backend does not imply a working UI.

Where BotSharp is the wrong tool

The README does not document a rollback or migration path for stored conversations, and it does not describe how to move data between the Mongo, LiteDB and Tencent COS storage plugins. If you expect to change storage backends after going live, that gap matters, and the documentation is silent on it.

Provider coverage is broad but uneven in depth: the plugin list names AzureOpenAI, OpenAI, AnthropicAI, DeepSeekAI, GoogleAI, MetaAI, HuggingFace, LLamaSharp, SemanticKernel and SparkDesk, yet the README does not state which of them implement which planning approaches. A provider that works for a single-turn chat may not support the multi-agent routing you actually need, and the documentation gives no compatibility matrix to check against.

Finally, the project is not a managed service. You run the backend, you host the UI, you provision the database and the vector store. Teams that want an endpoint they can call without operating infrastructure should look elsewhere. The last push to the repository was on 2025-10-17, so anyone who needs a dependency with frequent upstream activity should weigh that before adopting.

How BotSharp differs from Semantic Kernel and LangChain

Semantic Kernel is the closest comparison, and the relationship is not purely competitive: BotSharp ships a BotSharp.Plugin.SemanticKernel, which means the two can be combined rather than chosen between. The difference is scope. Semantic Kernel is a library of abstractions for calling models and composing functions inside your application. BotSharp is a platform builder: it adds agent profiles, conversation state, routing and planning, a file repository, caching, rich content, and messaging channels on top.

Against LangChain-style frameworks, the split is language and packaging. Those ecosystems assume Python or TypeScript and distribute integrations as packages you import. BotSharp assumes C# on .NET and distributes capabilities as plugins loaded by its own loader, with the kernel kept minimal. If your team writes C# and wants agent orchestration inside the same solution as its business logic, that packaging is the argument. If your team writes Python, the argument runs the other way, and the plugin list will not help you.

Maintenance, licensing and what an upgrade costs

BotSharp is licensed under Apache-2.0, and the README states this allows free use in both personal and commercial projects. Apache-2.0 is a permissive licence with a patent grant, but it still carries obligations such as preserving notices, and the plugins you write and ship are your own to license. This is a description of the licence file, not legal advice; have counsel review anything you distribute.

The release tags give the clearest picture of cadence: r5.0-mcp on 2025-04-05, r5.1-utility-improment on 2025-06-27, and r5.2-image-composition on 2025-10-17, which is also the date of the last push. The roadmap shows MCP, Realtime, Database Assistant, Code Interpreter, Conversation Management, Multi-Agent Routing and Knowledge Base as done, with A2A, Computer Use and Browser Use still unchecked.

Upgrade cost is dominated by the plugin boundaries. Because the kernel is minimal and behaviour lives in external components, a change to a core interface can ripple into every plugin that implements it, including third-party ones such as the LiteDB storage plugin hosted outside the main repository. Pinning versions and reading the release notes before moving between r5.x tags is cheaper than discovering an interface change at build time.

Editorial conclusion

Adopt BotSharp if your business logic already lives in C# and you want agent routing, conversation state and RAG behind interfaces you can swap, rather than a hosted agent service. Do not adopt it if you need a managed runtime, a Python or TypeScript stack, or a project with recent commits: the last push was on 2025-10-17. Verify first that the WebStarter project runs with your .NET SDK, that your chosen LLM plugin is present in the repository, and that you accept Apache-2.0 obligations for any plugin you ship.

Frequently asked questions

What is BotSharp used for?

It is an open source machine learning framework for building an AI bot platform, aimed at connecting LLMs to an existing application focused on your business. The README frames it around natural language understanding, computer vision and audio processing for intelligent assistants in information systems.

How is BotSharp different from the Microsoft Bot Framework?

The repository does not mention the Microsoft Bot Framework, so no direct comparison is documented. What the README does describe is a .NET framework built around LLM agent profiles, routing and planning, RAG and messaging channels, with MCP integration listed as complete on the roadmap.

What kinds of chatbots can you build with BotSharp?

The README lists multi-agent conversation with state management, multiple LLM planning approaches, memory-based vector search for RAG, and integrations with channels such as Facebook Messenger, Slack and Telegram through an abstract rich content structure. The FAQ in the repository does not classify chatbots into types.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes