Skip to content

MAF Workflows vs Strategos: Framework Comparison

A detailed comparison of Microsoft Agent Framework Workflows and Strategos for production AI agent orchestration.


Executive Summary

Microsoft Agent Framework (MAF) Workflows and Strategos both solve the fundamental challenge of building reliable AI agent systems, but they take fundamentally different approaches. MAF Workflows provides a managed, Azure-native solution with built-in multi-agent patterns and serverless hosting, while Strategos offers a cloud-agnostic, event-sourced architecture with intelligent agent selection and complete audit trails.

MAF Workflows excels in Azure-native environments where serverless scale-to-zero economics matter, and where pre-built multi-agent patterns (Group Chat, Handoff, Magentic) accelerate development. Its Bulk Synchronous Parallel (BSP) execution model provides deterministic, reproducible execution with automatic checkpointing at superstep boundaries.

Strategos differentiates through its event-sourcing foundation, providing full audit trails that answer "what did the agent see?" at any point in history. Its Thompson Sampling agent selection learns optimal agent-to-task routing over time. The fluent DSL with compile-time source generation catches workflow errors before runtime, and the Wolverine/Marten infrastructure provides battle-tested durability without Azure lock-in.

Key Differentiators

AspectMAF WorkflowsStrategos
Execution ModelBSP supersteps (synchronized rounds)Message-driven saga orchestration
State PersistenceCheckpoint snapshots at superstep boundariesFull event sourcing (every decision recorded)
Agent SelectionManual or declarative edge routingThompson Sampling (learns optimal routing)
HostingAzure Functions + Durable Task SchedulerAny .NET host (Wolverine/Marten on PostgreSQL)
Multi-Agent Patterns5 built-in (Group Chat, Handoff, etc.)DSL-composable (Fork/Join, Branch, Loop)
Compile-Time SafetyRuntime validationSource-generated state machines with diagnostics
Human-in-Loop Cost$0 during wait (serverless)Minimal (saga paused, no active resources)
ObservabilityDTS Dashboard + OpenTelemetryMarten projections + OpenTelemetry

Quick Decision Guide

Choose MAF Workflows if:

  • You're already invested in Azure
  • Need managed infrastructure with minimal ops
  • Want pre-built multi-agent orchestration patterns
  • Human approvals may take hours/days (serverless economics)

Choose Strategos if:

  • You need cloud portability or on-premises deployment
  • Complete audit trails are regulatory requirements
  • You want the system to learn optimal agent routing
  • Compile-time workflow validation is valuable
  • You have complex compensation/rollback requirements

Capability Comparison Matrix

1. Execution Model

DimensionMAF WorkflowsStrategos
ModelBulk Synchronous Parallel (BSP)Message-driven Saga
ParallelismSynchronized supersteps (barrier at each round)True async (steps run independently)
DeterminismGuaranteed via superstep synchronizationEvent replay produces identical state
Blocking BehaviorSlowest parallel branch blocks allBranches complete independently
Trade-offSimple reasoning, potential latencyComplex reasoning, optimal latency

MAF BSP Model:

Superstep N: All executors run → BARRIER → Checkpoint → Superstep N+1

Every parallel path must complete before any can proceed to the next step.

Strategos Saga Model:

Step A completes → Cascade message → Step B starts immediately
Fork paths run independently, Join aggregates when all complete

No artificial synchronization barriers; natural async flow.

2. State Management

DimensionMAF WorkflowsStrategos
Persistence ModelCheckpoint snapshotsEvent sourcing
What's CapturedCurrent state at superstep boundaryEvery state transition as event
RecoveryResume from last checkpointReplay events to any point
Audit Question"Where is it now?""How did it get there?"
StorageDurable Task Scheduler (managed)PostgreSQL via Marten
Time-TravelLimited (checkpoint versions)Full (any event, any timestamp)

Event Sourcing Advantage:

Strategos captures:

  • WorkflowStarted with initial state
  • PhaseChanged for every transition
  • StepCompleted with inputs/outputs
  • ContextAssembled (what agent saw)
  • AgentDecisionEvent with confidence, model version, tokens
  • ApprovalRequested/ApprovalReceived
  • CompensationExecuted

