Monitor your sandbox’s agent performance in real-time with execution metrics. Track uptime, execution counts, error rates, and per-endpoint statistics to optimize your workloads and troubleshoot issues.
Overview
HopX provides agent performance metrics to monitor sandbox execution performance:
- Agent Metrics: Agent performance metrics including uptime, execution counts, error rates, and per-endpoint statistics
Both get_metrics_snapshot() and get_agent_metrics() return agent performance metrics. They provide the same data structure.
Agent Metrics Snapshot
Get a snapshot of current agent performance metrics:
from hopx_ai import Sandbox
sandbox = Sandbox.create(template="code-interpreter")
# Get agent metrics snapshot
metrics = sandbox.get_metrics_snapshot()
print(f"Uptime: {metrics['uptime_seconds']} seconds")
print(f"Total Executions: {metrics['total_executions']}")
print(f"Active Executions: {metrics['active_executions']}")
print(f"Error Count: {metrics['error_count']}")
# Per-endpoint statistics
if 'requests_total' in metrics:
print("\nRequests by Endpoint:")
for endpoint, count in metrics['requests_total'].items():
print(f" {endpoint}: {count}")
sandbox.kill()
Get detailed agent performance metrics:
from hopx_ai import Sandbox
sandbox = Sandbox.create(template="code-interpreter")
# Get agent metrics
agent_metrics = sandbox.get_agent_metrics()
print(f"Agent Uptime: {agent_metrics['uptime_seconds']} seconds")
print(f"Total Executions: {agent_metrics['total_executions']}")
print(f"Active Executions: {agent_metrics['active_executions']}")
print(f"Error Count: {agent_metrics['error_count']}")
# Per-endpoint metrics
if 'requests_total' in agent_metrics:
print("\nRequests by Endpoint:")
for endpoint, count in agent_metrics['requests_total'].items():
print(f" {endpoint}: {count}")
if 'avg_duration_ms' in agent_metrics:
print("\nAverage Duration by Endpoint:")
for endpoint, duration in agent_metrics['avg_duration_ms'].items():
print(f" {endpoint}: {duration:.2f} ms")
if 'p95_duration_ms' in agent_metrics:
print("\nP95 Duration by Endpoint:")
for endpoint, duration in agent_metrics['p95_duration_ms'].items():
print(f" {endpoint}: {duration:.2f} ms")
sandbox.kill()
Monitor agent metrics over time to track performance:
from hopx_ai import Sandbox
import time
sandbox = Sandbox.create(template="code-interpreter")
# Monitor metrics every 5 seconds
for i in range(5):
metrics = sandbox.get_metrics_snapshot()
print(f"Snapshot {i+1}:")
print(f" Uptime: {metrics['uptime_seconds']}s")
print(f" Total Executions: {metrics['total_executions']}")
print(f" Active Executions: {metrics['active_executions']}")
print(f" Error Count: {metrics['error_count']}")
if i < 4: # Don't sleep after last iteration
time.sleep(5)
sandbox.kill()
Metrics Structure
Agent Metrics Response
Both get_metrics_snapshot() and get_agent_metrics() return the same structure:
{
"uptime_seconds": 1234,
"total_executions": 1250,
"active_executions": 2,
"error_count": 3,
"requests_total": {
"/execute": 800,
"/files/read": 300,
"/files/write": 150
},
"avg_duration_ms": {
"/execute": 1250.5,
"/files/read": 45.2,
"/files/write": 78.9
},
"p95_duration_ms": {
"/execute": 2500.0,
"/files/read": 100.0,
"/files/write": 150.0
}
}
Field Descriptions
uptime_seconds: Agent uptime in seconds
total_executions: Total number of code executions processed
active_executions: Currently running executions
error_count: Total number of errors encountered
requests_total: Per-endpoint request counts
avg_duration_ms: Average request duration by endpoint (milliseconds)
p95_duration_ms: 95th percentile request duration by endpoint (milliseconds)
Use Cases
Monitor agent performance during code execution:
from hopx_ai import Sandbox
sandbox = Sandbox.create(template="code-interpreter")
# Get baseline metrics
baseline = sandbox.get_metrics_snapshot()
print(f"Baseline Executions: {baseline['total_executions']}")
print(f"Baseline Errors: {baseline['error_count']}")
# Run some code
sandbox.run_code("""
import time
for i in range(5):
print(f"Step {i+1}")
time.sleep(0.1)
""")
# Check metrics after execution
after = sandbox.get_metrics_snapshot()
print(f"After Execution - Total: {after['total_executions']}")
print(f"After Execution - Errors: {after['error_count']}")
print(f"Executions Added: {after['total_executions'] - baseline['total_executions']}")
sandbox.kill()
Analyze agent performance to identify bottlenecks:
from hopx_ai import Sandbox
sandbox = Sandbox.create(template="code-interpreter")
# Get agent metrics
metrics = sandbox.get_agent_metrics()
# Calculate error rate
if metrics['total_executions'] > 0:
error_rate = (metrics['error_count'] / metrics['total_executions']) * 100
print(f"Error Rate: {error_rate:.2f}%")
else:
print("No executions yet")
# Find slowest endpoint
if 'avg_duration_ms' in metrics and metrics['avg_duration_ms']:
slowest = max(metrics['avg_duration_ms'].items(), key=lambda x: x[1])
print(f"Slowest Endpoint: {slowest[0]} ({slowest[1]:.2f} ms)")
sandbox.kill()
Best Practices
Monitor metrics before and after operations to track execution performance and identify bottlenecks or error patterns.
Use agent metrics to identify frequently used endpoints and optimize your code patterns accordingly.
Metrics are snapshots, not continuous monitoring. For real-time streaming metrics, use the monitoring endpoint with SSE.
Check agent version before using agent metrics. Use sandbox.get_agent_info() to verify v3.1.0+ support.
API Reference
Python SDK
sandbox.get_metrics_snapshot() - Get agent performance metrics snapshot
sandbox.get_agent_metrics() - Get agent performance metrics (same as get_metrics_snapshot)
JavaScript SDK
sandbox.getMetricsSnapshot() - Get agent performance metrics snapshot
sandbox.getAgentMetrics() - Get agent performance metrics (same as getMetricsSnapshot)
API Endpoints
- GET
/metrics/snapshot - Get agent performance metrics snapshot
Next Steps