Semantic Kernel: Microsoft's Agent Orchestration SDK Faces a Successor
Semantic Kernel connects application code with language models, prompts, tools, memory, and agent workflows.
At a glance
- What is it?
- Semantic Kernel is a model-agnostic SDK for building AI agents and multi-agent systems, now superseded by Microsoft Agent Framework. This review covers its architecture, setup, and the migration question.
- Who is it for?
- Adopt Semantic Kernel only if you are already invested in its API and cannot move immediately. New projects should start with Microsoft Agent Framework 1.0, which the README declares as the production-ready successor with stable APIs and long-term support.
- Can I use it commercially?
- Yes. MIT 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 5 days 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 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The Successor Announcement Changes the Evaluation
The README also links to a migration guide from Semantic Kernel to Agent Framework. That guide is the key document for anyone with existing Semantic Kernel code. It will tell you what changes, what breaks, and what stays the same. Without reading it, you cannot estimate the cost of moving. The existence of a migration guide suggests that the APIs are not identical, otherwise no guide would be needed. Plan for a real porting effort, not a rename.
What Semantic Kernel Actually Does
The SDK is not a model itself. It is a wrapper. You connect it to OpenAI, Azure OpenAI, Hugging Face, NVidia, or local models via Ollama, LMStudio, or ONNX. That flexibility is the main selling point. You can swap providers without rewriting your agent logic. The cost is that you are tied to Semantic Kernel's abstractions. If those abstractions do not match your needs, you have to fight the framework.
Installation and First Steps: Commands That Work
The Python quickstart is short. You create a ChatCompletionAgent with a service and instructions, then call get_response. The .NET version uses Kernel.CreateBuilder and AddAzureOpenAIChatCompletion. Both are straightforward. The README also shows a plugin example where a Python class uses a kernel_function decorator. That is the mechanism for giving an agent custom tools. The plugin returns a string, and the agent can call it. This is the core extension point. If you need to integrate existing code, you wrap it in a plugin class.
The Plugin System: Where the Real Power Lies
The plugin system is also where the trade-offs appear. The model has to decide when to call a function, and that decision depends on the description. If your descriptions are vague, the agent will make wrong calls. The README does not discuss how to debug that. You are on your own for prompt engineering. Also, the plugin examples are simple. Real-world plugins will have parameters, return complex objects, and need error handling. The SDK supports that, but the documentation is thin on those cases.
Multi-Agent Orchestration: The Ambitious Part
This is also where the complexity grows. Multi-agent systems are hard to debug. If two agents disagree or one produces a bad response, where do you look? The README does not cover observability or tracing for multi-agent flows. The 'enterprise ready' claim mentions observability, but there are no details. You have to assume that logging is your responsibility. For a production system, that is a gap. The Process Framework is mentioned as a way to model structured business processes, but the README gives no example. That is a feature you would need to research separately.
Limitations and When It Is the Wrong Tool
The wrong tool scenario: if you need a simple chatbot with no tool use, Semantic Kernel is overkill. You can call the model API directly. If you need a complex multi-agent system with tight control over routing and state, Semantic Kernel might not give you enough visibility. And if you are starting fresh, the wrong tool is Semantic Kernel itself, because the successor exists.
The Alternative: Microsoft Agent Framework
The difference in approach is that Agent Framework is built for the agent-centric world from the start, while Semantic Kernel grew from a kernel abstraction. The README's language reflects that: Agent Framework is about 'orchestrating a fleet of specialized agents'. Semantic Kernel was about 'connecting application code with language models'. That is a shift from a tool to a platform. For a new project, the platform is the better foundation.
Maintenance and Upgrade Cost
The maintenance cost depends on which path you take. If you stay on Semantic Kernel, you will need to track releases like dotnet-1.80.0 and python-1.44.1. Those are frequent, which means active maintenance, but also potential API changes. The README does not promise API stability for Semantic Kernel. The successor does. If you migrate to Agent Framework, the cost is the migration effort. The migration guide exists, but it will take time to port your agents, plugins, and process definitions. The license is MIT, which is permissive. You can use it commercially without restrictions. That is a positive. But the license does not protect you from the strategic shift. The project is not archived, but its future is tied to the successor. Verify that your specific connectors and plugins are covered by the migration guide before committing. The README links to that guide, so start there.
Editorial conclusion
Adopt Semantic Kernel only if you are already invested in its API and cannot move immediately. New projects should start with Microsoft Agent Framework 1.0, which the README declares as the production-ready successor with stable APIs and long-term support. If you stay with Semantic Kernel, verify that your current model providers and plugins are covered by the migration guide, and pin your dependency to a specific release (for example dotnet-1.80.0) because the project may slow down as development shifts. Do not expect new features here; expect maintenance only.
Community notes