AppPipe.Hosting 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package AppPipe.Hosting --version 1.1.0
                    
NuGet\Install-Package AppPipe.Hosting -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AppPipe.Hosting" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AppPipe.Hosting" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="AppPipe.Hosting" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AppPipe.Hosting --version 1.1.0
                    
#r "nuget: AppPipe.Hosting, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AppPipe.Hosting@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AppPipe.Hosting&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=AppPipe.Hosting&version=1.1.0
                    
Install as a Cake Tool

AppPipe.Hosting 🚀

NuGet Version NuGet Downloads License

AppPipe (also known as Open-Aspire) is a lightweight, on-premises alternative to the .NET Aspire dashboard and gateway runner. It is designed to orchestrate, route, and collect telemetry for microservice applications deployed on-premises (such as IIS on Windows or systemd on Linux).

With AppPipe, you get a beautiful, unified developer dashboard and service discovery proxy without the overhead of cloud-only architectures.


🌟 Features

  • 📊 OpenTelemetry Collector & Dashboard: Collects OTLP traces, logs, and metrics in-memory from your services. Displays them in a gorgeous Blazor dashboard (complete with Light/Dark modes, trace waterfall flamegraphs, structured console logs, and metric charts).
  • 🔀 Unified Gateway & Routing: Powered by YARP (Yet Another Reverse Proxy), AppPipe hosts a central routing gateway that automatically maps and proxies requests to your backend microservices.
  • 🔌 Dynamic Port Allocation: Automatically assigns free ports to your applications during local runs or deployment pipelines, preventing port conflict issues.
  • 🏢 Native IIS & systemd Integration: Out-of-the-box deployment module using ModularPipelines that automates publishing, creating AppPools, registering IIS sub-applications, setting environment variables, and handling systemd service setups.
  • ⚡ Dual Render Modes (Resource-Optimized):
    • Interactive (WebSocket-based): Real-time, live-updating metrics and traces.
    • SSR (Server-Side Rendered): WebSockets are disabled to minimize CPU and memory footprint, utilizing native forms and base-relative routing. Perfect for production or restricted IIS host environments.

🏛️ Architecture

graph TD
    Client(Browser/Client) -->|HTTP| Gateway

    subgraph User's Application Space
        Backend1[Backend Microservice A]
        Backend2[Backend Microservice B]
    end

    subgraph AppPipe.Hosting NuGet Package
        Gateway[AppPipe Gateway / YARP]
        TelemetryPort[Gateway Telemetry Port]
        Store[In-Memory Telemetry Store]
        Dashboard[Blazor Dashboard UI]
        
        TelemetryPort --> Store
        Store --> Dashboard
    end

    Gateway -->|Service Discovery Routing| Backend1
    Gateway -->|Service Discovery Routing| Backend2
    Backend1 -->|OTLP gRPC| TelemetryPort
    Backend2 -->|OTLP gRPC| TelemetryPort

📦 NuGet Package Setup

AppPipe is published as a NuGet package. You can view the author profile at nuget.org/profiles/sitholewb.

Install the Package

dotnet add package AppPipe.Hosting

🚀 Quick Start

1. Define your App Topology

Configure your services and their relationships in your entry point:

using AppPipe.Hosting;

var builder = AppPipeApp.CreateBuilder(args);

// Define a backend worker microservice
builder.AddProject("BackendWorker", projectPath: "../BackendWorker/BackendWorker.csproj");

// Define a frontend API that communicates with the backend
builder.AddProject("FrontendApi", projectPath: "../FrontendApi/FrontendApi.csproj")
       .WithReference("BackendWorker"); // Service discovery environment variables injected automatically

var app = builder.Build();

// Run the host using DevHostRunner
var runner = new DevHostRunner(app);
await runner.RunAsync();

2. Configure telemetry in your Microservices

In your microservices, register the standard OpenTelemetry exporter. They will automatically detect the telemetry endpoints exposed by the AppPipe Gateway.

builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => tracing
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation()
        .AddOtlpExporter()) // Exports to AppPipe telemetry port
    .WithMetrics(metrics => metrics
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation()
        .AddOtlpExporter());

🛠️ Configuration

You can customize the dashboard and gateway behavior in your appsettings.json or environment variables:

{
  "Dashboard": {
    "UseWebSockets": false
  }
}
Key Type Default Description
Dashboard:UseWebSockets bool false Set to true to enable real-time UI updates via WebSockets. Set to false for resource-friendly static HTML rendering.

💾 Customizing the Telemetry Database

By default, AppPipe retains telemetry in a circular in-memory buffer (InMemoryTelemetryStore). For production environments, you can plug in any database (such as SQLite, PostgreSQL, SQL Server, or ClickHouse) by implementing the ITelemetryStore interface and registering it:

builder.ConfigureGateway(gatewayBuilder =>
{
    gatewayBuilder.Services.AddSingleton<ITelemetryStore, SqliteTelemetryStore>();
});

For complete step-by-step code examples, see the Custom Telemetry Database Configuration Guide.


🏢 On-Premises Deployment

AppPipe includes a built-in deployment module to automate builds and deploy directly to IIS or systemd.

Deploying to IIS (Windows Server)

To deploy the gateway and microservices as sub-applications under a default IIS site:

dotnet run --project YourDevHost.csproj -- deploy /app-pipe-host-test

The pipeline automatically:

  1. Stops existing Application Pools to unlock files.
  2. Compiles your projects in Release mode.
  3. Automatically sets up dedicated AppPools and sub-applications in IIS.
  4. Generates unique tokens and environments to authenticate intra-app loopback telemetry safely.
  5. Restarts the Application Pools.

👤 Author

Developed and maintained by Welcome Bonginhlahla Sithole (NuGet Profile).

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.1 0 6/24/2026
1.5.0 0 6/24/2026
1.4.13 0 6/24/2026
1.4.4 48 6/23/2026
1.4.3 44 6/23/2026
1.4.2 83 6/22/2026
1.4.1 84 6/22/2026
1.4.0 85 6/22/2026
1.3.9 77 6/22/2026
1.3.8 82 6/21/2026
1.3.6 85 6/21/2026
1.3.0 93 6/21/2026
1.2.1 85 6/21/2026
1.2.0 104 6/21/2026
1.1.0 86 6/21/2026
1.0.0 86 6/21/2026