CtrlK
BlogDocsLog inGet started
Tessl Logo

agent-resource-allocator

Agent skill for resource-allocator - invoke with $agent-resource-allocator

Install with Tessl CLI

npx tessl i github:ruvnet/claude-flow --skill agent-resource-allocator
What are skills?

36

5.00x

Does it follow best practices?

Evaluation80%

5.00x

Agent success when using this skill

Validation for skill structure

SKILL.md
Review
Evals

name: Resource Allocator type: agent category: optimization description: Adaptive resource allocation, predictive scaling and intelligent capacity planning

Resource Allocator Agent

Agent Profile

  • Name: Resource Allocator
  • Type: Performance Optimization Agent
  • Specialization: Adaptive resource allocation and predictive scaling
  • Performance Focus: Intelligent resource management and capacity planning

Core Capabilities

1. Adaptive Resource Allocation

// Advanced adaptive resource allocation system
class AdaptiveResourceAllocator {
  constructor() {
    this.allocators = {
      cpu: new CPUAllocator(),
      memory: new MemoryAllocator(),
      storage: new StorageAllocator(),
      network: new NetworkAllocator(),
      agents: new AgentAllocator()
    };
    
    this.predictor = new ResourcePredictor();
    this.optimizer = new AllocationOptimizer();
    this.monitor = new ResourceMonitor();
  }
  
  // Dynamic resource allocation based on workload patterns
  async allocateResources(swarmId, workloadProfile, constraints = {}) {
    // Analyze current resource usage
    const currentUsage = await this.analyzeCurrentUsage(swarmId);
    
    // Predict future resource needs
    const predictions = await this.predictor.predict(workloadProfile, currentUsage);
    
    // Calculate optimal allocation
    const allocation = await this.optimizer.optimize(predictions, constraints);
    
    // Apply allocation with gradual rollout
    const rolloutPlan = await this.planGradualRollout(allocation, currentUsage);
    
    // Execute allocation
    const result = await this.executeAllocation(rolloutPlan);
    
    return {
      allocation,
      rolloutPlan,
      result,
      monitoring: await this.setupMonitoring(allocation)
    };
  }
  
  // Workload pattern analysis
  async analyzeWorkloadPatterns(historicalData, timeWindow = '7d') {
    const patterns = {
      // Temporal patterns
      temporal: {
        hourly: this.analyzeHourlyPatterns(historicalData),
        daily: this.analyzeDailyPatterns(historicalData),
        weekly: this.analyzeWeeklyPatterns(historicalData),
        seasonal: this.analyzeSeasonalPatterns(historicalData)
      },
      
      // Load patterns
      load: {
        baseline: this.calculateBaselineLoad(historicalData),
        peaks: this.identifyPeakPatterns(historicalData),
        valleys: this.identifyValleyPatterns(historicalData),
        spikes: this.detectAnomalousSpikes(historicalData)
      },
      
      // Resource correlation patterns
      correlations: {
        cpu_memory: this.analyzeCPUMemoryCorrelation(historicalData),
        network_load: this.analyzeNetworkLoadCorrelation(historicalData),
        agent_resource: this.analyzeAgentResourceCorrelation(historicalData)
      },
      
      // Predictive indicators
      indicators: {
        growth_rate: this.calculateGrowthRate(historicalData),
        volatility: this.calculateVolatility(historicalData),
        predictability: this.calculatePredictability(historicalData)
      }
    };
    
    return patterns;
  }
  
  // Multi-objective resource optimization
  async optimizeResourceAllocation(resources, demands, objectives) {
    const optimizationProblem = {
      variables: this.defineOptimizationVariables(resources),
      constraints: this.defineConstraints(resources, demands),
      objectives: this.defineObjectives(objectives)
    };
    
    // Use multi-objective genetic algorithm
    const solver = new MultiObjectiveGeneticSolver({
      populationSize: 100,
      generations: 200,
      mutationRate: 0.1,
      crossoverRate: 0.8
    });
    
    const solutions = await solver.solve(optimizationProblem);
    
    // Select solution from Pareto front
    const selectedSolution = this.selectFromParetoFront(solutions, objectives);
    
    return {
      optimalAllocation: selectedSolution.allocation,
      paretoFront: solutions.paretoFront,
      tradeoffs: solutions.tradeoffs,
      confidence: selectedSolution.confidence
    };
  }
}

2. Predictive Scaling with Machine Learning

// ML-powered predictive scaling system
class PredictiveScaler {
  constructor() {
    this.models = {
      time_series: new LSTMTimeSeriesModel(),
      regression: new RandomForestRegressor(),
      anomaly: new IsolationForestModel(),
      ensemble: new EnsemblePredictor()
    };
    
    this.featureEngineering = new FeatureEngineer();
    this.dataPreprocessor = new DataPreprocessor();
  }
  
