Skip to main content

Migrating from Other .NET Agent Frameworks

Coming from Semantic Kernel, Microsoft Agent Framework (MAF), or AutoGen? The core ideas map closely. This page gives you the concept-to-concept translation so you can get oriented quickly.

Concept mapping

Your frameworkJacquard.NET equivalentNotes
Kernel / AgentRuntimeAgentThe central object. Holds model, tools, system prompt.
Plugin / SkillTool class with [Tool]-decorated methodsMark the class partial, add [Tool] to methods. The source generator handles the rest at compile time.
KernelFunction / AgentToolITool (generated)You don't implement ITool directly — the source generator emits it from your [Tool] method.
ChatHistory / ConversationHistoryISessionManagerIn-memory by default. Swap in FileSessionManager or AgentCoreSessionManager for persistence.
PlannerEvent loopNo separate planner. The model decides which tools to call and when to stop.
Streamingagent.StreamAsync(...)IAsyncEnumerable<StreamEvent>Yields TextDeltaEvent, ToolCallEvent, ToolResultEvent as they arrive.
Filters / MiddlewareHookRegistryRegister typed hooks for BeforeToolCall, AfterToolCall, BeforeModelCall, etc.
Multi-agentJacquard.MultiAgentPipeline, parallel fan-out, graph with conditional routing, agent-as-tool.
Process FrameworkGraph orchestrationGraphBuilder with typed edge conditions.

Key differences

No planner step. Jacquard.NET is model-driven: the LLM decides which tools to call and when to stop. You don't configure a planner or a plan format. This simplifies the code but means the model's reasoning quality directly affects behavior.

Compile-time tool schema. The [Tool] attribute triggers a Roslyn source generator. There is no runtime reflection, no KernelPlugin.CreateFromType<T>(), no dynamic discovery. The tool schema is baked into the binary at build time. This is what makes NativeAOT work.

One loop, not a pipeline. The event loop runs until EndTurn. You don't compose a chain of steps — you give the agent tools and let the model decide the sequence. For multi-step workflows with explicit ordering, use the Graph or Pipeline patterns in Jacquard.MultiAgent.

Open protocols. MCP (Model Context Protocol) and A2A (Agent-to-Agent) are first-class. If you're building agents that need to interop with Python or TypeScript Strands agents, A2A is the bridge.

Getting started

The Getting Started guide and Concepts: Agent & Event Loop are the fastest path to a working agent. Most developers coming from other frameworks are productive within an hour.

Questions? Start a thread in GitHub Discussions.