Skip to main content
Deploy an application imperatively from the command line. Automatically creates the appropriate resource type:
  • Job: when —completions or —parallelism is specified
  • Deployment: otherwise (default)
Use —platform, —isolation-class, and —network-class to declare workload runtime intent. Admission and scheduling still require a target subnet policy and provider nodes that match the requested runtime capabilities. For isolated microVM admission, declare linux/amd64, microvm isolation, and a network class of none or restricted-egress. The CLI records this intent; the platform validates it before scheduling.

Usage

idyl deploy IMAGE [flags]

Flags

FlagDescription
--backoff-limit <uint64>Number of retries before marking Job as failed Default: 6.
--completions <uint64>Number of successful completions for a Job Default: 0.
--cpu <string>CPU limit (e.g., 500m, 1; default from config)
-e <stringArray>, --env <stringArray>Environment variable (KEY=VALUE, repeatable)
--gpu <string>GPU requirement (e.g., rtx5090, 2:h100, nvidia:24Gi)
--isolation-class <string>Workload isolation class (container or microvm); must be allowed by the target subnet
--memory <string>Memory limit (e.g., 256Mi, 1Gi; default from config)
--name <string>Required. Name for the resource
-n <string>, --namespace <string>Namespace name (overrides context)
--network-class <string>Workload network class (none, restricted-egress, unrestricted)
--parallelism <uint64>Maximum parallel pods for a Job Default: 0.
--platform <string>Target workload platform (linux/amd64 or linux/arm64)
--replicas <uint64>Number of replicas for Deployment Default: 1.
--restart <string>Restart policy (always, on_failure, never) Default: always.
--subnet <string>Subnet for workload placement

Inherited flags

FlagDescription
-a <string>, --account-id <string>Account ID to use (overrides context)
-c <string>, --context <string>Use specific context
--homedir <string>Override config directory (default: ~/.idyl)
-o <string>, --output <string>Output format (json|yaml)
-p <string>, --profile <string>Override profile
--realm <string>Override realm

Examples

# Deploy a single-replica deployment
idyl deploy nginx

# Deploy a deployment with 3 replicas
idyl deploy nginx --replicas=3

# Deploy a job that runs to completion
idyl deploy busybox --completions=5 --parallelism=2

# Deploy with resource limits
idyl deploy myapp:v2 --name=api --cpu=500m --memory=256Mi

# Deploy with GPU requirements
idyl deploy vllm:latest --name=llm --gpu=rtx5090
idyl deploy nvidia/cuda:12.0 --name=gpu-job --gpu="2:h100"
idyl deploy ollama --name=inference --gpu="nvidia:24Gi"

# Declare container isolation intent
idyl deploy nginx --name=web --platform linux/amd64 --isolation-class container

# Declare microVM isolation intent
idyl deploy nginx --name=web --platform linux/amd64 --isolation-class microvm

# Use the subnet default isolation class, when configured by runtime policy
idyl deploy nginx --name=web --subnet=microvm-subnet --platform linux/amd64

# Declare isolated microVM intent with no workload network
idyl deploy nginx --name=web --platform linux/amd64 --isolation-class microvm --network-class none

# Deploy to a subnet
idyl deploy nginx --name=web --subnet=my-subnet