  // Predict scaling requirements
  async predictScaling(swarmId, timeHorizon = 3600, confidence = 0.95) {
    // Collect training data
    const trainingData = await this.collectTrainingData(swarmId);
    
    // Engineer features
    const features = await this.featureEngineering.engineer(trainingData);
    
    // Train$update models
    await this.updateModels(features);
    
    // Generate predictions
    const predictions = await this.generatePredictions(timeHorizon, confidence);
    
    // Calculate scaling recommendations
    const scalingPlan = await this.calculateScalingPlan(predictions);
    
    return {
      predictions,
      scalingPlan,
      confidence: predictions.confidence,
      timeHorizon,
      features: features.summary
    };
  }
  
  // LSTM-based time series prediction
  async trainTimeSeriesModel(data, config = {}) {
    const model = await mcp.neural_train({
      pattern_type: 'prediction',
      training_data: JSON.stringify({
        sequences: data.sequences,
        targets: data.targets,
        features: data.features
      }),
      epochs: config.epochs || 100
    });
    
    // Validate model performance
    const validation = await this.validateModel(model, data.validation);
    
    if (validation.accuracy > 0.85) {
      await mcp.model_save({
        modelId: model.modelId,
        path: '$models$scaling_predictor.model'
      });
      
      return {
        model,
        validation,
        ready: true
      };
    }
    
    return {
      model: null,
      validation,
      ready: false,
      reason: 'Model accuracy below threshold'
    };
  }
  
  // Reinforcement learning for scaling decisions
  async trainScalingAgent(environment, episodes = 1000) {
    const agent = new DeepQNetworkAgent({
      stateSize: environment.stateSize,
      actionSize: environment.actionSize,
      learningRate: 0.001,
      epsilon: 1.0,
      epsilonDecay: 0.995,
      memorySize: 10000
    });
    
    const trainingHistory = [];
    
    for (let episode = 0; episode < episodes; episode++) {
      let state = environment.reset();
      let totalReward = 0;
      let done = false;
      
      while (!done) {
        // Agent selects action
        const action = agent.selectAction(state);
        
        // Environment responds
        const { nextState, reward, terminated } = environment.step(action);
        
        // Agent learns from experience
        agent.remember(state, action, reward, nextState, terminated);
        
        state = nextState;
        totalReward += reward;
        done = terminated;
        
        // Train agent periodically
        if (agent.memory.length > agent.batchSize) {
          await agent.train();
        }
      }
      
      trainingHistory.push({
        episode,
        reward: totalReward,
        epsilon: agent.epsilon
      });
      
      // Log progress
      if (episode % 100 === 0) {
        console.log(`Episode ${episode}: Reward ${totalReward}, Epsilon ${agent.epsilon}`);
      }
    }
    
    return {
      agent,
      trainingHistory,
      performance: this.evaluateAgentPerformance(trainingHistory)
    };
  }
}

3. Circuit Breaker and Fault Tolerance

// Advanced circuit breaker with adaptive thresholds
class AdaptiveCircuitBreaker {
  constructor(config = {}) {
    this.failureThreshold = config.failureThreshold || 5;
    this.recoveryTimeout = config.recoveryTimeout || 60000;
    this.successThreshold = config.successThreshold || 3;
    
    this.state = 'CLOSED'; // CLOSED, OPEN, HALF_OPEN
    this.failureCount = 0;
    this.successCount = 0;
    this.lastFailureTime = null;
    
    // Adaptive thresholds
    this.adaptiveThresholds = new AdaptiveThresholdManager();
    this.performanceHistory = new CircularBuffer(1000);
    
    // Metrics
    this.metrics = {
      totalRequests: 0,
      successfulRequests: 0,
      failedRequests: 0,
      circuitOpenEvents: 0,
      circuitHalfOpenEvents: 0,
      circuitClosedEvents: 0
    };
  }
  
  // Execute operation with circuit breaker protection
  async execute(operation, fallback = null) {
    this.metrics.totalRequests++;
    
    // Check circuit state
    if (this.state === 'OPEN') {
      if (this.shouldAttemptReset()) {
        this.state = 'HALF_OPEN';
        this.successCount = 0;
        this.metrics.circuitHalfOpenEvents++;
      } else {
        return await this.executeFallback(fallback);
      }
    }
    
    try {
      const startTime = performance.now();
      const result = await operation();
      const endTime = performance.now();
      
      // Record success
      this.onSuccess(endTime - startTime);
      return result;
      
    } catch (error) {
      // Record failure
      this.onFailure(error);
      
      // Execute fallback if available
      if (fallback) {
        return await this.executeFallback(fallback);
      }
      
      throw error;
    }
  }
  
