FactFoundry.TelemetryForge.Desktop 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package FactFoundry.TelemetryForge.Desktop --version 1.1.0
                    
NuGet\Install-Package FactFoundry.TelemetryForge.Desktop -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="FactFoundry.TelemetryForge.Desktop" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FactFoundry.TelemetryForge.Desktop" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="FactFoundry.TelemetryForge.Desktop" />
                    
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 FactFoundry.TelemetryForge.Desktop --version 1.1.0
                    
#r "nuget: FactFoundry.TelemetryForge.Desktop, 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 FactFoundry.TelemetryForge.Desktop@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=FactFoundry.TelemetryForge.Desktop&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=FactFoundry.TelemetryForge.Desktop&version=1.1.0
                    
Install as a Cake Tool

FactFoundry.TelemetryForge.Desktop

Desktop app telemetry for TelemetryForge — machine fingerprinting, session tracking, feature navigation, and periodic heartbeats.

Installation

dotnet add package FactFoundry.TelemetryForge.Desktop

Setup

builder.Services.AddTelemetryForge(options =>
{
    options.Endpoint   = "https://telemetry.yourdomain.com";
    options.ApiKey     = "your-app-api-key";
    options.AppVersion = "2.1.0";       // auto-populated from entry assembly if omitted
    options.HeartbeatIntervalMinutes = 15; // default: 15. Set to null/0 to disable
});

Usage

Inject IFeatureTracker anywhere in your app to record feature navigation and errors:

public class EditorViewModel
{
    private readonly IFeatureTracker _tracker;

    public EditorViewModel(IFeatureTracker tracker)
    {
        _tracker = tracker;
        _tracker.TrackFeature("ModelEditor");
    }

    public void Export()
    {
        try { /* ... */ }
        catch (Exception ex)
        {
            _tracker.TrackError("Export", ex.Message);
        }
    }
}

On shutdown, flush remaining data:

await host.Services.GetRequiredService<DesktopSessionTracker>().FlushAsync();

Or let IAsyncDisposable handle it automatically when the DI container is disposed.

Heartbeats

The tracker periodically flushes feature and error data to the server on a configurable interval (default: every 15 minutes). Each heartbeat sends only the entries accumulated since the last flush — not the full session. A final flush at shutdown sends any remaining data.

Set HeartbeatIntervalMinutes to null or 0 to disable periodic heartbeats and only flush at shutdown.

What Gets Sent

Each payload is posted to POST /api/telemetry/desktop:

Field Description
session_id UUID generated once per app session
sequence Monotonically increasing counter (0, 1, 2, ...)
fingerprint_hash SHA-256 hash of the machine identifier
platform windows, linux, or macos
os_version Full OS version string
app_version Application version
feature_path Features navigated since last flush
error_events Errors recorded since last flush

Machine Fingerprinting

Platform-specific, stable machine identity:

Platform Source
Windows MachineGuid from the registry
Linux /etc/machine-id
macOS IOPlatformUUID via ioreg

The raw identifier is SHA-256 hashed before transmission — the server never sees the original value.

Privacy

  • Machine identifiers are hashed client-side before transmission — raw values never leave the device
  • No names, emails, or account identifiers collected
  • Telemetry failures are logged and swallowed — the SDK never crashes your app

Requirements

License

MIT

Product 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 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. 
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.1.2 0 5/26/2026
1.1.1 0 5/26/2026
1.1.0 0 5/25/2026
1.0.1 29 5/25/2026
1.0.0 35 5/25/2026