MAF captures checkpoint snapshots—sufficient for recovery but not for understanding the decision journey.

3. Durability & Fault Tolerance

DimensionMAF WorkflowsStrategos
BackendDurable Task Scheduler (Azure managed)Wolverine + PostgreSQL
Exactly-OnceVia DTS work item semanticsVia transactional outbox
Retry PolicyConfigurable in DTSWolverine retry policies
Resume CapabilityAny Azure Function instanceAny application instance
Operational BurdenManaged (Azure handles it)Self-managed (PostgreSQL required)
Lock-InAzure-specificCloud-agnostic

Both provide strong durability guarantees. The difference is operational: MAF is managed, Strategos is portable.

4. Workflow Definition

DimensionMAF WorkflowsStrategos
Definition StyleDeclarative graph (nodes/edges)Fluent DSL (prose-like)
VocabularyExecutors, Edges, ConditionsSteps, Branch, Fork/Join, Loop
Compile-Time ValidationNone (runtime errors)8 diagnostics via source generator
Generated ArtifactsNonePhase enum, commands, events, saga, transitions
ReusabilityExecutor classesStep classes with DI

Strategos Compile-Time Diagnostics:

CodeDescription
AGWF001Empty workflow name
AGWF002No steps found
AGWF003Duplicate step name (use instance names)
AGWF009Missing StartWith
AGWF010Missing Finally
AGWF012Fork without Join
AGWF014Loop without body

DSL Comparison:

csharp
// MAF Workflows (graph-based)
builder.AddNode<TriageExecutor>("triage");
builder.AddConditionalEdge("triage", "billing", msg => msg.Type == "billing");
builder.AddConditionalEdge("triage", "support", msg => msg.Type == "support");

// Strategos (fluent DSL)
Workflow<ClaimState>.Create("process-claim")
    .StartWith<Triage>()
    .Branch(state => state.ClaimType,
        when: ClaimType.Billing, then: flow => flow.Then<BillingProcess>(),
        when: ClaimType.Support, then: flow => flow.Then<SupportProcess>())
    .Finally<Notify>();

5. Multi-Agent Orchestration

PatternMAF WorkflowsStrategos
SequentialDirect edges (A → B → C).Then<A>().Then<B>().Then<C>()
ParallelFan-out/Fan-in executors.Fork(...).Join<Aggregator>()
ConditionalConditional edges with predicates.Branch(selector, when:...)
Group ChatBuilt-in pattern with managerBuild with Loop + dynamic dispatch
HandoffBuilt-in pattern (mesh routing)Build with Branch + state routing
Magentic (Planner)Built-in patternBuild with Loop + planning step
IterationLoop via edge back to previous.RepeatUntil(condition, maxIterations, body)

MAF's Built-in Patterns:

  • Group Chat: Manager selects next speaker from specialist pool
  • Handoff: Agents self-organize via dynamic routing
  • Magentic: Planner decomposes and delegates to specialists

Strategos's Composable Approach: The DSL primitives (Branch, Fork/Join, RepeatUntil) compose to build any pattern. No special constructs needed—patterns emerge from composition.

6. Intelligent Agent Selection

DimensionMAF WorkflowsStrategos
Selection MethodManual (Group Chat manager) or declarative edgesThompson Sampling (multi-armed bandit)
LearningNoneOnline learning from outcomes
PersonalizationNonePer-category beliefs
Exploration/ExploitationN/AAutomatic (Beta distribution sampling)

Thompson Sampling in Strategos:

csharp
// Configure agent selection
services.AddAgentSelection(options => options
    .WithPrior(alpha: 2, beta: 2)  // Uninformative prior
    .WithCategories(TaskCategory.Analysis, TaskCategory.Coding));

// Select agent for task
var selection = await selector.SelectAgentAsync(new AgentSelectionContext
{
    AvailableAgentIds = ["analyst", "coder", "researcher"],
    TaskDescription = "Analyze the sales data trends"
});

// Record outcome for learning
await selector.RecordOutcomeAsync(
    selection.SelectedAgentId,
    selection.TaskCategory,
    AgentOutcome.Succeeded(confidenceScore: 0.85));

