Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    ruvnet

    agent-performance-monitor

    ruvnet/agent-performance-monitor
    Productivity
    13,844
    3 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Agent skill for performance-monitor - invoke with $agent-performance-monitor

    SKILL.md


    name: Performance Monitor type: agent category: optimization description: Real-time metrics collection, bottleneck analysis, SLA monitoring and anomaly detection

    Performance Monitor Agent

    Agent Profile

    • Name: Performance Monitor
    • Type: Performance Optimization Agent
    • Specialization: Real-time metrics collection and bottleneck analysis
    • Performance Focus: SLA monitoring, resource tracking, and anomaly detection

    Core Capabilities

    1. Real-Time Metrics Collection

    // Advanced metrics collection system
    class MetricsCollector {
      constructor() {
        this.collectors = new Map();
        this.aggregators = new Map();
        this.streams = new Map();
        this.alertThresholds = new Map();
      }
      
      // Multi-dimensional metrics collection
      async collectMetrics() {
        const metrics = {
          // System metrics
          system: await this.collectSystemMetrics(),
          
          // Agent-specific metrics
          agents: await this.collectAgentMetrics(),
          
          // Swarm coordination metrics
          coordination: await this.collectCoordinationMetrics(),
          
          // Task execution metrics
          tasks: await this.collectTaskMetrics(),
          
          // Resource utilization metrics
          resources: await this.collectResourceMetrics(),
          
          // Network and communication metrics
          network: await this.collectNetworkMetrics()
        };
        
        // Real-time processing and analysis
        await this.processMetrics(metrics);
        return metrics;
      }
      
      // System-level metrics
      async collectSystemMetrics() {
        return {
          cpu: {
            usage: await this.getCPUUsage(),
            loadAverage: await this.getLoadAverage(),
            coreUtilization: await this.getCoreUtilization()
          },
          memory: {
            usage: await this.getMemoryUsage(),
            available: await this.getAvailableMemory(),
            pressure: await this.getMemoryPressure()
          },
          io: {
            diskUsage: await this.getDiskUsage(),
            diskIO: await this.getDiskIOStats(),
            networkIO: await this.getNetworkIOStats()
          },
          processes: {
            count: await this.getProcessCount(),
            threads: await this.getThreadCount(),
            handles: await this.getHandleCount()
          }
        };
      }
      
      // Agent performance metrics
      async collectAgentMetrics() {
        const agents = await mcp.agent_list({});
        const agentMetrics = new Map();
        
        for (const agent of agents) {
          const metrics = await mcp.agent_metrics({ agentId: agent.id });
          agentMetrics.set(agent.id, {
            ...metrics,
            efficiency: this.calculateEfficiency(metrics),
            responsiveness: this.calculateResponsiveness(metrics),
            reliability: this.calculateReliability(metrics)
          });
        }
        
        return agentMetrics;
      }
    }
    

    2. Bottleneck Detection & Analysis

    // Intelligent bottleneck detection
    class BottleneckAnalyzer {
      constructor() {
        this.detectors = [
          new CPUBottleneckDetector(),
          new MemoryBottleneckDetector(),
          new IOBottleneckDetector(),
          new NetworkBottleneckDetector(),
          new CoordinationBottleneckDetector(),
          new TaskQueueBottleneckDetector()
        ];
        
        this.patterns = new Map();
        this.history = new CircularBuffer(1000);
      }
      
      // Multi-layer bottleneck analysis
      async analyzeBottlenecks(metrics) {
        const bottlenecks = [];
        
        // Parallel detection across all layers
        const detectionPromises = this.detectors.map(detector => 
          detector.detect(metrics)
        );
        
        const results = await Promise.all(detectionPromises);
        
        // Correlate and prioritize bottlenecks
        for (const result of results) {
          if (result.detected) {
            bottlenecks.push({
              type: result.type,
              severity: result.severity,
              component: result.component,
              rootCause: result.rootCause,
              impact: result.impact,
              recommendations: result.recommendations,
              timestamp: Date.now()
            });
          }
        }
        
        // Pattern recognition for recurring bottlenecks
        await this.updatePatterns(bottlenecks);
        
        return this.prioritizeBottlenecks(bottlenecks);
      }
      
      // Advanced pattern recognition
      async updatePatterns(bottlenecks) {
        for (const bottleneck of bottlenecks) {
          const signature = this.createBottleneckSignature(bottleneck);
          
          if (this.patterns.has(signature)) {
            const pattern = this.patterns.get(signature);
            pattern.frequency++;
            pattern.lastOccurrence = Date.now();
            pattern.averageInterval = this.calculateAverageInterval(pattern);
          } else {
            this.patterns.set(signature, {
              signature,
              frequency: 1,
              firstOccurrence: Date.now(),
              lastOccurrence: Date.now(),
              averageInterval: 0,
              predictedNext: null
            });
          }
        }
      }
    }
    

    3. SLA Monitoring & Alerting

    // Service Level Agreement monitoring
    class SLAMonitor {
      constructor() {
        this.slaDefinitions = new Map();
        this.violations = new Map();
        this.alertChannels = new Set();
        this.escalationRules = new Map();
      }
      
      // Define SLA metrics and thresholds
      defineSLA(service, slaConfig) {
        this.slaDefinitions.set(service, {
          availability: slaConfig.availability || 99.9, // percentage
          responseTime: slaConfig.responseTime || 1000, // milliseconds
          throughput: slaConfig.throughput || 100, // requests per second
          errorRate: slaConfig.errorRate || 0.1, // percentage
          recoveryTime: slaConfig.recoveryTime || 300, // seconds
          
          // Time windows for measurements
          measurementWindow: slaConfig.measurementWindow || 300, // seconds
          evaluationInterval: slaConfig.evaluationInterval || 60, // seconds
          
          // Alerting configuration
          alertThresholds: slaConfig.alertThresholds || {
            warning: 0.8, // 80% of SLA threshold
            critical: 0.9, // 90% of SLA threshold
            breach: 1.0 // 100% of SLA threshold
          }
        });
      }
      
      // Continuous SLA monitoring
      async monitorSLA() {
        const violations = [];
        
        for (const [service, sla] of this.slaDefinitions) {
          const metrics = await this.getServiceMetrics(service);
          const evaluation = this.evaluateSLA(service, sla, metrics);
          
          if (evaluation.violated) {
            violations.push(evaluation);
            await this.handleViolation(service, evaluation);
          }
        }
        
        return violations;
      }
      
      // SLA evaluation logic
      evaluateSLA(service, sla, metrics) {
        const evaluation = {
          service,
          timestamp: Date.now(),
          violated: false,
          violations: []
        };
        
        // Availability check
        if (metrics.availability < sla.availability) {
          evaluation.violations.push({
            metric: 'availability',
            expected: sla.availability,
            actual: metrics.availability,
            severity: this.calculateSeverity(metrics.availability, sla.availability, sla.alertThresholds)
          });
          evaluation.violated = true;
        }
        
        // Response time check
        if (metrics.responseTime > sla.responseTime) {
          evaluation.violations.push({
            metric: 'responseTime',
            expected: sla.responseTime,
            actual: metrics.responseTime,
            severity: this.calculateSeverity(metrics.responseTime, sla.responseTime, sla.alertThresholds)
          });
          evaluation.violated = true;
        }
        
        // Additional SLA checks...
        
        return evaluation;
      }
    }
    

    4. Resource Utilization Tracking

    // Comprehensive resource tracking
    class ResourceTracker {
      constructor() {
        this.trackers = {
          cpu: new CPUTracker(),
          memory: new MemoryTracker(),
          disk: new DiskTracker(),
          network: new NetworkTracker(),
          gpu: new GPUTracker(),
          agents: new AgentResourceTracker()
        };
        
        this.forecaster = new ResourceForecaster();
        this.optimizer = new ResourceOptimizer();
      }
      
      // Real-time resource tracking
      async trackResources() {
        const resources = {};
        
        // Parallel resource collection
        const trackingPromises = Object.entries(this.trackers).map(
          async ([type, tracker]) => [type, await tracker.collect()]
        );
        
        const results = await Promise.all(trackingPromises);
        
        for (const [type, data] of results) {
          resources[type] = {
            ...data,
            utilization: this.calculateUtilization(data),
            efficiency: this.calculateEfficiency(data),
            trend: this.calculateTrend(type, data),
            forecast: await this.forecaster.forecast(type, data)
          };
        }
        
        return resources;
      }
      
      // Resource utilization analysis
      calculateUtilization(resourceData) {
        return {
          current: resourceData.used / resourceData.total,
          peak: resourceData.peak / resourceData.total,
          average: resourceData.average / resourceData.total,
          percentiles: {
            p50: resourceData.p50 / resourceData.total,
            p90: resourceData.p90 / resourceData.total,
            p95: resourceData.p95 / resourceData.total,
            p99: resourceData.p99 / resourceData.total
          }
        };
      }
      
      // Predictive resource forecasting
      async forecastResourceNeeds(timeHorizon = 3600) { // 1 hour default
        const currentResources = await this.trackResources();
        const forecasts = {};
        
        for (const [type, data] of Object.entries(currentResources)) {
          forecasts[type] = await this.forecaster.forecast(type, data, timeHorizon);
        }
        
        return {
          timeHorizon,
          forecasts,
          recommendations: await this.optimizer.generateRecommendations(forecasts),
          confidence: this.calculateForecastConfidence(forecasts)
        };
      }
    }
    

    MCP Integration Hooks

    Performance Data Collection

    // Comprehensive MCP integration
    const performanceIntegration = {
      // Real-time performance monitoring
      async startMonitoring(config = {}) {
        const monitoringTasks = [
          this.monitorSwarmHealth(),
          this.monitorAgentPerformance(),
          this.monitorResourceUtilization(),
          this.monitorBottlenecks(),
          this.monitorSLACompliance()
        ];
        
        // Start all monitoring tasks concurrently
        const monitors = await Promise.all(monitoringTasks);
        
        return {
          swarmHealthMonitor: monitors[0],
          agentPerformanceMonitor: monitors[1],
          resourceMonitor: monitors[2],
          bottleneckMonitor: monitors[3],
          slaMonitor: monitors[4]
        };
      },
      
      // Swarm health monitoring
      async monitorSwarmHealth() {
        const healthMetrics = await mcp.health_check({
          components: ['swarm', 'coordination', 'communication']
        });
        
        return {
          status: healthMetrics.overall,
          components: healthMetrics.components,
          issues: healthMetrics.issues,
          recommendations: healthMetrics.recommendations
        };
      },
      
      // Agent performance monitoring
      async monitorAgentPerformance() {
        const agents = await mcp.agent_list({});
        const performanceData = new Map();
        
        for (const agent of agents) {
          const metrics = await mcp.agent_metrics({ agentId: agent.id });
          const performance = await mcp.performance_report({
            format: 'detailed',
            timeframe: '24h'
          });
          
          performanceData.set(agent.id, {
            ...metrics,
            performance,
            efficiency: this.calculateAgentEfficiency(metrics, performance),
            bottlenecks: await mcp.bottleneck_analyze({ component: agent.id })
          });
        }
        
        return performanceData;
      },
      
      // Bottleneck monitoring and analysis
      async monitorBottlenecks() {
        const bottlenecks = await mcp.bottleneck_analyze({});
        
        // Enhanced bottleneck analysis
        const analysis = {
          detected: bottlenecks.length > 0,
          count: bottlenecks.length,
          severity: this.calculateOverallSeverity(bottlenecks),
          categories: this.categorizeBottlenecks(bottlenecks),
          trends: await this.analyzeBottleneckTrends(bottlenecks),
          predictions: await this.predictBottlenecks(bottlenecks)
        };
        
        return analysis;
      }
    };
    

    Anomaly Detection

    // Advanced anomaly detection system
    class AnomalyDetector {
      constructor() {
        this.models = {
          statistical: new StatisticalAnomalyDetector(),
          machine_learning: new MLAnomalyDetector(),
          time_series: new TimeSeriesAnomalyDetector(),
          behavioral: new BehavioralAnomalyDetector()
        };
        
        this.ensemble = new EnsembleDetector(this.models);
      }
      
      // Multi-model anomaly detection
      async detectAnomalies(metrics) {
        const anomalies = [];
        
        // Parallel detection across all models
        const detectionPromises = Object.entries(this.models).map(
          async ([modelType, model]) => {
            const detected = await model.detect(metrics);
            return { modelType, detected };
          }
        );
        
        const results = await Promise.all(detectionPromises);
        
        // Ensemble voting for final decision
        const ensembleResult = await this.ensemble.vote(results);
        
        return {
          anomalies: ensembleResult.anomalies,
          confidence: ensembleResult.confidence,
          consensus: ensembleResult.consensus,
          individualResults: results
        };
      }
      
      // Statistical anomaly detection
      detectStatisticalAnomalies(data) {
        const mean = this.calculateMean(data);
        const stdDev = this.calculateStandardDeviation(data, mean);
        const threshold = 3 * stdDev; // 3-sigma rule
        
        return data.filter(point => Math.abs(point - mean) > threshold)
                   .map(point => ({
                     value: point,
                     type: 'statistical',
                     deviation: Math.abs(point - mean) / stdDev,
                     probability: this.calculateProbability(point, mean, stdDev)
                   }));
      }
      
      // Time series anomaly detection
      async detectTimeSeriesAnomalies(timeSeries) {
        // LSTM-based anomaly detection
        const model = await this.loadTimeSeriesModel();
        const predictions = await model.predict(timeSeries);
        
        const anomalies = [];
        for (let i = 0; i < timeSeries.length; i++) {
          const error = Math.abs(timeSeries[i] - predictions[i]);
          const threshold = this.calculateDynamicThreshold(timeSeries, i);
          
          if (error > threshold) {
            anomalies.push({
              timestamp: i,
              actual: timeSeries[i],
              predicted: predictions[i],
              error: error,
              type: 'time_series'
            });
          }
        }
        
        return anomalies;
      }
    }
    

    Dashboard Integration

    Real-Time Performance Dashboard

    // Dashboard data provider
    class DashboardProvider {
      constructor() {
        this.updateInterval = 1000; // 1 second updates
        this.subscribers = new Set();
        this.dataBuffer = new CircularBuffer(1000);
      }
      
      // Real-time dashboard data
      async provideDashboardData() {
        const dashboardData = {
          // High-level metrics
          overview: {
            swarmHealth: await this.getSwarmHealthScore(),
            activeAgents: await this.getActiveAgentCount(),
            totalTasks: await this.getTotalTaskCount(),
            averageResponseTime: await this.getAverageResponseTime()
          },
          
          // Performance metrics
          performance: {
            throughput: await this.getCurrentThroughput(),
            latency: await this.getCurrentLatency(),
            errorRate: await this.getCurrentErrorRate(),
            utilization: await this.getResourceUtilization()
          },
          
          // Real-time charts data
          timeSeries: {
            cpu: this.getCPUTimeSeries(),
            memory: this.getMemoryTimeSeries(),
            network: this.getNetworkTimeSeries(),
            tasks: this.getTaskTimeSeries()
          },
          
          // Alerts and notifications
          alerts: await this.getActiveAlerts(),
          notifications: await this.getRecentNotifications(),
          
          // Agent status
          agents: await this.getAgentStatusSummary(),
          
          timestamp: Date.now()
        };
        
        // Broadcast to subscribers
        this.broadcast(dashboardData);
        
        return dashboardData;
      }
      
      // WebSocket subscription management
      subscribe(callback) {
        this.subscribers.add(callback);
        return () => this.subscribers.delete(callback);
      }
      
      broadcast(data) {
        this.subscribers.forEach(callback => {
          try {
            callback(data);
          } catch (error) {
            console.error('Dashboard subscriber error:', error);
          }
        });
      }
    }
    

    Operational Commands

    Monitoring Commands

    # Start comprehensive monitoring
    npx claude-flow performance-report --format detailed --timeframe 24h
    
    # Real-time bottleneck analysis
    npx claude-flow bottleneck-analyze --component swarm-coordination
    
    # Health check all components
    npx claude-flow health-check --components ["swarm", "agents", "coordination"]
    
    # Collect specific metrics
    npx claude-flow metrics-collect --components ["cpu", "memory", "network"]
    
    # Monitor SLA compliance
    npx claude-flow sla-monitor --service swarm-coordination --threshold 99.9
    

    Alert Configuration

    # Configure performance alerts
    npx claude-flow alert-config --metric cpu_usage --threshold 80 --severity warning
    
    # Set up anomaly detection
    npx claude-flow anomaly-setup --models ["statistical", "ml", "time_series"]
    
    # Configure notification channels
    npx claude-flow notification-config --channels ["slack", "email", "webhook"]
    

    Integration Points

    With Other Optimization Agents

    • Load Balancer: Provides performance data for load balancing decisions
    • Topology Optimizer: Supplies network and coordination metrics
    • Resource Manager: Shares resource utilization and forecasting data

    With Swarm Infrastructure

    • Task Orchestrator: Monitors task execution performance
    • Agent Coordinator: Tracks agent health and performance
    • Memory System: Stores historical performance data and patterns

    Performance Analytics

    Key Metrics Dashboard

    // Performance analytics engine
    const analytics = {
      // Key Performance Indicators
      calculateKPIs(metrics) {
        return {
          // Availability metrics
          uptime: this.calculateUptime(metrics),
          availability: this.calculateAvailability(metrics),
          
          // Performance metrics
          responseTime: {
            average: this.calculateAverage(metrics.responseTimes),
            p50: this.calculatePercentile(metrics.responseTimes, 50),
            p90: this.calculatePercentile(metrics.responseTimes, 90),
            p95: this.calculatePercentile(metrics.responseTimes, 95),
            p99: this.calculatePercentile(metrics.responseTimes, 99)
          },
          
          // Throughput metrics
          throughput: this.calculateThroughput(metrics),
          
          // Error metrics
          errorRate: this.calculateErrorRate(metrics),
          
          // Resource efficiency
          resourceEfficiency: this.calculateResourceEfficiency(metrics),
          
          // Cost metrics
          costEfficiency: this.calculateCostEfficiency(metrics)
        };
      },
      
      // Trend analysis
      analyzeTrends(historicalData, timeWindow = '7d') {
        return {
          performance: this.calculatePerformanceTrend(historicalData, timeWindow),
          efficiency: this.calculateEfficiencyTrend(historicalData, timeWindow),
          reliability: this.calculateReliabilityTrend(historicalData, timeWindow),
          capacity: this.calculateCapacityTrend(historicalData, timeWindow)
        };
      }
    };
    

    This Performance Monitor agent provides comprehensive real-time monitoring, bottleneck detection, SLA compliance tracking, and advanced analytics for optimal swarm performance management.

    Recommended Servers
    Browser tool
    Browser tool
    AgentMail
    AgentMail
    Repository
    ruvnet/claude-flow
    Files