# arc.yaml reference

Generated from the code · as of CLI 0.6.0

`arc.yaml` sits next to your `docker-compose.yml`. Compose runs as written, and `arc.yaml` says what compose cannot: which service answers HTTP, which services hold personal data and how to anonymize it, and how much the arc needs.

Every key is listed here, with its type, whether you must write it, and the errors it can raise. The file can be at most 64 KiB when you deploy.

For completion and checking as you type, put this comment on the first line of `arc.yaml`. Editors that use the YAML language server, such as VS Code with the Red Hat YAML extension, read it:

```yaml
# yaml-language-server: $schema=https://docs.omniarc.eu/schema/arc.yaml.json
```

| Key | Type | Required | What it is |
| --- | --- | --- | --- |
| [`arc`](https://docs.omniarc.eu/reference/arc-yaml/arc.md) | string | yes | The name of the arc this file belongs to. |
| [`compose`](https://docs.omniarc.eu/reference/arc-yaml/compose.md) | list of strings | no, default compose's own file lookup | The compose files to use, in order. |
| [`profiles`](https://docs.omniarc.eu/reference/arc-yaml/profiles.md) | list of strings | no, default none | The compose profiles to turn on. |
| [`edge`](https://docs.omniarc.eu/reference/arc-yaml/edge.md) | `none` or map | yes | Which service answers HTTP for the arc, or none if nothing should. |
| [`recordsize`](https://docs.omniarc.eu/reference/arc-yaml/recordsize.md) | string, a power of two from 4KiB to 1MiB | no, default 16KiB with a deployed database, document or forge kind, otherwise 128KiB | The block size the arc's storage uses. |
| [`resources`](https://docs.omniarc.eu/reference/arc-yaml/resources.md) | map | no | How much CPU, memory and disk the arc needs. |
| [`ready_timeout_secs`](https://docs.omniarc.eu/reference/arc-yaml/ready-timeout-secs.md) | integer, 1 to 3600 | no, default 300 | How many seconds OmniArc waits for the services to become ready. |
| [`services`](https://docs.omniarc.eu/reference/arc-yaml/services.md) | map of service name to entry | yes | One entry for each service in your compose project. |

**Example: shop/arc.yaml**

```yaml
arc: shop
edge: { service: web, port: 3000 }
resources: { cpu: "1", memory: 1Gi, disk: 5Gi }
services:
  web:
    kind: web-service
    contains_pii: false
  db:
    kind: database
    contains_pii: true
    anonymize:
      engine: postgres
      database: shop
      user: shop
      rules:
        - { table: customers, column: email, transform: fake-email }
```