The system learns which agents perform best for which task categories over time—no manual tuning required.

7. Human-in-the-Loop

DimensionMAF WorkflowsStrategos
PatternRequest/Response (first-class)AwaitApproval DSL
Wait Cost$0 (serverless scale-to-zero)Minimal (saga persisted, no compute)
Timeout HandlingBuilt-in with configurable escalationDSL-declared with OnTimeout path
Event NotificationRequestInfoEvent emittedApprovalRequested event stored
Response Submissionworkflow.send_response(request_id, response)Wolverine message to saga

MAF Request/Response:

python
response = await ctx.request_info(
    request_data=ApprovalRequest(item="Purchase $5000"),
    response_type=bool,
    timeout=timedelta(hours=24)
)

Strategos AwaitApproval:

csharp
.AwaitApproval<LegalTeam>(options => options
    .WithTimeout(TimeSpan.FromDays(2))
    .OnTimeout(flow => flow.Then<EscalateToManager>())
    .OnRejection(flow => flow.Then<HandleRejection>()))

Both handle long-running human workflows well. MAF's serverless model provides true $0 wait cost.

8. Observability

DimensionMAF WorkflowsStrategos
TracingNative OpenTelemetry spansOpenTelemetry via Wolverine
DashboardDTS Dashboard (visual flow, history)Custom (Marten projections)
Conversation HistoryFull chat log in dashboardEvent-sourced ChatMessageRecorded
Tool Call VisibilityInputs/outputs in dashboardEvents + projection
MetricsBuilt-in (processing time, counts)Custom projection-based

DTS Dashboard Capabilities:

  • Visual graph showing agent interactions
  • Full conversation history for any session
  • Tool call inputs/outputs
  • Execution timeline
  • Queue status and performance metrics

This is a significant MAF advantage—purpose-built debugging UI versus DIY projections.

9. Resource Management

DimensionMAF WorkflowsStrategos
Budget EnforcementNot built-inIBudgetGuard abstraction
Token TrackingManual via agent implementationAgentDecisionEvent captures tokens
Loop DetectionNot built-inILoopDetector with configurable thresholds
Cost AttributionManualPer-workflow event trail

Strategos Budget Enforcement:

csharp
public interface IBudgetGuard
{
    Task<bool> CanProceedAsync(string workflowId, ResourceBudget budget);
    Task RecordUsageAsync(string workflowId, ResourceUsage usage);
}

Prevents runaway agent costs—critical for production deployments.

10. Error Handling & Recovery

DimensionMAF WorkflowsStrategos
Retry PolicyConfigurable in DTSWolverine retry policies
CompensationManual (reverse event application).Compensate<T>() DSL with automatic ordering
Step-Level HandlersNot built-in.OnFailure(f => f.When<Exception>().Then<Handler>())
Workflow-Level FallbackVia error edges.OnFailure(flow => flow.Then<Fallback>())

Strategos Compensation:

csharp
.Then<ChargePayment>()
    .Compensate<RefundPayment>()
.Then<ReserveInventory>()
    .Compensate<ReleaseInventory>()

On failure, compensations run in reverse order automatically.

11. Deployment & Hosting

DimensionMAF WorkflowsStrategos
Hosting OptionsAzure Functions onlyAny .NET host
ScalingServerless (0 to thousands)Application-dependent
Local DevelopmentAzurite + DTS Emulator (Docker)PostgreSQL + app
Cloud PortabilityAzure onlyAny cloud or on-premises
Operational ModelManaged infrastructureSelf-managed

Gap Analysis

MAF Features to Consider for Strategos

FeatureMAF CapabilityGap SeverityRecommendation
Group Chat PatternBuilt-in manager + specialist topologyMediumAdd as orchestration template in docs
Handoff PatternDynamic agent-to-agent routingMediumAdd as orchestration template in docs
Magentic PatternPlanner-driven task decompositionLowCan be built with current DSL (Loop + Branch)
Visual DashboardDTS dashboard for debuggingHighConsider Marten Admin UI or custom projection viewer
Request/Response PrimitiveFirst-class external waitLowAwaitApproval covers most cases
Serverless Economics$0 wait costMediumDocument cost comparison; saga pause is low-cost

