REST-like routing over named pipes.

Expose lightweight HTTP-style APIs from background services without running a full HTTP server. ArgusTransfer brings the ARGUS/1.0 protocol, familiar verbs, status codes, and middleware to .NET inter-process communication on Windows, Linux, and macOS.

Quality Gate Coverage Maintainability Reliability Security Build Status Apache 2.0

What is it?

HTTP for processes that don’t need a web server.

Some services need an internal API but a full HTTP server is too heavy or simply not allowed. ArgusTransfer gives you the request/response model you already know, transmitted over named pipes in a tight, text-based protocol called ARGUS/1.0. Routing, middleware, dependency injection, streaming bodies: everything you reach for in ASP.NET, sized for background work.

RESTful routing

Typed verbs (GET, POST, PUT, PATCH, DELETE, HEAD), route templates, and parameter constraints. Build endpoints the way you build minimal APIs.

Cross-platform IPC

Native named pipes on Windows, Unix domain sockets on Linux and macOS, the same code on all three. No TCP socket, no HTTP listener, no firewall surface to harden.

Familiar status codes

Standard 2xx / 4xx / 5xx semantics, automatic 404 on no match, 501 on missing verb: behavior you already know.

Middleware pipeline

Compose global and per-endpoint middleware for logging, authorization, correlation, or anything else your handlers shouldn’t care about.

Streaming bodies

Chunked transfer encoding for large or open-ended payloads, with a configurable cap to defend against hostile senders.

.NET 10, modern stack

Built on Microsoft.Extensions.Hosting and DI, async/await throughout, with SBOM and provenance shipped on every release.

In ten lines

A pipe that answers HTTP.

Register a module, host the pipe, and you have a routable endpoint other processes can call.

public class HelloModule : IArgusModule
{
    public void AddRoutes(IArgusRouteBuilder app)
    {
        app.MapGet("/hello", context =>
        {
            context.Response = new ArgusResponse
            {
                StatusCode = ArgusStatusCode.Ok,
                Body       = "Hello from ArgusTransfer!"
            };
            return Task.CompletedTask;
        });
    }
}

See the full quick start →