Distributes tasks dynamically across AI agents to optimize system performance.
Install
mkdir -p .claude/skills/agent-load-balancer && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4508" && unzip -o skill.zip -d .claude/skills/agent-load-balancer && rm skill.zipInstalls to .claude/skills/agent-load-balancer
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Agent skill for load-balancer - invoke with $agent-load-balancerKey capabilities
- →Work-stealing task distribution
- →Dynamic load balancing
- →Queue management and prioritization
- →Resource allocation optimization
How it works
The agent uses work-stealing algorithms and dynamic load balancing to migrate tasks from overloaded to underloaded agents based on performance metrics.
Inputs & outputs
When to use agent-load-balancer
- →Balance agent task load
- →Implement work-stealing for distributed queues
- →Optimize agent resource allocation
- →Manage task priority across agents
About this skill
name: Load Balancing Coordinator type: agent category: optimization description: Dynamic task distribution, work-stealing algorithms and adaptive load balancing
Load Balancing Coordinator Agent
Agent Profile
- Name: Load Balancing Coordinator
- Type: Performance Optimization Agent
- Specialization: Dynamic task distribution and resource allocation
- Performance Focus: Work-stealing algorithms and adaptive load balancing
Core Capabilities
1. Work-Stealing Algorithms
// Advanced work-stealing implementation
const workStealingScheduler = {
// Distributed queue system
globalQueue: new PriorityQueue(),
localQueues: new Map(), // agent-id -> local queue
// Work-stealing algorithm
async stealWork(requestingAgentId) {
const victims = this.getVictimCandidates(requestingAgentId);
for (const victim of victims) {
const stolenTasks = await this.attemptSteal(victim, requestingAgentId);
if (stolenTasks.length > 0) {
return stolenTasks;
}
}
// Fallback to global queue
return await this.getFromGlobalQueue(requestingAgentId);
},
// Victim selection strategy
getVictimCandidates(requestingAgent) {
return Array.from(this.localQueues.entries())
.filter(([agentId, queue]) =>
agentId !== requestingAgent &&
queue.size() > this.stealThreshold
)
.sort((a, b) => b[1].size() - a[1].size()) // Heaviest first
.map(([agentId]) => agentId);
}
};
2. Dynamic Load Balancing
// Real-time load balancing system
const loadBalancer = {
// Agent capacity tracking
agentCapacities: new Map(),
currentLoads: new Map(),
performanceMetrics: new Map(),
// Dynamic load balancing
async balanceLoad() {
const agents = await this.getActiveAgents();
const loadDistribution = this.calculateLoadDistribution(agents);
// Identify overloaded and underloaded agents
const { overloaded, underloaded } = this.categorizeAgents(loadDistribution);
// Migrate tasks from overloaded to underloaded agents
for (const overloadedAgent of overloaded) {
const candidateTasks = await this.getMovableTasks(overloadedAgent.id);
const targetAgent = this.selectTargetAgent(underloaded, candidateTasks);
if (targetAgent) {
await this.migrateTasks(candidateTasks, overloadedAgent.id, targetAgent.id);
}
}
},
// Weighted Fair Queuing implementation
async scheduleWithWFQ(tasks) {
const weights = await this.calculateAgentWeights();
const virtualTimes = new Map();
return tasks.sort((a, b) => {
const aFinishTime = this.calculateFinishTime(a, weights, virtualTimes);
const bFinishTime = this.calculateFinishTime(b, weights, virtualTimes);
return aFinishTime - bFinishTime;
});
}
};
3. Queue Management & Prioritization
// Advanced queue management system
class PriorityTaskQueue {
constructor() {
this.queues = {
critical: new PriorityQueue((a, b) => a.deadline - b.deadline),
high: new PriorityQueue((a, b) => a.priority - b.priority),
normal: new WeightedRoundRobinQueue(),
low: new FairShareQueue()
};
this.schedulingWeights = {
critical: 0.4,
high: 0.3,
normal: 0.2,
low: 0.1
};
}
// Multi-level feedback queue scheduling
async scheduleNext() {
// Critical tasks always first
if (!this.queues.critical.isEmpty()) {
return this.queues.critical.dequeue();
}
// Use weighted scheduling for other levels
const random = Math.random();
let cumulative = 0;
for (const [level, weight] of Object.entries(this.schedulingWeights)) {
cumulative += weight;
if (random <= cumulative && !this.queues[level].isEmpty()) {
return this.queues[level].dequeue();
}
}
return null;
}
// Adaptive priority adjustment
adjustPriorities() {
const now = Date.now();
// Age-based priority boosting
for (const queue of Object.values(this.queues)) {
queue.forEach(task => {
const age = now - task.submissionTime;
if (age > this.agingThreshold) {
task.priority += this.agingBoost;
}
});
}
}
}
4. Resource Allocation Optimization
// Intelligent resource allocation
const resourceAllocator = {
// Multi-objective optimization
async optimizeAllocation(agents, tasks, constraints) {
const objectives = [
this.minimizeLatency,
this.maximizeUtilization,
this.balanceLoad,
this.minimizeCost
];
// Genetic algorithm for multi-objective optimization
const population = this.generateInitialPopulation(agents, tasks);
for (let generation = 0; generation < this.maxGenerations; generation++) {
const fitness = population.map(individual =>
this.evaluateMultiObjectiveFitness(individual, objectives)
);
const selected = this.selectParents(population, fitness);
const offspring = this.crossoverAndMutate(selected);
population.splice(0, population.length, ...offspring);
}
return this.getBestSolution(population, objectives);
},
// Constraint-based allocation
async allocateWithConstraints(resources, demands, constraints) {
const solver = new ConstraintSolver();
// Define variables
const allocation = new Map();
for (const [agentId, capacity] of resources) {
allocation.set(agentId, solver.createVariable(0, capacity));
}
// Add constraints
constraints.forEach(constraint => solver.addConstraint(constraint));
// Objective: maximize utilization while respecting constraints
const objective = this.createUtilizationObjective(allocation);
solver.setObjective(objective, 'maximize');
return await solver.solve();
}
};
MCP Integration Hooks
Performance Monitoring Integration
// MCP performance tools integration
const mcpIntegration = {
// Real-time metrics collection
async collectMetrics() {
const metrics = await mcp.performance_report({ format: 'json' });
const bottlenecks = await mcp.bottleneck_analyze({});
const tokenUsage = await mcp.token_usage({});
return {
performance: metrics,
bottlenecks: bottlenecks,
tokenConsumption: tokenUsage,
timestamp: Date.now()
};
},
// Load balancing coordination
async coordinateLoadBalancing(swarmId) {
const agents = await mcp.agent_list({ swarmId });
const metrics = await mcp.agent_metrics({});
// Implement load balancing based on agent metrics
const rebalancing = this.calculateRebalancing(agents, metrics);
if (rebalancing.required) {
await mcp.load_balance({
swarmId,
tasks: rebalancing.taskMigrations
});
}
return rebalancing;
},
// Topology optimization
async optimizeTopology(swarmId) {
const currentTopology = await mcp.swarm_status({ swarmId });
const optimizedTopology = await this.calculateOptimalTopology(currentTopology);
if (optimizedTopology.improvement > 0.1) { // 10% improvement threshold
await mcp.topology_optimize({ swarmId });
return optimizedTopology;
}
return null;
}
};
Advanced Scheduling Algorithms
1. Earliest Deadline First (EDF)
class EDFScheduler {
schedule(tasks) {
return tasks.sort((a, b) => a.deadline - b.deadline);
}
// Admission control for real-time tasks
admissionControl(newTask, existingTasks) {
const totalUtilization = [...existingTasks, newTask]
.reduce((sum, task) => sum + (task.executionTime / task.period), 0);
return totalUtilization <= 1.0; // Liu & Layland bound
}
}
2. Completely Fair Scheduler (CFS)
class CFSScheduler {
constructor() {
this.virtualRuntime = new Map();
this.weights = new Map();
this.rbtree = new RedBlackTree();
}
schedule() {
const nextTask = this.rbtree.minimum();
if (nextTask) {
this.updateVirtualRuntime(nextTask);
return nextTask;
}
return null;
}
updateVirtualRuntime(task) {
const weight = this.weights.get(task.id) || 1;
const runtime = this.virtualRuntime.get(task.id) || 0;
this.virtualRuntime.set(task.id, runtime + (1000 / weight)); // Nice value scaling
}
}
Performance Optimization Features
Circuit Breaker Pattern
class CircuitBreaker {
constructor(threshold = 5, timeout = 60000) {
this.failureThreshold = threshold;
this.timeout = timeout;
this.failureCount = 0;
this.lastFailureTime = null;
this.state = 'CLOSED'; // CLOSED, OPEN, HALF_OPEN
}
async execute(operation) {
if (this.state === 'OPEN') {
if (Date.now() - this.lastFailureTime > this.timeout) {
this.state = 'HALF_OPEN';
} else {
throw new Error('Circuit breaker is OPEN');
}
}
try {
const result = await operation();
this.onSuccess();
return result;
} catch (error) {
this.onFailure();
throw error;
}
}
onSuccess() {
this.failureCount = 0;
this.state = 'CLOSED';
}
onFailure() {
this.failureCount++;
this.lastFailureTime = Date.now();
if (this.failureCount >= this.failureThreshold) {
this.state = 'OPEN';
}
}
}
Operational Commands
Load Balancing Commands
# Initialize load balancer
npx claude-flow agent spawn load-balancer --type coordinator
# Start load balancing
npx claude-flow load-balance --swarm-id <id> --strategy adaptive
# Monitor load distribution
npx claude-flow agent-metrics --type load-balancer
# Adjust balancing parameters
npx claude-flow config-manage --action update --config '{"stealThreshold": 5, "agingBoost": 10}'
Performance Monitoring
#
---
*Content truncated.*
When not to use it
- →When swarm infrastructure is not initialized
- →When agent metrics are unavailable
Prerequisites
Limitations
- →Requires active agents for load balancing
- →Performance depends on accurate metrics collection
How it compares
It automates task distribution and resource allocation using adaptive algorithms rather than static scheduling.
Compared to similar skills
agent-load-balancer side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| agent-load-balancer (this skill) | 1 | 6mo | Review | Advanced |
| bullmq-specialist | 25 | 6mo | No flags | Intermediate |
| agent-orchestration-multi-agent-optimize | 2 | 4mo | No flags | Advanced |
| awq-quantization | 1 | 7mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by ruvnet
View all by ruvnet →You might also like
bullmq-specialist
davila7
BullMQ expert for Redis-backed job queues, background processing, and reliable async execution in Node.js/TypeScript applications. Use when: bullmq, bull queue, redis queue, background job, job queue.
agent-orchestration-multi-agent-optimize
sickn33
Optimize multi-agent systems with coordinated profiling, workload distribution, and cost-aware orchestration. Use when improving agent performance, throughput, or reliability.
awq-quantization
davila7
Activation-aware weight quantization for 4-bit LLM compression with 3x speedup and minimal accuracy loss. Use when deploying large models (7B-70B) on limited GPU memory, when you need faster inference than GPTQ with better accuracy preservation, or for instruction-tuned and multimodal models. MLSys 2024 Best Paper Award winner.
clay-load-scale
jeremylongshore
Implement Clay load testing, auto-scaling, and capacity planning strategies. Use when running performance tests, configuring horizontal scaling, or planning capacity for Clay integrations. Trigger with phrases like "clay load test", "clay scale", "clay performance test", "clay capacity", "clay k6", "clay benchmark".
firecrawl-load-scale
jeremylongshore
Implement FireCrawl load testing, auto-scaling, and capacity planning strategies. Use when running performance tests, configuring horizontal scaling, or planning capacity for FireCrawl integrations. Trigger with phrases like "firecrawl load test", "firecrawl scale", "firecrawl performance test", "firecrawl capacity", "firecrawl k6", "firecrawl benchmark".
gptq
davila7
Post-training 4-bit quantization for LLMs with minimal accuracy loss. Use for deploying large models (70B, 405B) on consumer GPUs, when you need 4× memory reduction with <2% perplexity degradation, or for faster inference (3-4× speedup) vs FP16. Integrates with transformers and PEFT for QLoRA fine-tuning.