Cortex

Observability

Built-in metrics extension with 11 lifecycle counters.

The observability package provides a MetricsExtension that records counters for all agent lifecycle events using the go-utils MetricFactory.

Setup

import "github.com/xraph/cortex/observability"

// Using default metrics collector
metricsExt := observability.NewMetricsExtension()

// Or with a custom factory
factory := metrics.NewMetricsCollector("my-app")
metricsExt := observability.NewMetricsExtensionWithFactory(factory)

// Register with engine
eng, err := engine.New(
    engine.WithExtension(metricsExt),
)

Counters

The extension records 11 counters:

Counter nameHookDescription
cortex.agent.run.startedOnRunStartedAgent runs initiated
cortex.agent.run.completedOnRunCompletedRuns completed successfully
cortex.agent.run.failedOnRunFailedRuns that failed
cortex.tool.calledOnToolCalledTool invocations initiated
cortex.tool.completedOnToolCompletedTool calls completed
cortex.tool.failedOnToolFailedTool calls that failed
cortex.persona.resolvedOnPersonaResolvedPersonas resolved for runs
cortex.behavior.triggeredOnBehaviorTriggeredBehaviors triggered
cortex.cognitive.phase_changedOnCognitivePhaseChangedCognitive phase transitions
cortex.checkpoint.createdOnCheckpointCreatedCheckpoints created
cortex.checkpoint.resolvedOnCheckpointResolvedCheckpoints resolved

Interface compliance

The MetricsExtension implements 11 hook interfaces plus the base plugin.Extension:

var _ plugin.Extension             = (*MetricsExtension)(nil)
var _ plugin.RunStarted            = (*MetricsExtension)(nil)
var _ plugin.RunCompleted          = (*MetricsExtension)(nil)
var _ plugin.RunFailed             = (*MetricsExtension)(nil)
var _ plugin.ToolCalled            = (*MetricsExtension)(nil)
var _ plugin.ToolCompleted         = (*MetricsExtension)(nil)
var _ plugin.ToolFailed            = (*MetricsExtension)(nil)
var _ plugin.PersonaResolved       = (*MetricsExtension)(nil)
var _ plugin.BehaviorTriggered     = (*MetricsExtension)(nil)
var _ plugin.CognitivePhaseChanged = (*MetricsExtension)(nil)
var _ plugin.CheckpointCreated     = (*MetricsExtension)(nil)
var _ plugin.CheckpointResolved    = (*MetricsExtension)(nil)

On this page