๐๏ธ Enterprise Configuration Management Guide¶
NeuroLink Configuration System v3.0 - Complete guide to enterprise configuration management with automatic backup/restore, validation, and error recovery.
๐ฏ Overview¶
NeuroLink's enterprise configuration system provides:
- โ Automatic Backup System - Timestamped backups before every config change
- โ Config Validation - Comprehensive validation with suggestions and warnings
- โ Error Recovery - Auto-restore on config update failures
- โ Provider Management - Real-time provider availability monitoring
- โ Hash Verification - SHA-256 integrity checking for all operations
- โ Cleanup Utilities - Configurable backup retention and cleanup
๐ Quick Start¶
Basic Configuration Setup¶
import { ConfigManager } from "@juspay/neurolink/config";
// Initialize config manager
const configManager = new ConfigManager();
// Update configuration (automatic backup created)
await configManager.updateConfig({
providers: {
google: { enabled: true, model: "gemini-2.5-pro" },
openai: { enabled: true, model: "gpt-4o" },
},
performance: {
timeout: 30000,
retries: 3,
},
});
// โ
Backup created: .neurolink.backups/neurolink-config-2025-01-07T10-30-00.js
Environment Configuration¶
# Enable automatic backups
NEUROLINK_BACKUP_ENABLED=true
NEUROLINK_BACKUP_RETENTION=30
NEUROLINK_BACKUP_DIRECTORY=.neurolink.backups
# Validation settings
NEUROLINK_VALIDATION_STRICT=false
NEUROLINK_VALIDATION_WARNINGS=true
# Provider monitoring
NEUROLINK_PROVIDER_STATUS_CHECK=true
NEUROLINK_PROVIDER_TIMEOUT=30000
๐ Configuration Structure¶
NeuroLinkConfig Interface¶
interface NeuroLinkConfig {
providers: ProviderConfig; // AI provider settings
performance: PerformanceConfig; // Performance optimization
analytics: AnalyticsConfig; // Analytics configuration
backup: BackupConfig; // Backup system settings
validation: ValidationConfig; // Validation rules
}
Provider Configuration¶
interface ProviderConfig {
google?: {
enabled: boolean;
model?: string;
apiKey?: string;
timeout?: number;
};
openai?: {
enabled: boolean;
model?: string;
apiKey?: string;
timeout?: number;
};
// ... other providers
}
Performance Configuration¶
interface PerformanceConfig {
timeout: number; // Default timeout (ms)
retries: number; // Default retry count
cacheEnabled: boolean; // Enable execution caching
cacheTTL: number; // Cache TTL (seconds)
concurrency: number; // Max concurrent operations
}
๐ Automatic Backup System¶
How It Works¶
- Before Update: Config manager creates timestamped backup
- Update Attempt: Apply new configuration
- Validation: Validate new configuration
- Success/Failure: Keep new config or auto-restore from backup
Backup File Structure¶
.neurolink.backups/
โโโ neurolink-config-2025-01-07T10-30-00.js # Timestamped backup
โโโ neurolink-config-2025-01-07T11-15-30.js # Another backup
โโโ metadata.json # Backup metadata
โโโ .backup-index # Backup index file
Backup Metadata¶
interface BackupMetadata {
timestamp: string;
hash: string; // SHA-256 hash
size: number; // File size in bytes
reason: string; // Reason for backup
version: string; // Config version
environment: string; // Environment context
user?: string; // User who made change
}
Manual Backup Operations¶
// Create manual backup
const backupPath = await configManager.createBackup("manual-backup");
console.log(`Backup created: ${backupPath}`);
// List all backups
const backups = await configManager.listBackups();
console.log("Available backups:", backups);
// Restore from specific backup
await configManager.restoreFromBackup(
"neurolink-config-2025-01-07T10-30-00.js",
);
โ Configuration Validation¶
Validation Process¶
- Schema Validation: Check against TypeScript interfaces
- Provider Validation: Verify provider configurations
- Dependency Validation: Check inter-config dependencies
- Performance Validation: Validate performance settings
- Security Validation: Check for security issues
Validation Examples¶
// Validate current config
const validation = await configManager.validateConfig();
if (!validation.isValid) {
console.log("Validation errors:", validation.errors);
console.log("Suggestions:", validation.suggestions);
}
// Validate before update
await configManager.updateConfig(newConfig, {
validateBeforeUpdate: true,
onValidationError: (errors) => {
console.log("Validation failed:", errors);
},
});
Common Validation Errors¶
// Example validation results
{
isValid: false,
errors: [
{
field: 'providers.google.model',
message: 'Model "gemini-pro-deprecated" is deprecated',
severity: 'warning',
suggestion: 'Use "gemini-2.5-pro" instead'
},
{
field: 'performance.timeout',
message: 'Timeout value too low (< 1000ms)',
severity: 'error',
suggestion: 'Use timeout >= 1000ms for reliable operation'
}
],
suggestions: [
'Consider enabling caching for better performance',
'Add fallback providers for reliability'
]
}
๐ ๏ธ Advanced Configuration¶
Update Strategies¶
// Replace entire config
await configManager.updateConfig(newConfig, {
mergeStrategy: "replace",
});
// Merge with existing config
await configManager.updateConfig(partialConfig, {
mergeStrategy: "merge",
});
// Deep merge (preserves nested objects)
await configManager.updateConfig(partialConfig, {
mergeStrategy: "deep-merge",
});
Custom Validation Rules¶
// Add custom validation
configManager.addValidator("performance", (config) => {
if (config.performance.timeout < 5000) {
return {
isValid: false,
message: "Timeout too low for production use",
suggestion: "Use timeout >= 5000ms",
};
}
return { isValid: true };
});
Event Handlers¶
// Listen for config events
configManager.on("configUpdated", (newConfig, oldConfig) => {
console.log("Config updated:", { newConfig, oldConfig });
});
configManager.on("backupCreated", (backupPath) => {
console.log("Backup created:", backupPath);
});
configManager.on("configRestored", (backupPath) => {
console.log("Config restored from:", backupPath);
});
๐จ Error Recovery¶
Auto-Restore Process¶
- Detection: Config update fails validation or causes errors
- Identification: Find most recent valid backup
- Restoration: Restore config from backup
- Verification: Validate restored config
- Notification: Log recovery action
Manual Recovery¶
// Check config health
const health = await configManager.checkHealth();
if (!health.isHealthy) {
console.log("Config issues detected:", health.issues);
// Restore from backup
await configManager.autoRestore();
}
// Recovery from specific backup
try {
await configManager.restoreFromBackup("backup-name.js");
console.log("Successfully restored from backup");
} catch (error) {
console.error("Restore failed:", error.message);
}
Recovery Scenarios¶
- Corrupted Config: Auto-restore from last known good backup
- Invalid Provider: Disable problematic provider, restore working config
- Performance Issues: Restore previous performance settings
- Validation Failures: Rollback to validated configuration
๐งน Cleanup & Maintenance¶
Automatic Cleanup¶
// Configure automatic cleanup
await configManager.updateConfig({
backup: {
retention: 30, // Keep backups for 30 days
maxBackups: 100, // Keep max 100 backups
autoCleanup: true, // Enable automatic cleanup
},
});
Manual Cleanup¶
// Clean old backups
const cleaned = await configManager.cleanupBackups({
olderThan: 30, // Days
keepMinimum: 5, // Always keep at least 5 backups
});
console.log(`Cleaned ${cleaned.count} old backups`);
// Verify backup integrity
const verification = await configManager.verifyBackups();
console.log("Backup verification:", verification);
๐ Monitoring & Diagnostics¶
Config Status¶
// Get config status
const status = await configManager.getStatus();
console.log("Config status:", {
isValid: status.isValid,
lastUpdated: status.lastUpdated,
backupCount: status.backupCount,
providerStatus: status.providers,
});
Provider Health Monitoring¶
// Check provider health
const providers = await configManager.checkProviderHealth();
providers.forEach((provider) => {
console.log(`${provider.name}: ${provider.status}`);
if (provider.status === "error") {
console.log(`Error: ${provider.error}`);
}
});
Performance Metrics¶
// Get performance metrics
const metrics = await configManager.getMetrics();
console.log("Config performance:", {
updateTime: metrics.averageUpdateTime,
validationTime: metrics.averageValidationTime,
backupTime: metrics.averageBackupTime,
});
๐ Best Practices¶
Configuration Management¶
- Always Validate: Enable validation before updates
- Use Backups: Keep automatic backups enabled
- Monitor Health: Regular provider health checks
- Version Control: Consider versioning config files
- Environment Separation: Different configs for dev/prod
Performance Optimization¶
- Cache Settings: Enable caching for frequently used configs
- Timeout Tuning: Set appropriate timeouts for your use case
- Provider Selection: Use fastest available providers
- Cleanup Schedule: Regular backup cleanup
Security Considerations¶
- API Key Management: Store API keys securely
- Backup Encryption: Consider encrypting sensitive backups
- Access Control: Limit config update permissions
- Audit Logging: Log all config changes
๐ Troubleshooting¶
Common Issues¶
Config Update Fails
# Check config validation
npx @juspay/neurolink config validate
# Check provider status
npx @juspay/neurolink status
# Restore from backup
npx @juspay/neurolink config restore --backup latest
Backup System Issues
# Verify backup directory
ls -la .neurolink.backups/
# Check backup integrity
npx @juspay/neurolink config verify-backups
# Manual cleanup
npx @juspay/neurolink config cleanup --older-than 30
Provider Configuration Issues
# Test provider connection
npx @juspay/neurolink test-provider google
# Reset provider config
npx @juspay/neurolink config reset-provider google
# Check environment variables
npx @juspay/neurolink env check
Support & Resources¶
- Documentation: See API Reference for interface details
- Migration Guide: See
docs/INTERFACE-MIGRATION-GUIDE.md
- Troubleshooting: See
docs/TROUBLESHOOTING.md
- GitHub Issues: Report bugs and feature requests
๐ฏ Enterprise configuration management provides robust, reliable, and maintainable configuration handling for production NeuroLink deployments.