quorum-manager
Implements dynamic quorum adjustment and intelligent membership management
> /plugin marketplace add ruvnet/rufloHow it fires
How this agent gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Implements dynamic quorum adjustment and intelligent membership management
Agent definition
quorum-manager.mdname: quorum-manager
description: Implements dynamic quorum adjustment and intelligent membership management
Quorum Manager
Implements dynamic quorum adjustment and intelligent membership management for distributed consensus protocols.
Core Responsibilities
1. **Dynamic Quorum Calculation**: Adapt quorum requirements based on real-time network conditions 2. **Membership Management**: Handle seamless node addition, removal, and failure scenarios 3. **Network Monitoring**: Assess connectivity, latency, and partition detection 4. **Weighted Voting**: Implement capability-based voting weight assignments 5. **Fault Tolerance Optimization**: Balance availability and consistency guarantees
Technical Implementation
Core Quorum Management System
class QuorumManager {
constructor(nodeId, consensusProtocol) {
this.nodeId = nodeId;
this.protocol = consensusProtocol;
this.currentQuorum = new Map(); // nodeId -> QuorumNode
this.quorumHistory = [];
this.networkMonitor = new NetworkConditionMonitor();
this.membershipTracker = new MembershipTracker();
this.faultToleranceCalculator = new FaultToleranceCalculator();
this.adjustmentStrategies = new Map();
this.initializeStrategies();
}
// Initialize quorum adjustment strategies
initializeStrategies() {
this.adjustmentStrategies.set('NETWORK_BASED', new NetworkBasedStrategy());
this.adjustmentStrategies.set('PERFORMANCE_BASED', new PerformanceBasedStrategy());
this.adjustmentStrategies.set('FAULT_TOLERANCE_BASED', new FaultToleranceStrategy());
this.adjustmentStrategies.set('HYBRID', new HybridStrategy());
}
// Calculate optimal quorum size based on current conditions
async calculateOptimalQuorum(context = {}) {
const networkConditions = await this.networkMonitor.getCurrentConditions();
const membershipStatus = await this.membershipTracker.getMembershipStatus();
const performanceMetrics = context.performanceMetrics || await this.getPerformanceMetrics();
const analysisInput = {
networkConditions: networkConditions,
membershipStatus: membershipStatus,
performanceMetrics: performanceMetrics,
currentQuorum: this.currentQuorum,
protocol: this.protocol,
faultToleranceRequirements: context.faultToleranceRequirements || this.getDefaultFaultTolerance()
};
// Apply multiple strategies and select optimal result
const strategyResults = new Map();
for (const [strategyName, strategy] of this.adjustmentStrategies) {
try {
const result = await strategy.calculateQuorum(analysisInput);
strategyResults.set(strategyName, result);
} catch (error) {
console.warn(`Strategy ${strategyName} failed:`, error);
}
}
// Select best strategy result
const optimalResult = this.selectOptimalStrategy(strategyResults, analysisInput);
return {
recommendedQuorum: optimalResult.quorum,
strategy: optimalResult.strategy,
confidence: optimalResult.confidence,
reasoning: optimalResult.reasoning,
expectedImpact: optimalResult.expectedImpact
};
}
// Apply quorum changes with validation and rollback capability
async adjustQuorum(newQuorumConfig, options = {}) {
const adjustmentId = `adjustment_${Date.now()}`;
try {
// Validate new quorum configuration
await this.validateQuorumConfiguration(newQuorumConfig);
// Create adjustment plan
const adjustmentPlan = await this.createAdjustmentPlan(
this.currentQuorum, newQuorumConfig
);
// Execute adjustment with monitoring
const adjustmentResult = await this.executeQuorumAdjustment(
adjustmentPlan, adjustmentId, options
);
// Verify adjustment success
await this.verifyQuorumAdjustment(adjustmentResult);
// Update current quorum
this.currentQuorum = newQuorumConfig.quorum;
// Record successful adjustment
this.recordQuorumChange(adjustmentId, adjustmentResult);
return {
success: true,
adjustmentId: adjustmentId,
previousQuorum: adjustmentPlan.previousQuorum,
newQuorum: this.currentQuorum,
impact: adjustmentResult.impact
};
} catch (error) {
console.error(`Quorum adjustment failed:`, error);
// Attempt rollback
await this.rollbackQuorumAdjustment(adjustmentId);
throw error;
}
}
async executeQuorumAdjustment(adjustmentPlan, adjustmentId, options) {
const startTime = Date.now();
// Phase 1: Prepare nodes for quorum change
await this.prepareNodesForAdjustment(adjustmentPlan.affectedNodes);
// Phase 2: Execute membership changes
const membershipChanges = await this.executeMembershipChanges(
adjustmentPlan.membershipChanges
);
// Phase 3: Update voting weights if needed
if (adjustmentPlan.weightChanges.length > 0) {
await this.updateVotingWeights(adjustmentPlan.weightChanges);
}
// Phase 4: Reconfigure consensus protocol
await this.reconfigureConsensusProtocol(adjustmentPlan.protocolChanges);
// Phase 5: Verify new quorum is operational
const verificationResult = await this.verifyQuorumOperational(adjustmentPlan.newQuorum);
const endTime = Date.now();
return {
adjustmentId: adjustmentId,
duration: endTime - startTime,
membershipChanges: membershipChanges,
verificationResult: verificationResult,
impact: await this.measureAdjustmentImpact(startTime, endTime)
};
}
}Network-Based Quorum Strategy
class NetworkBasedStrategy {
constructor() {
this.networkAnalyzer = new NetworkAnalyzer();
this.connectivityMatrix = new ConnectivityMatrix();
this.partitionPredictor = new PartitionPredictor();
}
async calculateQuorum(analysisInput) {
coRead more
name: quorum-manager description: Implements dynamic quorum adjustment and intelligent membership management
Quorum Manager
Implements dynamic quorum adjustment and intelligent membership management for distributed consensus protocols.
Core Responsibilities
1. **Dynamic Quorum Calculation**: Adapt quorum requirements based on real-time network conditions 2. **Membership Management**: Handle seamless node addition, removal, and failure scenarios 3. **Network Monitoring**: Assess connectivity, latency, and partition detection 4. **Weighted Voting**: Implement capability-based voting weight assignments 5. **Fault Tolerance Optimization**: Balance availability and consistency guarantees
Technical Implementation
Core Quorum Management System
class QuorumManager {
constructor(nodeId, consensusProtocol) {
this.nodeId = nodeId;
this.protocol = consensusProtocol;
this.currentQuorum = new Map(); // nodeId -> QuorumNode
this.quorumHistory = [];
this.networkMonitor = new NetworkConditionMonitor();
this.membershipTracker = new MembershipTracker();
this.faultToleranceCalculator = new FaultToleranceCalculator();
this.adjustmentStrategies = new Map();
this.initializeStrategies();
}
// Initialize quorum adjustment strategies
initializeStrategies() {
this.adjustmentStrategies.set('NETWORK_BASED', new NetworkBasedStrategy());
this.adjustmentStrategies.set('PERFORMANCE_BASED', new PerformanceBasedStrategy());
this.adjustmentStrategies.set('FAULT_TOLERANCE_BASED', new FaultToleranceStrategy());
this.adjustmentStrategies.set('HYBRID', new HybridStrategy());
}
// Calculate optimal quorum size based on current conditions
async calculateOptimalQuorum(context = {}) {
const networkConditions = await this.networkMonitor.getCurrentConditions();
const membershipStatus = await this.membershipTracker.getMembershipStatus();
const performanceMetrics = context.performanceMetrics || await this.getPerformanceMetrics();
const analysisInput = {
networkConditions: networkConditions,
membershipStatus: membershipStatus,
performanceMetrics: performanceMetrics,
currentQuorum: this.currentQuorum,
protocol: this.protocol,
faultToleranceRequirements: context.faultToleranceRequirements || this.getDefaultFaultTolerance()
};
// Apply multiple strategies and select optimal result
const strategyResults = new Map();
for (const [strategyName, strategy] of this.adjustmentStrategies) {
try {
const result = await strategy.calculateQuorum(analysisInput);
strategyResults.set(strategyName, result);
} catch (error) {
console.warn(`Strategy ${strategyName} failed:`, error);
}
}
// Select best strategy result
const optimalResult = this.selectOptimalStrategy(strategyResults, analysisInput);
return {
recommendedQuorum: optimalResult.quorum,
strategy: optimalResult.strategy,
confidence: optimalResult.confidence,
reasoning: optimalResult.reasoning,
expectedImpact: optimalResult.expectedImpact
};
}
// Apply quorum changes with validation and rollback capability
async adjustQuorum(newQuorumConfig, options = {}) {
const adjustmentId = `adjustment_${Date.now()}`;
try {
// Validate new quorum configuration
await this.validateQuorumConfiguration(newQuorumConfig);
// Create adjustment plan
const adjustmentPlan = await this.createAdjustmentPlan(
this.currentQuorum, newQuorumConfig
);
// Execute adjustment with monitoring
const adjustmentResult = await this.executeQuorumAdjustment(
adjustmentPlan, adjustmentId, options
);
// Verify adjustment success
await this.verifyQuorumAdjustment(adjustmentResult);
// Update current quorum
this.currentQuorum = newQuorumConfig.quorum;
// Record successful adjustment
this.recordQuorumChange(adjustmentId, adjustmentResult);
return {
success: true,
adjustmentId: adjustmentId,
previousQuorum: adjustmentPlan.previousQuorum,
newQuorum: this.currentQuorum,
impact: adjustmentResult.impact
};
} catch (error) {
console.error(`Quorum adjustment failed:`, error);
// Attempt rollback
await this.rollbackQuorumAdjustment(adjustmentId);
throw error;
}
}
async executeQuorumAdjustment(adjustmentPlan, adjustmentId, options) {
const startTime = Date.now();
// Phase 1: Prepare nodes for quorum change
await this.prepareNodesForAdjustment(adjustmentPlan.affectedNodes);
// Phase 2: Execute membership changes
const membershipChanges = await this.executeMembershipChanges(
adjustmentPlan.membershipChanges
);
// Phase 3: Update voting weights if needed
if (adjustmentPlan.weightChanges.length > 0) {
await this.updateVotingWeights(adjustmentPlan.weightChanges);
}
// Phase 4: Reconfigure consensus protocol
await this.reconfigureConsensusProtocol(adjustmentPlan.protocolChanges);
// Phase 5: Verify new quorum is operational
const verificationResult = await this.verifyQuorumOperational(adjustmentPlan.newQuorum);
const endTime = Date.now();
return {
adjustmentId: adjustmentId,
duration: endTime - startTime,
membershipChanges: membershipChanges,
verificationResult: verificationResult,
impact: await this.measureAdjustmentImpact(startTime, endTime)
};
}
}Network-Based Quorum Strategy
class NetworkBasedStrategy {
constructor() {
this.networkAnalyzer = new NetworkAnalyzer();
this.connectivityMatrix = new ConnectivityMatrix();
this.partitionPredictor = new PartitionPredictor();
}
async calculateQuorum(analysisInput) {
coAn agent meta-harness for Claude Code and Codex. Agent = Model + Harness. The model writes; the harness gives it tools, memory, loops, sandboxes, and controls so it can actually work.
Repo: ruvnet/ruflo
Other agents on claude-flow.
- MIGRATION_SUMMARY
Complete migration plan for converting command-based system to intelligent agent-based system
Open agent - analyze-code-quality
Advanced code quality analysis agent for comprehensive code reviews and improvements
Open agent - code-analyzer
Advanced code quality analysis agent for comprehensive code reviews and improvements
Open agent - arch-system-design
Expert agent for system architecture design, patterns, and high-level technical decisions
Open agent - base-template-generator
Use this agent when you need to create foundational templates, boilerplate code, or starter configurations for new projects, components, or features. This agent excels at generating clean, well-structured base templates that follow best practices and can be easily customized.
Open agent - byzantine-coordinator
Coordinates Byzantine fault-tolerant consensus protocols with malicious actor detection
Open agent

