# Prerequisites\n\nBefore installing the Provisioning Platform, ensure your system meets the following requirements.\n\n## Hardware Requirements\n\n### Minimum Requirements (Solo Mode)\n\n- **CPU**: 2 cores\n- **RAM**: 4 GB\n- **Disk**: 20 GB available space\n- **Network**: Internet connection for downloading dependencies\n\n### Recommended Requirements (Multi-User Mode)\n\n- **CPU**: 4 cores\n- **RAM**: 8 GB\n- **Disk**: 50 GB available space\n- **Network**: Reliable internet connection\n\n### Production Requirements (Enterprise Mode)\n\n- **CPU**: 16 cores\n- **RAM**: 32 GB\n- **Disk**: 500 GB available space (SSD recommended)\n- **Network**: High-bandwidth connection with static IP\n\n## Operating System\n\n### Supported Platforms\n\n- **macOS**: 12.0 (Monterey) or later\n- **Linux**:\n  - Ubuntu 22.04 LTS or later\n  - Fedora 38 or later\n  - Debian 12 (Bookworm) or later\n  - RHEL 9 or later\n\n### Platform-Specific Notes\n\n**macOS**:\n\n- Xcode Command Line Tools required\n- Homebrew recommended for package management\n\n**Linux**:\n\n- systemd-based distribution recommended\n- sudo access required for some operations\n\n## Required Software\n\n### Core Dependencies\n\n| Software | Version | Purpose |\n| ---------- | --------- | --------- |\n| **Nushell** | 0.107.1+ | Shell and scripting language |\n| **Nickel** | 1.15.0+ | Configuration language |\n| **Docker** | 20.10+ | Container runtime (for platform services) |\n| **SOPS** | 3.10.2+ | Secrets management |\n| **Age** | 1.2.1+ | Encryption tool |\n\n### Optional Dependencies\n\n| Software | Version | Purpose |\n| ---------- | --------- | --------- |\n| **Podman** | 4.0+ | Alternative container runtime |\n| **OrbStack** | Latest | macOS-optimized container runtime |\n| **K9s** | 0.50.6+ | Kubernetes management interface |\n| **glow** | Latest | Markdown renderer for guides |\n| **bat** | Latest | Syntax highlighting for file viewing |\n\n## Installation Verification\n\nBefore proceeding, verify your system has the core dependencies installed:\n\n### Nushell\n\n```\n# Check Nushell version\nnu --version\n\n# Expected output: 0.107.1 or higher\n```\n\n### Nickel\n\n```\n# Check Nickel version\nnickel --version\n\n# Expected output: 1.15.0 or higher\n```\n\n### Docker\n\n```\n# Check Docker version\ndocker --version\n\n# Check Docker is running\ndocker ps\n\n# Expected: Docker version 20.10+ and connection successful\n```\n\n### SOPS\n\n```\n# Check SOPS version\nsops --version\n\n# Expected output: 3.10.2 or higher\n```\n\n### Age\n\n```\n# Check Age version\nage --version\n\n# Expected output: 1.2.1 or higher\n```\n\n## Installing Missing Dependencies\n\n### macOS (using Homebrew)\n\n```\n# Install Homebrew if not already installed\n/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"\n\n# Install Nushell\nbrew install nushell\n\n# Install Nickel\nbrew install nickel\n\n# Install Docker Desktop\nbrew install --cask docker\n\n# Install SOPS\nbrew install sops\n\n# Install Age\nbrew install age\n\n# Optional: Install extras\nbrew install k9s glow bat\n```\n\n### Ubuntu/Debian\n\n```\n# Update package list\nsudo apt update\n\n# Install prerequisites\nsudo apt install -y curl git build-essential\n\n# Install Nushell (from GitHub releases)\ncurl -LO https://github.com/nushell/nushell/releases/download/0.107.1/nu-0.107.1-x86_64-linux-musl.tar.gz\ntar xzf nu-0.107.1-x86_64-linux-musl.tar.gz\nsudo mv nu /usr/local/bin/\n\n# Install Nickel (using Rust cargo)\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env\ncargo install nickel\n\n# Install Docker\nsudo apt install -y docker.io\nsudo systemctl enable --now docker\nsudo usermod -aG docker $USER\n\n# Install SOPS\ncurl -LO https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64\nchmod +x sops-v3.10.2.linux.amd64\nsudo mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops\n\n# Install Age\nsudo apt install -y age\n```\n\n### Fedora/RHEL\n\n```\n# Install Nushell\nsudo dnf install -y nushell\n\n# Install Nickel (using Rust cargo)\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env\ncargo install nickel\n\n# Install Docker\nsudo dnf install -y docker\nsudo systemctl enable --now docker\nsudo usermod -aG docker $USER\n\n# Install SOPS\nsudo dnf install -y sops\n\n# Install Age\nsudo dnf install -y age\n```\n\n## Network Requirements\n\n### Firewall Ports\n\nIf running platform services, ensure these ports are available:\n\n| Service | Port | Protocol | Purpose |\n| --------- | ------ | ---------- | --------- |\n| Orchestrator | 8080 | HTTP | Workflow API |\n| Control Center | 9090 | HTTP | Policy engine |\n| KMS Service | 8082 | HTTP | Key management |\n| API Server | 8083 | HTTP | REST API |\n| Extension Registry | 8084 | HTTP | Extension discovery |\n| OCI Registry | 5000 | HTTP | Artifact storage |\n\n### External Connectivity\n\nThe platform requires outbound internet access to:\n\n- Download dependencies and updates\n- Pull container images\n- Access cloud provider APIs (AWS, UpCloud)\n- Fetch extension packages\n\n## Cloud Provider Credentials (Optional)\n\nIf you plan to use cloud providers, prepare credentials:\n\n### AWS\n\n- AWS Access Key ID\n- AWS Secret Access Key\n- Configured via `~/.aws/credentials` or environment variables\n\n### UpCloud\n\n- UpCloud username\n- UpCloud password\n- Configured via environment variables or config files\n\n## Next Steps\n\nOnce all prerequisites are met, proceed to:\n→ **[Installation](02-installation.md)**
