Observability
Praval emits OpenTelemetry traces, metrics, and logs from the same completed
ExecutionObservation. Observability is disabled by default and importing
Praval never installs an SDK, starts a worker, opens SQLite, or replaces a
provider. The base package contains OpenTelemetry API instrumentation. Install
praval[observability] only when Praval should own SDK pipelines.
The runtime produces one observation per agent or workflow and aggregates bounded facts for model use, tools, retries, HITL decisions, and Reef handoffs. That provider-neutral observation is offered independently to telemetry and to evaluation consumers. Evaluation therefore does not need to query a tracing backend.
Ownership model
With no configuration, OpenTelemetry API calls are safe no-ops.
In host-owned mode, the application constructs providers and remains responsible for their processors, exporters, flush, and shutdown.
In Praval-owned mode,
configure_observability()constructs selected SDK providers and returns anObservabilityHandle. Praval flushes and shuts down only the components recorded inhandle.owned_signals.A Collector is the recommended deployment boundary. Use HTTP/protobuf or gRPC rather than adding vendor SDK dependencies to Praval.
Executed tutorial matrix
Each recipe is backed by an executable release test.
Recipe |
Guide |
Executable evidence |
|---|---|---|
Local development |
|
|
Host-owned SDK |
|
|
Praval-owned SDK |
|
|
Collector |
|
|
Multi-container |
|
|
RabbitMQ |
|
|
Privacy |
|
|
Failure isolation |
|
|
Shutdown |
|
The external-service tests are explicit gates. Run
./scripts/run_otel_collector_tests.sh for a real Collector and the RabbitMQ
integration test against a real broker before a release.