The canonical Application format used by edgible stack deploy. One YAML document describes one application; multiple documents in a single file are separated by ---.
Field Required Type Notes apiVersionyes v3The only supported value today. kindyes ApplicationThe only supported value today. metadatayes object See Metadata . specyes object See Spec .
dependsOn : [ other-app-name ] # optional
Field Required Type Notes nameyes string Unique within the organization. Lowercase, alphanumeric, hyphens. organizationyes string Your organization ID. Find with edgible config list. dependsOnno string[] Names of other applications that must be deployed before this one.
storage : [ ... ] # optional
access : [ ... ] # optional but typical
deviceName : my-first # OR
gateway : # optional — pin to a specific gateway
Field Required Type Notes strategyyes enum serving-device is the only supported value today (the cloud strategy is on the roadmap).deviceSelector.deviceNameone of string Pin to a device by its name. deviceSelector.deviceIdone of string Pin to a device by its ID. Mutually exclusive with deviceName. gatewayno object Override the automatic gateway choice. Same selector shape as deviceSelector.
A list of one or more workloads. Common fields apply to every type:
type : compose | docker | managed-process | vm | pre-existing
storage : [ ... ] # optional
dependsOn : [ ... ] # optional, names of other workloads
Field Required Type Notes nameyes string Unique within the application. typeyes enum One of compose, docker, managed-process, vm, pre-existing. portsusually array Ports the workload listens on. storageno array Storage volumes from spec.storage to mount. envno map Environment variables, string keys to string values. dependsOnno string[] Names of other workloads to start first.
composeFile : ./api.compose.yml
Field Required Type Notes composeFileyes string Path to a Docker Compose file, relative to the application YAML.
Field Required Type Notes imageyes string A pullable image reference.
command : [ " ./bin/worker " ]
logFile : /var/log/edgible/worker.log
Field Required Type Notes commandyes string[] argv. No shell expansion. workingDirno string CWD for the process. Defaults to the agent’s working directory. logFileno string Where stdout/stderr are written.
diskImage : /var/lib/edgible/vms/legacy.qcow2
Field Required Type Notes vmBackendyes enum qemu today.diskImageyes string Path on the device to a qcow2 disk image. memoryyes number MiB. cpusyes number Virtual CPUs.
Field Required Type Notes hostPortyes number A port already listening on 127.0.0.1 on the device.
- { name : http , containerPort : 8080 , protocol : tcp }
Field Required Type Notes nameyes string Used by access entries to reference this port. containerPortyes number The port number the workload listens on. protocolno enum tcp (default) or udp.
- { name : pgdata , type : persistent , size : 20Gi , mobility : device-bound }
Field Required Type Notes nameyes string Referenced by workloads[].storage[].name. typeno enum persistent (default) or ephemeral.sizeno string A size like 20Gi, 500Mi. mobilityno enum device-bound (default). Cloud-class mobility on the roadmap.
type : https | http | tcp | udp
target : { workload : <workload-name> , port : <port-name> }
hostname : { generated : true } | { custom: <fqdn-or-list> }
tls: { managedBy: edgible }
listenPort: 443 # optional override
publish: true # optional, defaults to true
auth: { mode: none | org | api-key | short-code }
Field Required Type Notes nameyes string Unique within the application. typeyes enum https, http, tcp, udp.target.workloadyes string A name from spec.workloads[]. target.portyes string A port name from that workload. hostnamehttps only object { generated: true } or { custom: <fqdn> } or { custom: [<fqdn>, ...] }.tlshttps only object { managedBy: edgible } is the only supported value today.listenPortno number Override the default port (443 for https, 80 for http). publishno bool If false, the route is configured but not exposed publicly. Defaults to true. policies.auth.modeno enum One of the four modes documented in Authentication modes .
You can put several Applications in one file, separated by ---:
edgible stack deploy -f all.yml deploys both, in dependsOn order.