-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Token Tracking Telemetry
Claude Flow provides comprehensive token tracking and telemetry capabilities to monitor Claude API usage, cost analysis, and performance optimization. This system captures real token consumption data from Claude Code CLI operations.
- Real Token Tracking: Captures actual Claude API token usage
- Cost Analysis: Calculates costs based on Claude 3 pricing models
- Session Monitoring: Real-time token usage monitoring
- Performance Metrics: Tracks performance across different operation modes
- Multi-Mode Support: Works with both interactive and non-interactive modes
-
analysis setup-telemetry
- Configure token tracking -
analysis token-usage
- View comprehensive usage reports -
analysis claude-monitor
- Real-time session monitoring -
analysis claude-cost
- Current session cost analysis
./claude-flow analysis setup-telemetry
This command:
- Sets
CLAUDE_CODE_ENABLE_TELEMETRY=1
environment variable - Creates
.claude-flow/metrics/
directory - Initializes token tracking system
- Creates
.env
file with telemetry settings
# Interactive mode - telemetry disabled to prevent console interference
./claude-flow swarm "analyze code" --claude
# Non-interactive mode - full telemetry with JSON output
./claude-flow swarm "analyze code"
# Hybrid mode - shows API responses with token data
./claude-flow hive-mind spawn "test" --claude --non-interactive
# Basic usage report
./claude-flow analysis token-usage
# Detailed breakdown with cost analysis
./claude-flow analysis token-usage --breakdown --cost-analysis
# Real-time monitoring
./claude-flow analysis claude-monitor
# Current session cost
./claude-flow analysis claude-cost
The token tracking system consists of several components:
-
claude-telemetry.js
: Core telemetry wrapper module -
claude-track.js
: Background token tracking service -
token-tracker.js
: Token data processing and storage -
analysis.js
: Analysis commands and reporting
Token data is captured from:
- Claude API response JSON (non-interactive mode)
- OpenTelemetry output (when configured)
- Claude session JSONL files (when accessible)
-
/cost
command output
Mode | Telemetry Status | Token Tracking | Use Case |
---|---|---|---|
Interactive (--claude ) |
Disabled | No | Smooth CLI experience |
Non-Interactive | Enabled | Yes | Batch operations, automation |
Hybrid (--claude --non-interactive ) |
Enabled | Yes | API inspection |
$ ./claude-flow hive-mind spawn "test" --claude --non-interactive
Output includes real token data:
"usage": {
"input_tokens": 4,
"cache_creation_input_tokens": 30310,
"cache_read_input_tokens": 0,
"output_tokens": 1
}
Model | Input (per 1M tokens) | Output (per 1M tokens) |
---|---|---|
Opus | $15.00 | $75.00 |
Sonnet | $3.00 | $15.00 |
Haiku | $0.25 | $1.25 |
- Real-time cost calculation
- Model-specific pricing
- Cache token differentiation
- Session-based cost tracking
- Optimization recommendations
import { runClaudeWithTelemetry } from './claude-telemetry.js';
const result = await runClaudeWithTelemetry(
['chat', 'Hello, Claude!'],
{
sessionId: 'my-session-123',
agentType: 'custom-agent'
}
);
import { monitorClaudeSession } from './claude-telemetry.js';
const stopMonitor = await monitorClaudeSession('session-id', 5000);
// Stop monitoring when done
stopMonitor();
# Primary telemetry control
export CLAUDE_CODE_ENABLE_TELEMETRY=1
# OpenTelemetry configuration (optional)
export OTEL_METRICS_EXPORTER=console
export OTEL_LOGS_EXPORTER=console
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
-
.env
- Environment variables -
.claude-flow/metrics/token-usage.json
- Token usage data -
.claude-flow/metrics/performance.json
- Performance metrics -
analysis-reports/token-usage-*.csv
- Exported reports
-
.claude-flow/metrics/sessions/
- Session-specific metrics -
.hive-mind/sessions/
- Hive Mind session data
-
Verify telemetry is enabled:
echo $CLAUDE_CODE_ENABLE_TELEMETRY # Should output: 1
-
Use non-interactive mode:
# Token tracking works in non-interactive mode ./claude-flow swarm "test task"
-
Check token usage file:
cat .claude-flow/metrics/token-usage.json
If telemetry causes console output issues:
- Use non-interactive mode for token tracking
- Interactive mode automatically disables telemetry to prevent interference
- Hybrid mode (
--claude --non-interactive
) shows API responses
# Clear existing token data
rm -rf .claude-flow/metrics/token-usage.json
# Re-enable telemetry
./claude-flow analysis setup-telemetry
env:
CLAUDE_CODE_ENABLE_TELEMETRY: '1'
steps:
- name: Setup telemetry
run: ./claude-flow analysis setup-telemetry
- name: Run task with tracking
run: ./claude-flow swarm "${{ inputs.task }}"
- name: Report costs
run: ./claude-flow analysis claude-cost
#!/bin/bash
# Monitor costs during batch operations
./claude-flow analysis claude-monitor &
MONITOR_PID=$!
# Run your Claude operations
./claude-flow swarm "batch task 1"
./claude-flow swarm "batch task 2"
# Stop monitoring
kill $MONITOR_PID
# Generate cost report
./claude-flow analysis token-usage --cost-analysis
- Token tracking infrastructure implemented
- Analysis commands functional
- Telemetry configuration system working
- Non-interactive mode token capture confirmed
- Documentation complete
- JSON output parsing for automatic token capture
- Session file integration
- OTLP collector setup for silent telemetry
- Implement automatic token parsing from JSON output
- Add session file monitoring
- Create OTLP collector configuration
- Add batch operation cost summaries
Command | Description | Options |
---|---|---|
analysis setup-telemetry |
Configure token tracking | None |
analysis token-usage |
View token usage report |
--breakdown , --cost-analysis
|
analysis claude-monitor |
Monitor session in real-time | --interval <ms> |
analysis claude-cost |
Get current session cost | None |
Variable | Description | Default |
---|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY |
Enable token tracking | 0 |
OTEL_METRICS_EXPORTER |
OpenTelemetry metrics exporter | console |
OTEL_LOGS_EXPORTER |
OpenTelemetry logs exporter | console |
The token tracking and telemetry system is functional and confirmed working in Claude Flow alpha-89. It successfully captures real Claude API token usage in non-interactive modes and provides comprehensive cost analysis and performance monitoring capabilities.
Key Achievement: Real token data confirmed with actual API usage statistics, including input tokens, output tokens, and cache utilization metrics.