  // Adaptive threshold adjustment
  adjustThresholds(performanceData) {
    const analysis = this.adaptiveThresholds.analyze(performanceData);
    
    if (analysis.recommendAdjustment) {
      this.failureThreshold = Math.max(
        1, 
        Math.round(this.failureThreshold * analysis.thresholdMultiplier)
      );
      
      this.recoveryTimeout = Math.max(
        1000,
        Math.round(this.recoveryTimeout * analysis.timeoutMultiplier)
      );
    }
  }
  
  // Bulk head pattern for resource isolation
  createBulkhead(resourcePools) {
    return resourcePools.map(pool => ({
      name: pool.name,
      capacity: pool.capacity,
      queue: new PriorityQueue(),
      semaphore: new Semaphore(pool.capacity),
      circuitBreaker: new AdaptiveCircuitBreaker(pool.config),
      metrics: new BulkheadMetrics()
    }));
  }
}

4. Performance Profiling and Optimization

// Comprehensive performance profiling system
class PerformanceProfiler {
  constructor() {
    this.profilers = {
      cpu: new CPUProfiler(),
      memory: new MemoryProfiler(),
      io: new IOProfiler(),
      network: new NetworkProfiler(),
      application: new ApplicationProfiler()
    };
    
    this.analyzer = new ProfileAnalyzer();
    this.optimizer = new PerformanceOptimizer();
  }
  
  // Comprehensive performance profiling
  async profilePerformance(swarmId, duration = 60000) {
    const profilingSession = {
      swarmId,
      startTime: Date.now(),
      duration,
      profiles: new Map()
    };
    
    // Start all profilers concurrently
    const profilingTasks = Object.entries(this.profilers).map(
      async ([type, profiler]) => {
        const profile = await profiler.profile(duration);
        return [type, profile];
      }
    );
    
    const profiles = await Promise.all(profilingTasks);
    
    for (const [type, profile] of profiles) {
      profilingSession.profiles.set(type, profile);
    }
    
    // Analyze performance data
    const analysis = await this.analyzer.analyze(profilingSession);
    
    // Generate optimization recommendations
    const recommendations = await this.optimizer.recommend(analysis);
    
    return {
      session: profilingSession,
      analysis,
      recommendations,
      summary: this.generateSummary(analysis, recommendations)
    };
  }
  
  // CPU profiling with flame graphs
  async profileCPU(duration) {
    const cpuProfile = {
      samples: [],
      functions: new Map(),
      hotspots: [],
      flamegraph: null
    };
    
    // Sample CPU usage at high frequency
    const sampleInterval = 10; // 10ms
    const samples = duration / sampleInterval;
    
    for (let i = 0; i < samples; i++) {
      const sample = await this.sampleCPU();
      cpuProfile.samples.push(sample);
      
      // Update function statistics
      this.updateFunctionStats(cpuProfile.functions, sample);
      
      await this.sleep(sampleInterval);
    }
    
    // Generate flame graph
    cpuProfile.flamegraph = this.generateFlameGraph(cpuProfile.samples);
    
    // Identify hotspots
    cpuProfile.hotspots = this.identifyHotspots(cpuProfile.functions);
    
    return cpuProfile;
  }
  
  // Memory profiling with leak detection
  async profileMemory(duration) {
    const memoryProfile = {
      snapshots: [],
      allocations: [],
      deallocations: [],
      leaks: [],
      growth: []
    };
    
    // Take initial snapshot
    let previousSnapshot = await this.takeMemorySnapshot();
    memoryProfile.snapshots.push(previousSnapshot);
    
    const snapshotInterval = 5000; // 5 seconds
    const snapshots = duration / snapshotInterval;
    
    for (let i = 0; i < snapshots; i++) {
      await this.sleep(snapshotInterval);
      
      const snapshot = await this.takeMemorySnapshot();
      memoryProfile.snapshots.push(snapshot);
      
      // Analyze memory changes
      const changes = this.analyzeMemoryChanges(previousSnapshot, snapshot);
      memoryProfile.allocations.push(...changes.allocations);
      memoryProfile.deallocations.push(...changes.deallocations);
      
      // Detect potential leaks
      const leaks = this.detectMemoryLeaks(changes);
      memoryProfile.leaks.push(...leaks);
      
      previousSnapshot = snapshot;
    }
    
    // Analyze memory growth patterns
    memoryProfile.growth = this.analyzeMemoryGrowth(memoryProfile.snapshots);
    
    return memoryProfile;
  }
}

MCP Integration Hooks

Resource Management Integration

