Skip to content

CLI Configuration Guide

Comprehensive guide to configuring the Nerve Framework through command-line interface.

Overview

The Nerve Framework provides extensive configuration options through its CLI, allowing fine-grained control over system behavior, performance tuning, and operational parameters.

Configuration Commands

System Configuration

# Show current configuration
nerve-cli config --show

# Show specific configuration section
nerve-cli config --show memory
nerve-cli config --show communication
nerve-cli config --show threads

# Export configuration to file
nerve-cli config --export config.yaml

Configuration Management

# Load configuration from file
nerve-cli config --load config.yaml

# Set configuration values
nerve-cli config --set memory.buffer_size=1024
nerve-cli config --set communication.timeout=5000
nerve-cli config --set threads.pool_size=8

# Reset configuration to defaults
nerve-cli config --reset

Configuration Validation

# Validate configuration
nerve-cli config --validate

# Check configuration syntax
nerve-cli config --check-syntax

# Test configuration with dry run
nerve-cli config --dry-run

Configuration Files

YAML Configuration Format

# nerve-config.yaml
memory:
  buffer_size: 1024
  max_message_size: 1048576
  qos_policies:
    best_effort:
      drop_threshold: 0.8
    reliable:
      max_retries: 3

communication:
  timeout: 5000
  retry_attempts: 3
  protocols:
    - name: tcp
      enabled: true
      port: 8080
    - name: websocket
      enabled: false

threads:
  pool_size: 8
  max_threads: 32
  watchdog_interval: 1000

nodes:
  discovery_timeout: 30000
  heartbeat_interval: 5000
  max_nodes: 100

monitoring:
  enabled: true
  metrics_interval: 1000
  alert_thresholds:
    memory_usage: 0.8
    cpu_usage: 0.9
    message_queue: 1000

Environment Variables

# Set configuration via environment variables
export NERVE_MEMORY_BUFFER_SIZE=1024
export NERVE_COMMUNICATION_TIMEOUT=5000
export NERVE_THREADS_POOL_SIZE=8

# Run with environment configuration
nerve-cli status

Command Line Overrides

# Override configuration via command line
nerve-cli --config memory.buffer_size=2048 status
nerve-cli --config communication.timeout=10000 --config threads.pool_size=16 perf

Configuration Sections

Memory Configuration

# Memory system configuration
nerve-cli config --set memory.buffer_size=1024
nerve-cli config --set memory.max_message_size=1048576
nerve-cli config --set memory.qos.best_effort.drop_threshold=0.8
nerve-cli config --set memory.qos.reliable.max_retries=3

Communication Configuration

# Communication system configuration
nerve-cli config --set communication.timeout=5000
nerve-cli config --set communication.retry_attempts=3
nerve-cli config --set communication.protocols.tcp.enabled=true
nerve-cli config --set communication.protocols.tcp.port=8080

Thread Configuration

# Thread system configuration
nerve-cli config --set threads.pool_size=8
nerve-cli config --set threads.max_threads=32
nerve-cli config --set threads.watchdog_interval=1000

Node Configuration

# Node registry configuration
nerve-cli config --set nodes.discovery_timeout=30000
nerve-cli config --set nodes.heartbeat_interval=5000
nerve-cli config --set nodes.max_nodes=100

Monitoring Configuration

# Monitoring system configuration
nerve-cli config --set monitoring.enabled=true
nerve-cli config --set monitoring.metrics_interval=1000
nerve-cli config --set monitoring.alert_thresholds.memory_usage=0.8
nerve-cli config --set monitoring.alert_thresholds.cpu_usage=0.9

Advanced Configuration

Performance Tuning

# Performance optimization settings
nerve-cli config --set performance.cache_size=10000
nerve-cli config --set performance.batch_size=100
nerve-cli config --set performance.compression_threshold=1024

Security Configuration

# Security settings
nerve-cli config --set security.encryption.enabled=true
nerve-cli config --set security.authentication.required=true
nerve-cli config --set security.max_connections=1000

Logging Configuration

# Logging settings
nerve-cli config --set logging.level=info
nerve-cli config --set logging.format=json
nerve-cli config --set logging.file.enabled=true
nerve-cli config --set logging.file.path="/var/log/nerve.log"

Configuration Templates

Development Configuration

# dev-config.yaml
memory:
  buffer_size: 512
  max_message_size: 65536

communication:
  timeout: 1000
  retry_attempts: 1

threads:
  pool_size: 4

monitoring:
  enabled: false

logging:
  level: debug

Production Configuration

# prod-config.yaml
memory:
  buffer_size: 4096
  max_message_size: 1048576

communication:
  timeout: 10000
  retry_attempts: 5

threads:
  pool_size: 16
  max_threads: 64

monitoring:
  enabled: true
  metrics_interval: 5000

logging:
  level: warn
  file:
    enabled: true
    path: "/var/log/nerve.log"

High-Performance Configuration

# high-perf-config.yaml
memory:
  buffer_size: 8192
  max_message_size: 2097152

communication:
  timeout: 5000
  retry_attempts: 3

threads:
  pool_size: 32
  max_threads: 128

performance:
  cache_size: 50000
  batch_size: 500
  compression_threshold: 2048

Configuration Validation

Schema Validation

# Validate configuration against schema
nerve-cli config --validate-schema

# Show configuration schema
nerve-cli config --show-schema

Runtime Validation

# Test configuration with system check
nerve-cli config --test

# Check configuration dependencies
nerve-cli config --check-dependencies

Configuration Diff

# Compare configurations
nerve-cli config --diff config1.yaml config2.yaml

# Show configuration changes
nerve-cli config --changes

Configuration Management

Version Control

# Save configuration version
nerve-cli config --save-version "v1.0.0"

# List configuration versions
nerve-cli config --list-versions

# Restore configuration version
nerve-cli config --restore-version "v1.0.0"

Configuration Backup

# Backup current configuration
nerve-cli config --backup

# Restore from backup
nerve-cli config --restore

# List available backups
nerve-cli config --list-backups

Configuration Migration

# Migrate configuration between versions
nerve-cli config --migrate old-config.yaml new-config.yaml

# Generate migration script
nerve-cli config --generate-migration

Troubleshooting

Common Configuration Issues

# Check for configuration conflicts
nerve-cli config --check-conflicts

# Validate configuration paths
nerve-cli config --validate-paths

# Test configuration loading
nerve-cli config --test-load

Debug Mode

# Enable configuration debug mode
nerve-cli config --debug

# Show configuration loading process
nerve-cli config --verbose

# Trace configuration resolution
nerve-cli config --trace

Configuration Recovery

# Reset to safe configuration
nerve-cli config --safe-reset

# Repair corrupted configuration
nerve-cli config --repair

# Validate and fix configuration
nerve-cli config --validate-fix

Best Practices

Configuration Management

  1. Use Version Control: Track configuration changes in version control
  2. Environment-Specific Configs: Maintain separate configurations for dev, staging, prod
  3. Secure Sensitive Data: Use environment variables for secrets
  4. Validate Early: Validate configuration before deployment
  5. Document Changes: Maintain change logs for configuration modifications

Performance Considerations

  • Use appropriate buffer sizes for expected message volumes
  • Configure thread pools based on available CPU cores
  • Set timeouts based on network conditions
  • Monitor and adjust configuration based on actual usage patterns

Security Considerations

  • Use secure defaults for security settings
  • Validate all configuration inputs
  • Limit configuration access to authorized users
  • Encrypt sensitive configuration data