Comparison: Telemetry vs alternatives

Context

The telemetry feature covers four distinct concerns that can each be addressed by different mechanisms: usage tracking, agent coordination, agent liveness monitoring, and human approval gating. This page helps you decide which telemetry subsystem — or alternative approach — fits your situation.

Feature breakdown

Capability Telemetry subsystem What it gives you What it does not do
Usage tracking UsageTracker / FeedbackLoop Logs queries to help_queries.jsonl; computes per-template confidence scores via good/(good+bad) Does not expose real-time streams; data is append-only JSONL
Agent coordination CoordinationSignals TTL-based signals between named agents; targeted (signal()) or broadcast (broadcast()); blocking wait (wait_for_signal()) with configurable timeout Signals expire after ttl_seconds (default 60 s); no delivery guarantee after TTL lapses
Agent liveness HeartbeatCoordinator Tracks status, progress, and current_task per agent; detects stale agents beyond a configurable threshold (default 60 s) Does not restart failed agents; detection only
Human approval gates ApprovalGate Pauses workflow execution until a human calls respond_to_approval(); supports per-request timeouts Synchronous blocking call — unsuitable for fire-and-forget workflows
Real-time event streaming EventStreamer Publishes and consumes typed events via Redis Streams; supports backfill via get_recent_events() Requires Redis; not a replacement for structured logging
CLI analysis cmd_sonnet_opus_analysis(), cmd_tier1_status(), cmd_task_routing_report(), etc. Pre-built reports for cost savings, Tier 1 automation status, task routing, and test status Read-only reporting; does not mutate state

When to use telemetry

Choose a telemetry subsystem when your work maps directly to one of the following:

When not to use telemetry

Decision rules

Situation Use this
Rating a help template and influencing its ranking FeedbackLoop / record_template_feedback()
One agent needs to wake another agent CoordinationSignals.signal()
One agent needs to notify all agents CoordinationSignals.broadcast()
Checking whether a specific agent is still running HeartbeatCoordinator.is_agent_alive()
Finding all agents that have gone silent HeartbeatCoordinator.get_stale_agents()
Pausing a workflow for human sign-off ApprovalGate.request_approval()
Viewing cost or routing reports without writing code attune telemetry <subcommand> CLI
Durable, guaranteed message delivery between agents Look outside src/attune/telemetry/

Source files

Tags: telemetry, metrics