> ## Documentation Index
> Fetch the complete documentation index at: https://docs.idyl.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Workloads

> How IDYL represents runnable work.

An application is the software you deploy. In IDYL, applications are usually managed through workloads.

Workloads are the resources that describe runnable work on IDYL.

A workload has a `kind`, `metadata`, `spec`, and read-only `status`. Users define the desired state in the spec. IDYL reports observed state in status when resources are inspected.

## Workload types

| Workload   | Use it when                                                     |
| ---------- | --------------------------------------------------------------- |
| Deployment | Application code should keep running.                           |
| Job        | Work should run until it completes.                             |
| CronJob    | Jobs should run on a schedule.                                  |
| Sandbox    | A disposable Linux environment should exist for a required TTL. |
| Pod        | You need to run or inspect one pod spec directly.               |
| ReplicaSet | A fixed number of identical pods should run.                    |

Builders usually create deployments and jobs, then inspect pods to see runtime state.

## Desired and observed state

Deployments, jobs, cron jobs, and replica sets describe desired work. Pods are the runtime units created from pod specs.

When you inspect a workload, IDYL can return status such as replica counts, active job counts, pod state, health status, and container status. Status fields are read-only.

## Imperative and declarative workflows

Use imperative commands when you want to create work quickly:

```bash theme={null}
idyl deploy nginx:1.25 --name web --replicas 2
idyl run busybox:latest --name debug
idyl create sandbox --image ubuntu:24.04 --ttl 2h --subnet <subnet>
```

Use manifests when you want a repeatable YAML resource definition:

```bash theme={null}
idyl apply -f app.yaml
```

## Related guides

* [Deploy a workload](/build/deploy-a-workload)
* [Create a Sandbox](/build/create-a-sandbox)
* [Use a manifest](/build/use-a-manifest)
* [Workloads resource](/resources/workloads)
