Skip to content
Mark Lauter edited this page May 17, 2026 · 5 revisions

Plumber MSL Armory

Plumber

Another weapon from the MSL Armory

Middleware pipelines for host-free .NET projects. The same shape ASP.NET Core gives web apps — request, response, a chain of steps with DI and configuration — for console apps, AWS Lambdas, Azure Functions, queue consumers, file processors, and anything else that lives outside a host.

dotnet add package MSL.Plumber.Pipeline
using Plumber;

using var handler = RequestHandlerBuilder
    .Create<string, string>()
    .Build();

handler.Use((context, next) =>
{
    context.Response = $"Hello, {context.Request}!";
    return next(context);
});

var greeting = await handler.InvokeAsync("World");
Console.WriteLine(greeting); // Hello, World!

Where to start

New to middleware pipelines? Start with the Concepts page — it explains the mental model from scratch, then walks through a realistic build in the Tutorial, and finishes with a guided tour of the Sample.Cli walkthrough.

Already familiar with the shape (ASP.NET Core middleware, MediatR, similar)? Jump into Building a Pipeline, then Middleware and Request Lifecycle.

Looking for a specific scenario? The Recipes section has full walkthroughs:

Migrating from v2.x? See Migration. v3 reshaped the public API around concrete types and explicit configuration; the page covers each break with before/after.

Scope of this wiki

These pages document Plumber v3.x. The v2.x README is preserved on the v2.3.3 release tag for anyone still on the previous line.

Plumber targets .NET 10. The README in the repository root is the canonical short-form reference; this wiki expands on it with beginner content, recipes, and per-type API reference.

Clone this wiki locally