Herald.DemoApp
0.13.0
dotnet tool install --global Herald.DemoApp --version 0.13.0
dotnet new tool-manifest
dotnet tool install --local Herald.DemoApp --version 0.13.0
#tool dotnet:?package=Herald.DemoApp&version=0.13.0
nuke :add-package Herald.DemoApp --version 0.13.0
Herald.DemoApp
The five-minute getting-started experience for Herald.OSS, the open-source structured-logging core for .NET.
Install it, run it, open the URL it prints, and watch a real Herald.OSS pipeline process live log events. Then program that pipeline — levels, minimum level, flight recorder, enrichers, sinks — from the embedded Live Viewer, and watch your changes take effect on the next event.
Install
dotnet tool install --global Herald.DemoApp
Requires a .NET 8 (or newer) runtime with the ASP.NET Core shared framework. If you build .NET web apps, you already have it.
Run
herald-demo
The console prints one line — the URL to open:
Herald DemoApp is running.
Open http://localhost:5210 in your browser.
Press Ctrl+C to stop.
Open that URL. You land on the Live View tab with log events already flowing. Switch to the Pipeline tab to change how the pipeline behaves; switch to JSON Pipeline to see the live config. No setup, no config files, no build step.
What you are looking at
This is not a mock. A real Herald.OSS pipeline runs inside the tool:
- A source feeds synthetic log events through the canonical
Defaultpipeline strategy. - The pipeline fans out to two real sinks: a console sink (terminal output) and an HTTP-JSON sink that loops back so the browser sees the same stream.
- The Live Viewer programs that pipeline live. Add a level, change the minimum level, toggle the flight recorder, add an enricher — the pipeline rebuilds and the change shows on the next event.
Want to send your own events? POST newline-delimited JSON log envelopes to /api/logs/incoming. The synthetic feed steps aside while a real producer is active, so your events flow through the same pipeline you see on screen.
Flags
The happy path needs none of these. They exist for when you want them.
| Flag | Effect |
|---|---|
--port N |
Bind a specific port. Default: first free port in 5210-5230. |
--url <url> |
Bind a specific URL. |
--no-demo |
Run API-only: no seeded tenant, no synthetic feed, no SPA. |
--spa <path> |
Serve the Live Viewer from a path on disk instead of the embedded copy (for SPA development). |
--no-update-check |
Skip the one-time NuGet index read that detects a newer published version. |
Versions and updates
The startup banner prints which Herald.OSS and which tool version you are running:
Herald DemoApp is running.
Herald.OSS 0.12.11 | Herald.DemoApp 0.12.11
Once per run the tool reads the public NuGet index to see whether a newer version is published. If there is one, it prints the command to get it — a global tool cannot replace its own files while running, so the update is yours to run:
A newer Herald.DemoApp is available: 0.12.12 (patch update; you are running 0.12.11).
dotnet tool update -g Herald.DemoApp
GET /api/system/update-check returns the same answer as JSON.
The check is fail-soft: it times out after two seconds, never blocks startup, and says
nothing at all when the feed is unreachable — an offline machine sees no difference.
The only request is an unauthenticated GET of api.nuget.org, the same one
dotnet tool update makes. No telemetry, nothing about you or your machine leaves the
process. Pass --no-update-check to skip it entirely.
Update / uninstall
dotnet tool update --global Herald.DemoApp
dotnet tool uninstall --global Herald.DemoApp
Note
This is a demo tool, not a production server. It runs with no authentication and a wide-open dev CORS policy by design — it is meant to run on your own machine so you can see how Herald works. Real Herald deployments host the API through Herald.RestApi.Host and configure their own auth and CORS.
Building the release package
Local dev binds the live /e/dev/Herald.OSS sibling source so an edit to the core
shows up in the demo immediately. The published tool must instead bundle the
released Herald.OSS package, so the release pack passes HeraldDemoAppReleaseRef=true.
That flips the FakeServer's own Herald.OSS reference, the two sink references, and the
licensing references onto the released package pinned at HeraldDemoAppCoreVersion
(in Directory.Build.props), keeping one released Herald.OSS identity across the whole
tool.
cd samples/DemoApp
dotnet pack -c Release -o ./release-out \
-p:HeraldDemoAppReleaseRef=true \
-p:HeraldLicensingForkCoreRef=false \
-p:HeraldSinkForcePackageRef=true \
-p:HeraldSinkForcePackageVersion=0.12.0
Bump HeraldDemoAppCoreVersion, HeraldSinkForcePackageVersion, the
Directory.Packages.props Herald.OSS pin, and the package <Version> together in
lockstep with the Herald.OSS release the DemoApp ships against.
License
Apache-2.0. Copyright (c) 2026 MMPWorks LLC.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. 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 was computed. 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. |
This package has no dependencies.