Compose Labels (x-arcane)
Reference for the x-arcane Compose extension and Arcane container labels.
This is the reference for the x-arcane Compose extension and the com.getarcaneapp.arcane.* container labels. Use them to set project and container icons, add links to a project, configure the updater, and hide containers from the default list.
Arcane turns x-arcane settings into container labels when it loads the Compose file. Docker Compose run outside Arcane ignores x-arcane, so in that case, and for standalone containers, set the labels directly. After changing either, deploy or recreate the containers through Arcane to apply them.
Set project icons and links
Add an x-arcane block at the top level of compose.yaml:
x-arcane:
icon-light: nginx
icon-dark: nginx
urls:
- https://docs.example.com
- https://github.com/example/repo
services:
nginx:
image: nginx:alpine| Field | Meaning |
|---|---|
icon-light | Light-coloured icon, shown when Arcane uses the dark theme. |
icon-dark | Dark-coloured icon, shown when Arcane uses the light theme. |
icon | Single icon for both themes, used only when neither of the above is set. |
urls | Extra links shown next to the project, such as docs or a homepage. |
Project tags can also be declared here; see Projects.
Set service icons
Service icons are set with labels, not x-arcane:
services:
nginx:
image: nginx:alpine
labels:
- com.getarcaneapp.arcane.icon-light=nginx
- com.getarcaneapp.arcane.icon-dark=nginxThe labels work like the project fields above, and com.getarcaneapp.arcane.icon is the single-icon fallback. The short forms arcane.icon, arcane.icon-light, and arcane.icon-dark also work. Project icons and service icons are independent: one never changes the other.
Icon values are either absolute http:// or https:// URLs, which are used as-is, or slugs from your icon catalog. Data URIs and base64 icons are not supported. The Icon Catalog setting in your account preferences decides how slugs resolve:
| Catalog | nginx resolves to |
|---|---|
| selfh.st (default) | https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/nginx.svg |
| Dashboard Icons | https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/nginx.svg |
icon-light and icon-dark slugs get -light or -dark added before .svg, so icon-light: nginx resolves to nginx-light.svg. The single icon slug uses the base file.
Hide containers
Set hidden: true to leave a service’s containers out of the default container list and dashboard counts:
services:
worker:
image: ghcr.io/acme/worker:latest
x-arcane:
hidden: trueA top-level x-arcane.hidden: true applies to every service, and hidden: false on a service keeps that service visible. An explicit com.getarcaneapp.arcane.hidden label overrides both. Outside Arcane, use the label:
labels:
com.getarcaneapp.arcane.hidden: 'true'To see hidden containers, turn on Show Hidden Containers in the container table’s view options.
Updater behavior
Set project defaults under x-arcane.updater, then override individual fields per service:
x-arcane:
updater:
strategy: auto
constraint: '3.x'
services:
first:
image: alpine:3.20.0
x-arcane:
updater:
constraint: '=3.20.1'
second:
image: alpine:3.20.0
x-arcane:
updater:
enabled: false| Field | Label | Meaning |
|---|---|---|
enabled | com.getarcaneapp.arcane.updater | Boolean. false stops automatic installation; the container is still checked. It does not turn on the environment’s auto-update schedule. |
strategy | com.getarcaneapp.arcane.updater.strategy | digest (default), auto, or tag. |
constraint | com.getarcaneapp.arcane.updater.constraint | Semantic version range, such as 3.x, 3.20.x, or =3.20.1. Without one, version updates stay within the current major, or current minor for 0.x. |
tag-pattern | com.getarcaneapp.arcane.updater.tag-pattern | Regex the whole tag must match. A named version capture extracts the version from variant tags; without one, the whole tag must be a semantic version. |
Each field is resolved separately, first match wins:
- An explicit label on the service.
- The service’s
x-arcane.updaterfield. - The project’s
x-arcane.updaterdefault.
An empty constraint or tag-pattern string clears an inherited value. Arcane can check project metadata before any containers exist, and the Compose editor offers completions and hover help for these fields.
What each strategy does, and how updates are checked and applied, is explained in Auto Updates.
Reference
Container labels
| Label | Purpose |
|---|---|
com.getarcaneapp.arcane.icon | Fallback service icon. |
com.getarcaneapp.arcane.icon-light | Light-coloured service icon for the dark theme. |
com.getarcaneapp.arcane.icon-dark | Dark-coloured service icon for the light theme. |
com.getarcaneapp.arcane.hidden | Hide the container from the default list. |
com.getarcaneapp.arcane.updater | Allow or block automatic installation. |
com.getarcaneapp.arcane.updater.strategy | Update strategy. |
com.getarcaneapp.arcane.updater.constraint | Version range for tag updates. |
com.getarcaneapp.arcane.updater.tag-pattern | Tag regex for tag updates. |
com.getarcaneapp.arcane.update-check | false stops update checks and notifications. No x-arcane field. |
com.getarcaneapp.arcane.depends-on | Comma-separated container names to restart in order during updates. No x-arcane field. |
com.getarcaneapp.arcane.stop-signal | Signal used to stop the container during updates. No x-arcane field. |
The last three are explained under Per-container labels.