# canvas

> Presentation-only dashboard layout.

Presentation-only dashboard layout. It never changes deployed resources or cost.

- **Type:** object
- **Since:** manifest v1

## Example

```yaml
canvas: |-
  canvas:
    layout: manual
    direction: LR
    nodes:
      services.web: { x: 0, y: 0 }
      services.api: { x: 320, y: 0 }
      cron.nightly-report: { x: 320, y: 200, collapsed: true }
      databases.main: { x: 640, y: 0 }
    groups:
      - { name: backend, label: Back end, nodes: [services.api, cron.nightly-report], colour: blue }
    viewport: { x: 0, y: 0, zoom: 1 }
```

## Fields

| Field | Type | What it does |
| --- | --- | --- |
| [`layout`](/docs/manifest/canvas/layout/) | `auto`, `manual` | Layout mode. |
| [`direction`](/docs/manifest/canvas/direction/) | `LR`, `TB` | Automatic arrangement direction. |
| [`nodes`](/docs/manifest/canvas/nodes/) | map of names to object | Pinned node positions, keyed by KIND.NAME. |
| [`groups`](/docs/manifest/canvas/groups/) | list of object | Named visual groups of canvas nodes. |
| [`viewport`](/docs/manifest/canvas/viewport/) | object | Saved canvas viewport coordinates and zoom. |
