zoobzio December 8, 2025 Edit this page

aperture

Transforms capitan events into OpenTelemetry spans, metrics, and logs.

The Pipeline

// Your application emits events
capitan.Emit(ctx, UserCreated, userID.Field("usr_123"))
// aperture observes and exports to OTEL
aperture.Attach(capitan.Default(),
    aperture.WithTracerProvider(provider),
)
Emit(ctx, signal, fields...)
       │
       ▼
┌─────────────┐
│  aperture   │
│  observer   │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│    OTEL     │
│  exporter   │
└─────────────┘

What Capitan Provides

aperture needsCapitan provides
Span namesSignal.Name()
Span attributesEvent.Fields() as key-value pairs
TimestampsEvent.Timestamp()
Severity mappingEvent.Severity() → OTEL severity
Trace contextEvent.Context() propagation
Selective exportObserve(callback, signals...) whitelist

Learn More