warmplane

Observability Guide

Warmplane emits structured JSON logs by default, supports distributed trace correlation, and exports distributed traces via OpenTelemetry (OTLP).

This guide covers logging defaults, request correlation, Human-in-the-Loop (HITL) audit logging, idempotency tracking, operation cancellation, catalog change feeds, and OpenTelemetry collector setup.


1. Logging and Context Defaults

Warmplane uses the tracing framework and emits machine-parseable JSON logs by default.

Key Capabilities

Verbosity Controls

Configure logging levels with the RUST_LOG environment variable:

export RUST_LOG=info,warmplane=debug

2. Request Correlation and Propagation

All execution endpoints (/v1/tools/call, /v1/resources/read, /v1/prompts/get) automatically capture and propagate request context.

Context Sources

Warmplane resolves request context from request payload fields or HTTP headers (in order of precedence):

  1. Request payload attributes:
    • request_id
    • context.operation_id
    • context.work_item_id
    • context.actor_id
    • context.grant_id
  2. HTTP correlation headers (fallback when payload fields are omitted):
    • X-Request-ID
    • X-Operation-ID
    • X-Work-Item-ID
    • X-Actor-ID
    • X-Grant-ID

These attributes are injected into active tracing spans and forwarded in OTLP trace context. This provides full request lineage across the agent orchestrator, Warmplane daemon, and upstream MCP servers.


3. Human-in-the-Loop (HITL) and Governance Observability

Warmplane provides dedicated observability for security policy enforcement and interactive capability approvals.

3.1 Approval Lifecycle Audit Events

When a capability matches policy.requireApproval patterns, Warmplane pauses execution and emits structured audit logs:

3.2 Webhook Dispatch Observability

If policy.webhook is configured:


4. Idempotency, Cancellation, and Catalog Events

4.1 Idempotency and Deduplication Tracking

When requests provide an Idempotency-Key header or payload field:

4.2 Operation Cancellation

4.3 Catalog Versioning and Mutation Feed

4.4 Dynamic Server Hot-Reload Events

Hot-reloading daemon state via POST /v1/config/reload or warmplane reload emits audit events:

4.5 WORM Audit Trail and SIEM Telemetry Streaming

Warmplane records execution events into a Write-Once-Read-Many (WORM) append-only log with linear SHA-256 cryptographic hash chaining.


5. OpenTelemetry (OTLP) Export

OpenTelemetry trace export is optional and controlled by environment variables.

Environment Configuration

Variable Default Description
WARMPLANE_OTEL_ENABLED false Enables OpenTelemetry trace export when set to true.
OTEL_EXPORTER_OTLP_ENDPOINT http://127.0.0.1:4317 Target OTLP gRPC collector endpoint (standard).
WARMPLANE_OTEL_ENDPOINT http://127.0.0.1:4317 Fallback OTLP endpoint if OTEL_EXPORTER_OTLP_ENDPOINT is unset.
WARMPLANE_SERVICE_NAME warmplane Service identifier tag injected into emitted trace spans.

Example Startup

export WARMPLANE_OTEL_ENABLED=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector.internal:4317
export WARMPLANE_SERVICE_NAME=warmplane-prod

warmplane daemon --config mcp_servers.json

6. Collector Pipelines and Architecture

6.1 Local OpenTelemetry Collector

Sample otel-collector-config.yaml:

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:
    timeout: 1s
    send_batch_size: 256

exporters:
  logging:
    verbosity: normal

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging]

6.2 Enterprise Observability Stack


7. Incident Triage Workflow

When debugging a failed capability execution:

  1. Extract Identifiers: Note trace_id, request_id, and error.code from the HTTP response envelope or log line.
  2. Search Traces: Locate the trace by trace_id in your distributed tracing tool (Tempo, Jaeger, Datadog) to inspect span durations and upstream latency.
  3. Filter Logs: Query structured log files by request_id or operation_id to review argument sanitization, policy evaluations, and raw upstream protocol responses.
  4. Check Approval State: If error code is APPROVAL_PENDING, APPROVAL_TIMEOUT, or APPROVAL_REJECTED, look up the ticket in GET /v1/approvals/:id or warmplane approvals get <id>.
  5. Verify Retry Governance: Inspect the "retry" object (classification: safe unsafe idempotent) in the response envelope to determine whether client retries are safe.

8. Security and Redaction