Arcturus.DevHost.Hosting
2026.3.15.316
dotnet add package Arcturus.DevHost.Hosting --version 2026.3.15.316
NuGet\Install-Package Arcturus.DevHost.Hosting -Version 2026.3.15.316
<PackageReference Include="Arcturus.DevHost.Hosting" Version="2026.3.15.316" />
<PackageVersion Include="Arcturus.DevHost.Hosting" Version="2026.3.15.316" />
<PackageReference Include="Arcturus.DevHost.Hosting" />
paket add Arcturus.DevHost.Hosting --version 2026.3.15.316
#r "nuget: Arcturus.DevHost.Hosting, 2026.3.15.316"
#:package Arcturus.DevHost.Hosting@2026.3.15.316
#addin nuget:?package=Arcturus.DevHost.Hosting&version=2026.3.15.316
#tool nuget:?package=Arcturus.DevHost.Hosting&version=2026.3.15.316
Arcturus.DevHost.Hosting
The Arcturus.DevHost.Hosting library provides a lightweight orchestration framework for running multiple .NET projects and executables together in a local development environment. It simplifies the developer inner loop by managing the lifecycle of multiple services, applications, and processes from a single orchestrator.
Overview
This library enables you to:
- Orchestrate multiple .NET projects: Launch and manage multiple .NET applications simultaneously
- Run arbitrary executables: Start and monitor external processes like npm, docker, or any other command-line tools
- Centralized logging: Configure and view logs from all managed resources in one place
- Process lifecycle management: Automatic process cleanup and graceful shutdown handling
- Environment configuration: Set custom URLs and environment variables per resource
Key Components
OrchestratorHost
The main host that manages the lifecycle of all registered resources (projects and executables). It handles:
- Starting and stopping processes
- Signal handling (CTRL+C, process termination)
- Job object management for process cleanup
- Coordinating logging across all resources
OrchestratorHostBuilder
A fluent builder API for configuring your orchestrator:
var host = OrchestratorHostBuilder.Create()
.AddProject<MyApiProject>(project =>
{
project.WithUrls("http://localhost:5000");
project.WithEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development");
})
.AddExecutable("npm", "run dev", workingDirectory: "./frontend")
.ConfigureLogging(logging =>
{
logging.AddConsole();
})
.Build();
await host.RunAsync();
Resources
- ProjectResource: Represents a .NET project with metadata, URLs, and environment variables
- ExecutableResource: Represents an external executable with arguments and working directory
- IResource: Common interface for all managed resources
Usage
1. Define Project Metadata
Implement IProjectMetadata for each project you want to orchestrate:
public class MyApiProjectMetadata : IProjectMetadata
{
public string ProjectPath => "path/to/MyApi/MyApi.csproj";
public string ProjectName => "MyApi";
}
2. Build and Run the Orchestrator
using Arcturus.DevHost.Hosting;
var host = OrchestratorHostBuilder.Create()
.AddProject<MyApiProjectMetadata>()
.AddProject<MyWebAppMetadata>(project =>
{
project.WithUrls("http://localhost:3000");
})
.AddExecutable("npm", "run dev", "./client-app")
.ConfigureLogging(logging =>
{
logging.AddConsole();
logging.SetMinimumLevel(LogLevel.Information);
})
.Build();
await host.RunAsync();
3. Graceful Shutdown
The orchestrator automatically handles shutdown signals and ensures all child processes are terminated cleanly.
Features
- Job Object Management: Uses Windows Job Objects to ensure child processes are terminated when the orchestrator exits
- Cancellation Support: Integrates with CancellationToken for graceful shutdown
- Extensible Logging: Supports any Microsoft.Extensions.Logging provider
- Fluent Configuration: Clean and intuitive builder pattern
Use Cases
- Running a web API alongside a frontend development server
- Starting multiple microservices for local testing
- Orchestrating background workers, databases, and APIs together
- Simplifying complex multi-project development environments
Related Projects
- Arcturus.DevHost.Sdk: Core SDK types and abstractions
- Arcturus.DevHost.SourceGenerator: Code generation for project metadata
- Arcturus.DevHost.OrchestratorTemplate: Project template for creating orchestrators
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
-
net10.0
- Microsoft.Extensions.Logging (>= 10.0.4)
-
net9.0
- Microsoft.Extensions.Logging (>= 10.0.4)
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 |
|---|---|---|
| 2026.3.15.316 | 37 | 3/15/2026 |
| 2026.3.12.308 | 68 | 3/12/2026 |
| 2026.3.11.295 | 76 | 3/11/2026 |
| 2026.3.11.291 | 76 | 3/11/2026 |
| 2026.3.9.275 | 82 | 3/9/2026 |
| 2026.3.9.271 | 82 | 3/9/2026 |
| 2026.3.9.269 | 79 | 3/9/2026 |
| 2026.3.7.268 | 77 | 3/7/2026 |
| 2026.2.26.266 | 89 | 2/26/2026 |
| 2026.2.25.258 | 90 | 2/25/2026 |
| 2026.2.25.257 | 85 | 2/25/2026 |
| 2026.2.25.256 | 90 | 2/25/2026 |
| 2026.2.25.255 | 91 | 2/25/2026 |
| 2026.2.25.253 | 79 | 2/25/2026 |
| 2026.2.25.252 | 90 | 2/25/2026 |
| 2026.2.23.242 | 90 | 2/23/2026 |
| 2026.1.10.32 | 98 | 1/28/2026 |
| 2026.1.10.30 | 99 | 1/28/2026 |
| 2026.1.10.28 | 97 | 1/28/2026 |
| 2025.1.28.25 | 95 | 1/28/2026 |