# Platform Services Configuration # Defines all platform services and their deployment configurations [services.orchestrator] name = "orchestrator" type = "platform" category = "orchestration" description = "Rust-based orchestrator for workflow coordination" required_for = ["server", "taskserv", "cluster", "workflow", "batch", "test-env"] [services.orchestrator.deployment] mode = "binary" [services.orchestrator.deployment.binary] binary_path = "${HOME}/.provisioning/bin/provisioning-orchestrator" args = ["--port", "8080", "--data-dir", "${HOME}/.provisioning/orchestrator/data"] working_dir = "${HOME}/.provisioning/orchestrator" env = {} [services.orchestrator.health_check] type = "http" interval = 10 retries = 3 timeout = 5 [services.orchestrator.health_check.http] endpoint = "http://localhost:8080/health" expected_status = 200 method = "GET" [services.orchestrator.startup] auto_start = true start_timeout = 30 start_order = 10 restart_on_failure = true max_restarts = 3 [services.orchestrator.resources] cpu_limit = "1" memory_limit = "512Mi" # Control Center - Web UI for management [services.control-center] name = "control-center" type = "platform" category = "ui" description = "Web-based control center for infrastructure management" required_for = [] dependencies = ["orchestrator"] [services.control-center.deployment] mode = "binary" [services.control-center.deployment.binary] binary_path = "${HOME}/.provisioning/bin/provisioning-control-center" args = ["--port", "8081", "--orchestrator-url", "http://localhost:8080"] working_dir = "${HOME}/.provisioning/control-center" [services.control-center.health_check] type = "http" interval = 10 retries = 3 [services.control-center.health_check.http] endpoint = "http://localhost:8081/health" expected_status = 200 [services.control-center.startup] auto_start = false start_timeout = 30 start_order = 20 # CoreDNS - Local DNS resolution [services.coredns] name = "coredns" type = "infrastructure" category = "dns" description = "Local DNS server for service discovery" required_for = ["cluster"] conflicts = ["dnsmasq", "systemd-resolved"] [services.coredns.deployment] mode = "docker" [services.coredns.deployment.docker] image = "coredns/coredns:1.11.1" container_name = "provisioning-coredns" ports = ["5353:53/udp", "5353:53/tcp"] volumes = [ "${HOME}/.provisioning/coredns/Corefile:/Corefile:ro", "${HOME}/.provisioning/coredns/zones:/zones:ro" ] restart_policy = "unless-stopped" [services.coredns.health_check] type = "tcp" interval = 10 retries = 3 [services.coredns.health_check.tcp] host = "localhost" port = 5353 [services.coredns.startup] auto_start = false start_timeout = 20 start_order = 15 # Gitea - Git server [services.gitea] name = "gitea" type = "infrastructure" category = "git" description = "Self-hosted Git service" required_for = [] [services.gitea.deployment] mode = "docker" [services.gitea.deployment.docker] image = "gitea/gitea:1.21" container_name = "provisioning-gitea" ports = ["3000:3000", "222:22"] volumes = [ "${HOME}/.provisioning/gitea/data:/data" ] environment = { USER_UID = "1000", USER_GID = "1000" } restart_policy = "unless-stopped" [services.gitea.health_check] type = "http" interval = 15 retries = 5 [services.gitea.health_check.http] endpoint = "http://localhost:3000/api/healthz" expected_status = 200 [services.gitea.startup] auto_start = false start_timeout = 45 start_order = 30 # OCI Registry - Container registry [services.oci-registry] name = "oci-registry" type = "infrastructure" category = "registry" description = "OCI-compliant container registry (Zot)" required_for = [] [services.oci-registry.deployment] mode = "docker" [services.oci-registry.deployment.docker] image = "ghcr.io/project-zot/zot:latest" container_name = "provisioning-oci-registry" ports = ["5000:5000"] volumes = [ "${HOME}/.provisioning/oci-registry/data:/var/lib/registry", "${HOME}/.provisioning/oci-registry/config.json:/etc/zot/config.json:ro" ] restart_policy = "unless-stopped" [services.oci-registry.health_check] type = "http" interval = 10 retries = 3 [services.oci-registry.health_check.http] endpoint = "http://localhost:5000/v2/" expected_status = 200 [services.oci-registry.startup] auto_start = false start_timeout = 20 start_order = 25 # MCP Server - Model Context Protocol integration [services.mcp-server] name = "mcp-server" type = "platform" category = "api" description = "Model Context Protocol server for AI integration" required_for = [] dependencies = ["orchestrator"] [services.mcp-server.deployment] mode = "binary" [services.mcp-server.deployment.binary] binary_path = "${HOME}/.provisioning/bin/provisioning-mcp-server" args = ["--port", "8082"] working_dir = "${HOME}/.provisioning/mcp-server" [services.mcp-server.health_check] type = "http" interval = 10 retries = 3 [services.mcp-server.health_check.http] endpoint = "http://localhost:8082/health" expected_status = 200 [services.mcp-server.startup] auto_start = false start_timeout = 20 start_order = 40 # API Gateway - Unified API access [services.api-gateway] name = "api-gateway" type = "platform" category = "api" description = "Unified REST API gateway" required_for = [] dependencies = ["orchestrator"] [services.api-gateway.deployment] mode = "binary" [services.api-gateway.deployment.binary] binary_path = "${HOME}/.provisioning/bin/provisioning-api-gateway" args = ["--port", "8083", "--orchestrator-url", "http://localhost:8080"] working_dir = "${HOME}/.provisioning/api-gateway" [services.api-gateway.health_check] type = "http" interval = 10 retries = 3 [services.api-gateway.health_check.http] endpoint = "http://localhost:8083/health" expected_status = 200 [services.api-gateway.startup] auto_start = false start_timeout = 20 start_order = 45