Strategos Advantages to Preserve

FeatureWhy It Matters
Thompson SamplingUnique—MAF has no intelligent selection. Enables learning optimal agent routing.
Event SourcingFull audit trail vs snapshot checkpoints. Critical for compliance and debugging.
Compile-Time Validation8 diagnostics catch errors before runtime. Faster development cycle.
Loop Detection/RecoveryProduction-critical for preventing stuck agent loops.
Budget GovernanceResource control prevents runaway costs. Essential for enterprise.
Cloud-AgnosticFreedom from Azure lock-in. Deploy anywhere with PostgreSQL.
Confidence RoutingRoute low-confidence decisions to humans automatically.
Fluent DSLReads like prose. Lower cognitive load than graph APIs.
Compensation HandlersAutomatic reverse-order execution for rollback.

Targeted Use Case Guide

Choose MAF Workflows When:

  1. Azure-Native Environment

    • Already using Azure Functions, Cosmos DB, Azure AI
    • Azure identity and networking established
    • Team familiar with Azure deployment patterns
  2. Serverless Economics Matter

    • Workflows with long human wait times (hours/days)
    • Highly variable load (burst traffic)
    • Cost optimization is primary concern
  3. Pre-Built Patterns Accelerate Delivery

    • Group Chat for iterative agent refinement
    • Handoff for customer service routing
    • Need patterns working quickly without custom implementation
  4. Managed Infrastructure Preferred

    • Limited DevOps capacity
    • Don't want to manage PostgreSQL
    • Prefer Azure's operational model
  5. Visual Debugging is Critical

    • Non-technical stakeholders need visibility
    • DTS dashboard provides immediate value
    • Conversation history browsing required

Choose Strategos When:

  1. Cloud Portability Required

    • Multi-cloud strategy
    • On-premises deployment requirements
    • Avoiding vendor lock-in
  2. Complete Audit Trails

    • Regulatory compliance (HIPAA, SOX, GDPR)
    • Need to answer "what did the agent see?"
    • Time-travel debugging for AI decisions
    • Legal discovery requirements
  3. Intelligent Agent Selection

    • Multiple agents with overlapping capabilities
    • Want system to learn optimal routing
    • Exploration/exploitation balance matters
  4. Compile-Time Safety

    • Large workflow definitions
    • Team values catching errors early
    • Frequent workflow refactoring
  5. Complex Error Recovery

    • Multi-step transactions requiring rollback
    • Step-specific failure handling
    • Compensation logic with ordering guarantees
  6. Budget Governance

    • Cost control for LLM usage
    • Per-workflow resource limits
    • Preventing runaway agent loops

Consider Both When:

  1. Hybrid Scenarios

    • Azure for some workflows (human-heavy, visual debugging)
    • Strategos for others (audit-critical, learning-based)
  2. Migration Path

    • Start with Strategos for control
    • Migrate specific workflows to MAF when Azure advantages apply
  3. Pattern Inspiration

    • MAF patterns can inform Strategos orchestration templates
    • Both ecosystems evolving—cross-pollination valuable

Summary Matrix

CapabilityMAF WorkflowsStrategosNotes
DurabilityBoth provide strong guarantees
Event Sourcing❌ Snapshots✅ FullKey differentiator
Intelligent Selection✅ ThompsonUnique to Strategos
Visual Dashboard✅ DTS⚠️ DIYMAF advantage
Compile-Time Validation✅ 8 diagnosticsStrategos advantage
Built-in Multi-Agent Patterns✅ 5 patterns⚠️ ComposableMAF faster start
Cloud Portability❌ Azure only✅ AnyStrategos advantage
Serverless Economics✅ $0 wait⚠️ Low costMAF advantage
Compensation Handlers⚠️ Manual✅ DSLStrategos advantage
Budget GovernanceUnique to Strategos
Loop DetectionUnique to Strategos
Human-in-Loop✅ First-class✅ DSLBoth strong
OpenTelemetry✅ Native✅ Via WolverineBoth strong

References

MAF Workflows

Strategos


Comparison based on MAF Workflows documentation (January 2026) and Strategos v2.0 design.

Released under the MIT License.