Configuration Overview

RMCP’s configuration system provides flexible, hierarchical configuration loading from multiple sources with automatic validation and type conversion.

Configuration Hierarchy

Configuration values are resolved in the following priority order:

  1. Command-line arguments (highest priority)

  2. Environment variables (RMCP_* prefix)

  3. User configuration file (~/.rmcp/config.json)

  4. System configuration file (/etc/rmcp/config.json)

  5. Built-in defaults (lowest priority)

This hierarchy allows for flexible deployment scenarios where:

  • Defaults provide sensible starting values

  • System-wide configuration sets organizational policies

  • User configuration customizes personal preferences

  • Environment variables override settings for specific deployments

  • Command-line arguments provide immediate overrides for testing

Configuration Sources

Built-in Defaults

RMCP includes sensible defaults for all configuration options:

  • HTTP server binds to localhost:8000 for security

  • R timeout set to 120 seconds to prevent runaway processes

  • VFS read-only mode enabled for security

  • INFO-level logging for operational visibility

System Configuration

System administrators can set organization-wide defaults in /etc/rmcp/config.json:

{
  "security": {
    "vfs_read_only": true,
    "vfs_allowed_paths": ["/data/company"]
  },
  "r": {
    "max_sessions": 50,
    "timeout": 120
  },
  "logging": {
    "level": "INFO"
  }
}

User Configuration

Individual users can customize settings in ~/.rmcp/config.json:

{
  "http": {
    "port": 8080
  },
  "logging": {
    "level": "DEBUG"
  },
  "debug": true
}

Environment Variables

All configuration options support environment variable overrides with RMCP_* prefix:

export RMCP_HTTP_HOST=0.0.0.0
export RMCP_HTTP_PORT=9000
export RMCP_LOG_LEVEL=DEBUG

Command-Line Arguments

Command-line arguments provide the highest priority overrides:

rmcp --config custom.json --debug serve-http --port 9000

Configuration Categories

HTTP Transport

Controls HTTP server behavior:

  • Server binding address and port

  • SSL/TLS configuration

  • CORS origins for web clients

  • Security considerations

R Process Management

Manages R process execution:

  • Script execution timeouts

  • Session lifecycle and limits

  • Resource management

  • Custom R binary configuration

Security Controls

Virtual File System (VFS) security:

  • File access restrictions

  • Read-only mode enforcement

  • File size and type limits

  • Allowed filesystem paths

Performance Tuning

Resource and performance management:

  • Thread pool configuration

  • Timeout settings

  • Process cleanup controls

  • Concurrency limits

Logging Configuration

Log output control:

  • Log levels and formatting

  • Output destinations

  • Debug mode settings

Configuration Validation

Automatic Validation

RMCP automatically validates all configuration:

  • Type checking: Ensures values match expected types

  • Range validation: Ports, timeouts, and sizes within valid ranges

  • File validation: SSL certificates and paths exist if specified

  • Dependency validation: Related settings are consistent

Schema Validation

Configuration files are validated against a JSON schema:

  • Required fields must be present

  • Additional properties are allowed for extensibility

  • Nested structure must match expected format

  • Value constraints are enforced

Error Reporting

Configuration errors provide detailed information:

  • Source of the error (file, environment variable, CLI)

  • Specific validation failure

  • Suggested fixes

  • Example valid configurations

Common Patterns

Development Setup

# Quick development setup
export RMCP_DEBUG=true
export RMCP_LOG_LEVEL=DEBUG
export RMCP_VFS_READ_ONLY=false
rmcp start

Production Deployment

# Production with system config
sudo tee /etc/rmcp/config.json << EOF
{
  "http": {"host": "0.0.0.0", "port": 8000},
  "security": {"vfs_read_only": true},
  "r": {"max_sessions": 100},
  "logging": {"level": "INFO"}
}
EOF

rmcp serve-http

Docker Deployment

# Environment-based Docker config
docker run -e RMCP_HTTP_HOST=0.0.0.0 \\
           -e RMCP_R_MAX_SESSIONS=20 \\
           -p 8000:8000 rmcp:latest

Configuration Best Practices

Security

  • Keep VFS in read-only mode for production

  • Restrict allowed paths to necessary directories

  • Use SSL/TLS for external access

  • Set appropriate file size limits

Performance

  • Tune session limits based on available memory

  • Adjust timeouts for your workload

  • Configure thread pools for your CPU count

  • Monitor resource usage and adjust accordingly

Maintenance

  • Use configuration files for persistent settings

  • Use environment variables for deployment-specific overrides

  • Document configuration choices in deployment scripts

  • Validate configuration in CI/CD pipelines

Monitoring

  • Enable appropriate logging levels

  • Use debug mode for troubleshooting

  • Monitor configuration loading in application logs

  • Set up alerts for configuration validation failures