TimeWarp.Nuru.Daemon
4.0.0-beta.5
Prefix Reserved
dotnet add package TimeWarp.Nuru.Daemon --version 4.0.0-beta.5
NuGet\Install-Package TimeWarp.Nuru.Daemon -Version 4.0.0-beta.5
<PackageReference Include="TimeWarp.Nuru.Daemon" Version="4.0.0-beta.5" />
<PackageVersion Include="TimeWarp.Nuru.Daemon" Version="4.0.0-beta.5" />
<PackageReference Include="TimeWarp.Nuru.Daemon" />
paket add TimeWarp.Nuru.Daemon --version 4.0.0-beta.5
#r "nuget: TimeWarp.Nuru.Daemon, 4.0.0-beta.5"
#:package TimeWarp.Nuru.Daemon@4.0.0-beta.5
#addin nuget:?package=TimeWarp.Nuru.Daemon&version=4.0.0-beta.5&prerelease
#tool nuget:?package=TimeWarp.Nuru.Daemon&version=4.0.0-beta.5&prerelease
TimeWarp.Nuru.Daemon
Run a TimeWarp.Nuru app as a long-lived local server and have its own CLI forward routes to it. State that is slow to load, such as a Roslyn workspace, is loaded once in the server. Later CLI calls and MCP tools/call requests use it while it is warm. You write no client, transport, or forwarding handler per route.
using TimeWarp.Nuru;
NuruApp app = NuruApp.CreateBuilder()
.DiscoverEndpoints()
.AddServeRoute(idleTimeoutSeconds: 600)
.Build();
return await app.RunAsync(args);
myapp --daemon count hello # start the server in the background and forward
myapp count hello # forwarded while the server runs; local when it does not
myapp --no-daemon count x # always local
myapp serve --status # report this build's server, and other builds' servers
myapp serve --stop # stop this build's server
The server listens on a per-user Unix domain socket, never a TCP port. The forwarded call runs the same generated matching, binding, behaviors and handler, and the CLI prints the same output and returns the same exit code. Use [LocalOnly] or .LocalOnly() for routes that must run in the CLI process.
Each build of the app has its own socket and server, so a dnx copy and an installed tool (or a local build) never stop each other's server or cancel each other's calls. A server nobody calls stops after its idle timeout. On a fixed socket shared by two builds, a client leaves the other build's server running, and with --daemon it reports both builds.
Calls run concurrently, each with its own output, exit code, working directory and service scope (NuruCallContext). In a handler, set NuruCallContext.CurrentExitCode (not Environment.ExitCode) and resolve paths with NuruCallContext.GetFullPath. Mark a handler that is not thread-safe [Exclusive] or .Exclusive(), or pass AddServeRoute(exclusiveCalls: true) to run every call one at a time.
See Served apps.
| Product | Versions 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. |
-
net10.0
- TimeWarp.Nuru (>= 4.0.0-beta.5)
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 |
|---|---|---|
| 4.0.0-beta.5 | 0 | 10/21/2026 |
| 4.0.0-beta.4 | 34 | 10/20/2026 |
| 4.0.0-beta.3 | 42 | 10/19/2026 |
| 4.0.0-beta.2 | 50 | 10/19/2026 |