// Comprehensive MCP resource management
const resourceIntegration = {
  // Dynamic resource allocation
  async allocateResources(swarmId, requirements) {
    // Analyze current resource usage
    const currentUsage = await mcp.metrics_collect({
      components: ['cpu', 'memory', 'network', 'agents']
    });
    
    // Get performance metrics
    const performance = await mcp.performance_report({ format: 'detailed' });
    
    // Identify bottlenecks
    const bottlenecks = await mcp.bottleneck_analyze({});
    
    // Calculate optimal allocation
    const allocation = await this.calculateOptimalAllocation(
      currentUsage,
      performance,
      bottlenecks,
      requirements
    );
    
    // Apply resource allocation
    const result = await mcp.daa_resource_alloc({
      resources: allocation.resources,
      agents: allocation.agents
    });
    
    return {
      allocation,
      result,
      monitoring: await this.setupResourceMonitoring(allocation)
    };
  },
  
  // Predictive scaling
  async predictiveScale(swarmId, predictions) {
    // Get current swarm status
    const status = await mcp.swarm_status({ swarmId });
    
    // Calculate scaling requirements
    const scalingPlan = this.calculateScalingPlan(status, predictions);
    
    if (scalingPlan.scaleRequired) {
      // Execute scaling
      const scalingResult = await mcp.swarm_scale({
        swarmId,
        targetSize: scalingPlan.targetSize
      });
      
      // Optimize topology after scaling
      if (scalingResult.success) {
        await mcp.topology_optimize({ swarmId });
      }
      
      return {
        scaled: true,
        plan: scalingPlan,
        result: scalingResult
      };
    }
    
    return {
      scaled: false,
      reason: 'No scaling required',
      plan: scalingPlan
    };
  },
  
  // Performance optimization
  async optimizePerformance(swarmId) {
    // Collect comprehensive metrics
    const metrics = await Promise.all([
      mcp.performance_report({ format: 'json' }),
      mcp.bottleneck_analyze({}),
      mcp.agent_metrics({}),
      mcp.metrics_collect({ components: ['system', 'agents', 'coordination'] })
    ]);
    
    const [performance, bottlenecks, agentMetrics, systemMetrics] = metrics;
    
    // Generate optimization recommendations
    const optimizations = await this.generateOptimizations({
      performance,
      bottlenecks,
      agentMetrics,
      systemMetrics
    });
    
    // Apply optimizations
    const results = await this.applyOptimizations(swarmId, optimizations);
    
    return {
      optimizations,
      results,
      impact: await this.measureOptimizationImpact(swarmId, results)
    };
  }
};

Operational Commands

Resource Management Commands

# Analyze resource usage
npx claude-flow metrics-collect --components ["cpu", "memory", "network"]

# Optimize resource allocation
npx claude-flow daa-resource-alloc --resources <resource-config>

# Predictive scaling
npx claude-flow swarm-scale --swarm-id <id> --target-size <size>

# Performance profiling
npx claude-flow performance-report --format detailed --timeframe 24h

# Circuit breaker configuration
npx claude-flow fault-tolerance --strategy circuit-breaker --config <config>

Optimization Commands

# Run performance optimization
npx claude-flow optimize-performance --swarm-id <id> --strategy adaptive

# Generate resource forecasts
npx claude-flow forecast-resources --time-horizon 3600 --confidence 0.95

# Profile system performance
npx claude-flow profile-performance --duration 60000 --components all

# Analyze bottlenecks
npx claude-flow bottleneck-analyze --component swarm-coordination

Integration Points

With Other Optimization Agents

  • Load Balancer: Provides resource allocation data for load balancing decisions
  • Performance Monitor: Shares performance metrics and bottleneck analysis
  • Topology Optimizer: Coordinates resource allocation with topology changes

With Swarm Infrastructure

  • Task Orchestrator: Allocates resources for task execution
  • Agent Coordinator: Manages agent resource requirements
  • Memory System: Stores resource allocation history and patterns

Performance Metrics

Resource Allocation KPIs

// Resource allocation performance metrics
const allocationMetrics = {
  efficiency: {
    utilization_rate: this.calculateUtilizationRate(),
    waste_percentage: this.calculateWastePercentage(),
    allocation_accuracy: this.calculateAllocationAccuracy(),
    prediction_accuracy: this.calculatePredictionAccuracy()
  },
  
  performance: {
    allocation_latency: this.calculateAllocationLatency(),
    scaling_response_time: this.calculateScalingResponseTime(),
    optimization_impact: this.calculateOptimizationImpact(),
    cost_efficiency: this.calculateCostEfficiency()
  },
  
  reliability: {
    availability: this.calculateAvailability(),
    fault_tolerance: this.calculateFaultTolerance(),
    recovery_time: this.calculateRecoveryTime(),
    circuit_breaker_effectiveness: this.calculateCircuitBreakerEffectiveness()
  }
};

This Resource Allocator agent provides comprehensive adaptive resource allocation with ML-powered predictive scaling, fault tolerance patterns, and advanced performance optimization for efficient swarm resource management.

Repository
ruvnet/claude-flow
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.