axonpush
.NET SDK

.NET SDK

Three NuGet packages for .NET 8 and above, a Semantic Kernel telemetry layer, a general OpenTelemetry span exporter, and a raw events client.

axonpush ships three NuGet packages. Which one you want depends on how your application already produces telemetry, not on how much of axonpush you intend to use.

Install

dotnet add package AxonPush.SemanticKernel

Targets net8.0 and above.

Configuration

Options are read from the environment when you do not set them in code, so the same build runs against hosted and self-host without a recompile.

VariableDefaultNotes
AXONPUSH_API_KEYrequiredAPI key.
AXONPUSH_TENANT_IDrequiredTenant identifier.
AXONPUSH_BASE_URLhttps://api.axonpush.xyzPoint this at your own deployment when self-hosting.
AXONPUSH_ENVIRONMENTnoneStamped on every event, so dev traffic is filterable from prod.
AXONPUSH_TIMEOUT30Per-request timeout, seconds.
AXONPUSH_MAX_RETRIES3Retry attempts.
AXONPUSH_FAIL_OPENtrueSee below.

Fail-open by default

axonpush is treated as a soft dependency. If a publish fails after its retries, the exception is logged at warning level and the call returns a failed PublishResult rather than throwing, observability going down does not take your application with it.

The OpenTelemetry exporter follows the same setting: with fail-open on, Export returns ExportResult.Success even when individual spans could not be delivered, so the OpenTelemetry SDK never propagates the failure into your code.

Set AxonPushOptions.FailOpen = false, or AXONPUSH_FAIL_OPEN=false, if you would rather see the errors.

One shape across every SDK

Span payloads from AxonPush.Otel use the same JSON shape as the Python and TypeScript exporters, and trace and span identifiers are preserved. A Semantic Kernel chat completion lands with the same schema as a LangChain run from Python or a Vercel AI middleware trace from Node, so a workflow that crosses languages still reads as one trace.

Where to next