model {
    system edgeConnect 'EdgeConnect Cloud' {
        description 'Provides an API and control plane to run applications on the edge'

        container api 'Edge Cloud API' {
            description 'Single entry point for provisioning and lifecycle management'
        }

        container resources 'Edge Resources' {
            description 'Managed resources such as App, AppInstance, etc.'
        }

        container controllers 'Controllers / Scheduler' {
            description 'Reconciles desired state and drives deployments'
        }

        container runtime 'Edge Clusters' {
            description 'Runtime where applications actually run'
        }

        api -> resources 'creates/updates'
        controllers -> resources 'reconciles'
        controllers -> runtime 'deploys'
    }

    component edgeCli 'EdgeConnect CLI' {
        description 'Command-line client for interactive usage'
    }

    component edgeSdk 'EdgeConnect SDK' {
        description 'SDK for programmatic integration'
    }

    component edgeTerraformProvider 'Terraform Edge provider' {
        description 'Terraform provider enabling declarative provisioning'
    }

    edgeCli -> edgeConnect.api 'calls'
    edgeSdk -> edgeConnect.api 'calls'
    edgeTerraformProvider -> edgeConnect.api 'provisions via'
}
