# Platform Service Configuration After verifying your installation, the next step is to configure the platform services. This guide walks you through setting up your provisioning platform for deployment. ## What You'll Learn - Understanding platform services and configuration modes - Setting up platform configurations with `setup-platform-config.sh` - Choosing the right deployment mode for your use case - Configuring services interactively or with quick mode - Running platform services with your configuration ## Prerequisites Before configuring platform services, ensure you have: - ✅ Completed [Installation Steps](02-installation.md) - ✅ Verified installation with [Verification](04-verification.md) - ✅ **Nickel** 0.10+ (for configuration language) - ✅ **Nushell** 0.109+ (for scripts) - ✅ **TypeDialog** (optional, for interactive configuration) ## Platform Services Overview The provisioning platform consists of 8 core services: | Service | Purpose | Default Mode | |---------|---------|--------------| | **orchestrator** | Main orchestration engine | Required | | **control-center** | Web UI and management console | Required | | **mcp-server** | Model Context Protocol integration | Optional | | **vault-service** | Secrets management and encryption | Required | | **extension-registry** | Extension distribution system | Required | | **rag** | Retrieval-Augmented Generation | Optional | | **ai-service** | AI model integration | Optional | | **provisioning-daemon** | Background operations | Required | ## Deployment Modes Choose a deployment mode based on your needs: | Mode | Resources | Use Case | |------|-----------|----------| | **solo** | 2 CPU, 4 GB RAM | Development, testing, local machines | | **multiuser** | 4 CPU, 8 GB RAM | Team staging, team development | | **cicd** | 8 CPU, 16 GB RAM | CI/CD pipelines, automated testing | | **enterprise** | 16+ CPU, 32+ GB | Production, high-availability | ## Step 1: Initialize Configuration Script The configuration system is managed by a standalone script that doesn't require the main installer: ```bash # Navigate to the provisioning directory cd /path/to/project-provisioning # Verify the setup script exists ls -la provisioning/scripts/setup-platform-config.sh # Make script executable chmod +x provisioning/scripts/setup-platform-config.sh ``` ## Step 2: Choose Configuration Method ### Method A: Interactive TypeDialog Configuration (Recommended) TypeDialog provides an interactive form-based configuration interface available in multiple backends (web, TUI, CLI). #### Quick Interactive Setup (All Services at Once) ```bash # Run interactive setup - prompts for choices ./provisioning/scripts/setup-platform-config.sh # Follow the prompts to: # 1. Choose action (TypeDialog, Quick Mode, Clean, List) # 2. Select service (or all services) # 3. Choose deployment mode # 4. Select backend (web, tui, cli) ``` #### Configure Specific Service with TypeDialog ```bash # Configure orchestrator in solo mode with web UI ./provisioning/scripts/setup-platform-config.sh \ --service orchestrator \ --mode solo \ --backend web # TypeDialog opens browser → User fills form → Config generated ``` **When to use TypeDialog:** - First-time setup with visual form guidance - Updating configuration with validation - Multiple services needing coordinated changes - Team environments where UI is preferred ### Method B: Quick Mode Configuration (Fastest) Quick mode automatically creates all service configurations from defaults overlaid with mode-specific tuning. ```bash # Quick setup for solo development mode ./provisioning/scripts/setup-platform-config.sh --quick-mode --mode solo # Quick setup for enterprise production ./provisioning/scripts/setup-platform-config.sh --quick-mode --mode enterprise # Result: All 8 services configured immediately with appropriate resource limits ``` **When to use Quick Mode:** - Initial setup with standard defaults - Switching deployment modes - CI/CD automated setup - Scripted/programmatic configuration ### Method C: Manual Nickel Configuration For advanced users who prefer editing configuration files directly: ```bash # View schema definition cat provisioning/schemas/platform/schemas/orchestrator.ncl # View default values cat provisioning/schemas/platform/defaults/orchestrator-defaults.ncl # View mode overlay cat provisioning/schemas/platform/defaults/deployment/solo-defaults.ncl # Edit configuration directly vim provisioning/config/runtime/orchestrator.solo.ncl # Validate Nickel syntax nickel typecheck provisioning/config/runtime/orchestrator.solo.ncl # Regenerate TOML from edited config (CRITICAL STEP) ./provisioning/scripts/setup-platform-config.sh --generate-toml ``` **When to use Manual Edit:** - Advanced customization beyond form options - Programmatic configuration generation - Integration with CI/CD systems - Custom workspace-specific overrides ## Step 3: Understand Configuration Layers The configuration system uses layered composition: ```text 1. Schema (Type contract) ↓ Defines valid fields and constraints 2. Service Defaults (Base values) ↓ Default configuration for each service 3. Mode Overlay (Mode-specific tuning) ↓ solo, multiuser, cicd, or enterprise settings 4. User Customization (Overrides) ↓ User-specific or workspace-specific changes 5. Runtime Config (Final result) ↓ provisioning/config/runtime/orchestrator.solo.ncl 6. TOML Export (Service consumption) ↓ provisioning/config/runtime/generated/orchestrator.solo.toml ``` All layers are automatically composed and validated. ## Step 4: Verify Generated Configuration After running the setup script, verify the configuration was created: ```bash # List generated runtime configurations ls -la provisioning/config/runtime/ # Check generated TOML files ls -la provisioning/config/runtime/generated/ # Verify TOML is valid cat provisioning/config/runtime/generated/orchestrator.solo.toml | head -20 ``` You should see files for all 8 services in both the runtime directory (Nickel format) and the generated directory (TOML format). ## Step 5: Run Platform Services After successful configuration, services can be started: ### Running a Single Service ```bash # Set deployment mode export ORCHESTRATOR_MODE=solo # Run the orchestrator service cd provisioning/platform cargo run -p orchestrator ``` ### Running Multiple Services ```bash # Terminal 1: Vault Service (secrets management) export VAULT_MODE=solo cargo run -p vault-service # Terminal 2: Orchestrator (main service) export ORCHESTRATOR_MODE=solo cargo run -p orchestrator # Terminal 3: Control Center (web UI) export CONTROL_CENTER_MODE=solo cargo run -p control-center # Access web UI at http://localhost:8080 (default) ``` ### Docker-Based Deployment ```bash # Start all services in Docker (requires docker-compose.yml) cd provisioning/platform/infrastructure/docker docker-compose -f docker-compose.solo.yml up # Or for enterprise mode docker-compose -f docker-compose.enterprise.yml up ``` ## Step 6: Verify Services Are Running ```bash # Check orchestrator status curl http://localhost:9000/health # Check control center web UI open http://localhost:8080 # View service logs export ORCHESTRATOR_MODE=solo cargo run -p orchestrator -- --log-level debug ``` ## Customizing Configuration ### Scenario: Change Deployment Mode If you need to switch from solo to multiuser mode: ```bash # Option 1: Re-run setup with new mode ./provisioning/scripts/setup-platform-config.sh --quick-mode --mode multiuser # Option 2: Interactive update via TypeDialog ./provisioning/scripts/setup-platform-config.sh --service orchestrator --mode multiuser --backend web # Result: All configurations updated for multiuser mode # Services read from provisioning/config/runtime/generated/orchestrator.multiuser.toml ``` ### Scenario: Manual Configuration Edit If you need fine-grained control: ```bash # 1. Edit the Nickel configuration directly vim provisioning/config/runtime/orchestrator.solo.ncl # 2. Make your changes (for example, change port, add environment variables) # 3. Validate syntax nickel typecheck provisioning/config/runtime/orchestrator.solo.ncl # 4. CRITICAL: Regenerate TOML (services won't see changes without this) ./provisioning/scripts/setup-platform-config.sh --generate-toml # 5. Verify TOML was updated stat provisioning/config/runtime/generated/orchestrator.solo.toml # 6. Restart service with new configuration pkill orchestrator export ORCHESTRATOR_MODE=solo cargo run -p orchestrator ``` ### Scenario: Workspace-Specific Overrides For workspace-specific customization: ```bash # Create workspace override file mkdir -p workspace_myworkspace/config cat > workspace_myworkspace/config/platform-overrides.ncl <<'EOF' # Workspace-specific settings { orchestrator = { server.port = 9999, # Custom port workspace.name = "myworkspace" }, control_center = { workspace.name = "myworkspace" } } EOF # Generate config with workspace overrides ./provisioning/scripts/setup-platform-config.sh --workspace workspace_myworkspace # Configuration system merges: defaults + mode overlay + workspace overrides ``` ## Available Configuration Commands ```bash # List all available modes ./provisioning/scripts/setup-platform-config.sh --list-modes # Output: solo, multiuser, cicd, enterprise # List all configurable services ./provisioning/scripts/setup-platform-config.sh --list-services # Output: orchestrator, control-center, mcp-server, vault-service, extension-registry, rag, ai-service, provisioning-daemon # List current configurations ./provisioning/scripts/setup-platform-config.sh --list-configs # Output: Shows current runtime configurations and their status # Clean all runtime configurations (use with caution) ./provisioning/scripts/setup-platform-config.sh --clean # Removes: provisioning/config/runtime/*.ncl # provisioning/config/runtime/generated/*.toml ``` ## Configuration File Locations ### Public Definitions (Part of repository) ```text provisioning/schemas/platform/ ├── schemas/ # Type contracts (Nickel) ├── defaults/ # Base configuration values │ └── deployment/ # Mode-specific: solo, multiuser, cicd, enterprise ├── validators/ # Business logic validation ├── templates/ # Configuration generation templates └── constraints/ # Validation limits ``` ### Private Runtime Configs (Gitignored) ```text provisioning/config/runtime/ # User-specific deployments ├── orchestrator.solo.ncl # Editable config ├── orchestrator.multiuser.ncl └── generated/ # Auto-generated, don't edit ├── orchestrator.solo.toml # For Rust services └── orchestrator.multiuser.toml ``` ### Examples (Reference) ```text provisioning/config/examples/ ├── orchestrator.solo.example.ncl # Solo mode reference └── orchestrator.enterprise.example.ncl # Enterprise mode reference ``` ## Troubleshooting Configuration ### Issue: Script Fails with "Nickel not found" ```bash # Install Nickel # macOS brew install nickel # Linux cargo install nickel --version 0.10 # Verify installation nickel --version # Expected: 0.10.0 or higher ``` ### Issue: Configuration Won't Generate TOML ```bash # Check Nickel syntax nickel typecheck provisioning/config/runtime/orchestrator.solo.ncl # If errors found, view detailed message nickel typecheck -i provisioning/config/runtime/orchestrator.solo.ncl # Try manual export nickel export --format toml provisioning/config/runtime/orchestrator.solo.ncl ``` ### Issue: Service Can't Read Configuration ```bash # Verify TOML file exists ls -la provisioning/config/runtime/generated/orchestrator.solo.toml # Verify file is valid TOML head -20 provisioning/config/runtime/generated/orchestrator.solo.toml # Check service is looking in right location echo $ORCHESTRATOR_MODE # Should be set to 'solo', 'multiuser', etc. # Verify environment variable is correct export ORCHESTRATOR_MODE=solo cargo run -p orchestrator --verbose ``` ### Issue: Services Won't Start After Config Change ```bash # If you edited .ncl file manually, TOML must be regenerated ./provisioning/scripts/setup-platform-config.sh --generate-toml # Verify new TOML was created stat provisioning/config/runtime/generated/orchestrator.solo.toml # Check modification time (should be recent) ls -lah provisioning/config/runtime/generated/orchestrator.solo.toml ``` ## Important Notes ### 🔒 Runtime Configurations Are Private Files in `provisioning/config/runtime/` are **gitignored** because: - May contain encrypted secrets or credentials - Deployment-specific (different per environment) - User-customized (each developer/machine has different needs) ### 📘 Schemas Are Public Files in `provisioning/schemas/platform/` are **version-controlled** because: - Define product structure and constraints - Part of official releases - Source of truth for configuration format - Shared across the team ### 🔄 Configuration Is Idempotent The setup script is safe to run multiple times: ```bash # Safe: Updates only what's needed ./provisioning/scripts/setup-platform-config.sh --quick-mode --mode enterprise # Safe: Doesn't overwrite without --clean ./provisioning/scripts/setup-platform-config.sh --generate-toml # Only deletes on explicit request ./provisioning/scripts/setup-platform-config.sh --clean ``` ### ⚠️ Installer Status The full provisioning installer (`provisioning/scripts/install.sh`) is **not yet implemented**. Currently: - ✅ Configuration setup script is standalone and ready to use - ⏳ Full installer integration is planned for future release - ✅ Manual workflow works perfectly without installer - ✅ CI/CD integration available now ## Next Steps After completing platform configuration: 1. **Run Services**: Start your platform services with configured settings 2. **Access Web UI**: Open Control Center at [http://localhost:8080](http://localhost:8080) (default) 3. **Create First Infrastructure**: Deploy your first servers and clusters 4. **Set Up Extensions**: Configure providers and task services for your needs 5. **Backup Configuration**: Back up runtime configs to private repository ## Additional Resources - [Setup Status & Current System Status](../../provisioning/config/SETUP_STATUS.md) - Quick reference for system readiness - [Configuration README](../../provisioning/config/README.md) - Detailed configuration management guide - [Setup Script Documentation](../../provisioning/scripts/setup-platform-config.sh.md) - Complete script reference - [TypeDialog Platform Config Guide](../development/typedialog-platform-config-guide.md) - Advanced configuration topics - [Deployment Guide](../operations/deployment-guide.md) - Production deployment procedures --- **Version**: 1.0.0 **Last Updated**: 2026-01-05 **Difficulty**: Beginner to Intermediate