## `portafile.yaml` Fields

- `source_template`: required, no default; allowed values: `alpine-3.17`, `centos-9-stream`, `opensuse-15.4`, `ubuntu-20.04`.
- `name`: optional, no default in YAML; pre-fills device name.
- `hostname`: optional, no default in YAML; pre-fills hostname.
- `resources`: optional object; any missing resource key falls back to defaults.
- `resources.disk_gib` (alias `disk`): optional, default `3`.
- `resources.ram_mib` (alias `ram`): optional, default `1024`.
- `resources.cpus` (aliases `cpu`, `cpu_share`): optional, default `0.1`.
- `project_paths`: optional list of project folder paths to register (for example `/workspace`).
- `instructions` or `steps`: optional list; supports string commands or objects using `command`/`cmd`/`run`.
- `expose_ports`: optional list of ports to expose.
- `metadata`: optional object for extra values.

### Example

    source_template: ubuntu-20.04
    name: Demo Service
    hostname: demo-service
    resources:
      disk_gib: 10
      ram_mib: 2048
      cpus: 0.5
    project_paths:
      - /workspace
      - /workspace/demo-service
    instructions:
      - command: sudo apt-get update
      - run: sudo apt-get install -y docker.io
    expose_ports:
      - 8080
    metadata:
      project: demo-service