---
application_id: "web-app-homeassistant"
entity_name: "{{ application_id | entity_name }}"
domain: "{{ lookup('domain', application_id) }}"
http_port: "{{ lookup('config', application_id, 'services.homeassistant.ports.local.http') }}"
HOMEASSISTANT_CONTAINER: "{{ lookup('config', application_id, 'services.homeassistant.name') }}"
HOMEASSISTANT_CONFIG_PATH_HOST: "{{ [ lookup('container', application_id, 'directories.config'), 'configuration.yaml' ] | path_join }}"
HOMEASSISTANT_PORT_INTERNAL: "{{ lookup('config', application_id, 'services.homeassistant.ports.internal.http') }}"
HOMEASSISTANT_MCP_ENABLED: "{{ lookup('config', application_id, 'mcp.enabled') }}"
HOMEASSISTANT_ADMIN_USERNAME: "{{ lookup('users', 'platform_administrator').username }}"
HOMEASSISTANT_ADMIN_PASSWORD: "{{ lookup('users', 'platform_administrator').password }}"
HOMEASSISTANT_TOKEN_CLIENT_NAME: "infinito-mcp"
HOMEASSISTANT_CONFIG_DIR: "{{ lookup('volume', application_id, 'homeassistant_config').target }}"
HOMEASSISTANT_LOGIN_REFUSED: "home assistant refused the login of"
HOMEASSISTANT_MCP_ACCOUNT: "{{ lookup('users', 'mcp-web-app-homeassistant') }}"
HOMEASSISTANT_MCP_ACCOUNT_USERNAME: "{{ HOMEASSISTANT_MCP_ACCOUNT.username }}"
HOMEASSISTANT_MCP_ACCOUNT_NAME: "Infinito MCP"
HOMEASSISTANT_MCP_ACCOUNT_GROUP: "system-read-only"
HOMEASSISTANT_MCP_ACCOUNT_PASSWORD: "{{ HOMEASSISTANT_MCP_ACCOUNT.password }}"
HOMEASSISTANT_OWNER_ENVIRONMENT:
HA_PORT: "{{ HOMEASSISTANT_PORT_INTERNAL | string }}"
HA_USERNAME: "{{ HOMEASSISTANT_ADMIN_USERNAME }}"
HA_PASSWORD: "{{ HOMEASSISTANT_ADMIN_PASSWORD }}"
HA_OWNER_ONLY: "1"
HA_LOCATION_NAME: "{{ HOMEASSISTANT_LOCATION_NAME }}"
HOMEASSISTANT_OWNER_PASSWORD_ARGUMENTS:
- auth
- --config
- "{{ HOMEASSISTANT_CONFIG_DIR }}"
- change_password
- "{{ HOMEASSISTANT_ADMIN_USERNAME }}"
- "{{ HOMEASSISTANT_ADMIN_PASSWORD }}"
HOMEASSISTANT_DESIGN_ENABLED: "{{ lookup('config', application_id, 'services.design.enabled') | bool }}"
HOMEASSISTANT_LOCATION_NAME: "{{ lookup('design', application_id).title if (HOMEASSISTANT_DESIGN_ENABLED | bool) and lookup('design', application_id).title is string
else '' }}"
HOMEASSISTANT_DESIGN_THEME: "{{ SOFTWARE_NAME }}"
HOMEASSISTANT_DESIGN_PRIMARY: "{{ lookup('design_palette', lookup('config', 'web-svc-design', 'services.design.colors.base')).light['--design-primary'] }}"
HOMEASSISTANT_DESIGN_VARIABLES:
primary-background-color: "var(--design-surface-1)"
card-background-color: "var(--design-surface-2)"
secondary-background-color: "var(--design-surface-3)"
clear-background-color: "var(--design-surface-2)"
primary-text-color: "var(--design-text)"
secondary-text-color: "var(--design-text-muted)"
text-primary-color: "var(--design-surface-1)"
text-light-primary-color: "var(--design-text)"
disabled-text-color: "var(--design-border-strong)"
primary-color: "var(--design-link)"
dark-primary-color: "var(--design-link)"
darker-primary-color: "var(--design-text)"
light-primary-color: "var(--design-primary-200)"
accent-color: "var(--design-link)"
divider-color: "var(--design-border)"
outline-color: "var(--design-border)"
outline-hover-color: "var(--design-border-strong)"
scrollbar-thumb-color: "var(--design-border-strong)"
state-icon-color: "var(--design-text-muted)"
rgb-primary-color: "var(--design-link-rgb)"
rgb-accent-color: "var(--design-link-rgb)"
rgb-primary-text-color: "var(--design-text-rgb)"
rgb-secondary-text-color: "var(--design-text-muted-rgb)"
rgb-text-primary-color: "var(--design-surface-1-rgb)"
rgb-card-background-color: "var(--design-surface-2-rgb)"
error-color: "var(--design-danger)"
rgb-error-color: "var(--design-danger-rgb)"
warning-color: "var(--design-warning)"
rgb-warning-color: "var(--design-warning-rgb)"
success-color: "var(--design-success)"
rgb-success-color: "var(--design-success-rgb)"
info-color: "var(--design-info)"
rgb-info-color: "var(--design-info-rgb)"
input-fill-color: "var(--design-surface-3)"
input-disabled-fill-color: "var(--design-surface-3)"
input-ink-color: "var(--design-text)"
input-label-ink-color: "var(--design-text-muted)"
input-disabled-ink-color: "var(--design-border-strong)"
input-dropdown-icon-color: "var(--design-text-muted)"
input-idle-line-color: "var(--design-border-strong)"
input-hover-line-color: "var(--design-text)"
input-disabled-line-color: "var(--design-border)"
input-outlined-idle-border-color: "var(--design-border-strong)"
input-outlined-hover-border-color: "var(--design-text)"
input-outlined-disabled-border-color: "var(--design-border)"
ha-color-focus: "var(--design-link)"
ha-color-text-primary: "var(--design-text)"
ha-color-text-secondary: "var(--design-text-muted)"
ha-color-text-disabled: "var(--design-border-strong)"
ha-color-text-link: "var(--design-link)"
ha-color-text-primary-inverted: "var(--design-surface-1)"
ha-color-text-secondary-inverted: "var(--design-surface-3)"
ha-color-surface-default: "var(--design-surface-2)"
ha-color-surface-low: "var(--design-surface-1)"
ha-color-surface-lower: "var(--design-surface-3)"
ha-color-surface-default-inverted: "var(--design-text)"
ha-color-surface-low-inverted: "var(--design-text)"
ha-color-surface-lower-inverted: "var(--design-text)"
ha-color-on-surface-default: "var(--design-text)"
ha-color-form-background: "var(--design-surface-3)"
ha-color-form-background-hover: "var(--design-surface-hover)"
ha-color-form-background-disabled: "var(--design-surface-3)"
ha-color-border-neutral-quiet: "var(--design-border)"
ha-color-border-neutral-normal: "var(--design-border-strong)"
ha-color-border-neutral-loud: "var(--design-text-muted)"
ha-color-border-primary-quiet: "var(--design-border)"
ha-color-border-primary-normal: "var(--design-link)"
ha-color-border-primary-loud: "var(--design-link)"
ha-color-fill-primary-quiet-resting: "var(--design-surface-3)"
ha-color-fill-primary-quiet-hover: "var(--design-surface-hover)"
ha-color-fill-primary-quiet-active: "var(--design-surface-active)"
ha-color-fill-primary-normal-resting: "var(--design-surface-3)"
ha-color-fill-primary-normal-hover: "var(--design-surface-hover)"
ha-color-fill-primary-normal-active: "var(--design-surface-active)"
ha-color-fill-primary-loud-resting: "var(--design-primary)"
ha-color-fill-primary-loud-hover: "var(--design-primary-hover)"
ha-color-fill-primary-loud-active: "var(--design-primary-active)"
ha-color-on-primary-quiet: "var(--design-link)"
ha-color-on-primary-normal: "var(--design-link)"
ha-color-on-primary-loud: "var(--design-on-primary)"
ha-color-fill-neutral-quiet-resting: "var(--design-surface-3)"
ha-color-fill-neutral-quiet-hover: "var(--design-surface-hover)"
ha-color-fill-neutral-quiet-active: "var(--design-surface-active)"
ha-color-fill-neutral-normal-resting: "var(--design-surface-3)"
ha-color-fill-neutral-normal-hover: "var(--design-surface-hover)"
ha-color-fill-neutral-normal-active: "var(--design-surface-active)"
ha-color-fill-neutral-loud-resting: "var(--design-text-muted)"
ha-color-fill-neutral-loud-hover: "var(--design-text)"
ha-color-fill-neutral-loud-active: "var(--design-text)"
ha-color-on-neutral-quiet: "var(--design-text-muted)"
ha-color-on-neutral-normal: "var(--design-text)"
ha-color-on-neutral-loud: "var(--design-surface-1)"
ha-color-fill-disabled-quiet-resting: "var(--design-surface-3)"
ha-color-fill-disabled-quiet-hover: "var(--design-surface-3)"
ha-color-fill-disabled-normal-resting: "var(--design-surface-3)"
ha-color-fill-disabled-normal-hover: "var(--design-surface-3)"
ha-color-fill-disabled-loud-resting: "var(--design-border)"
ha-color-fill-disabled-loud-hover: "var(--design-border)"
ha-color-on-disabled-quiet: "var(--design-border-strong)"
ha-color-on-disabled-normal: "var(--design-border-strong)"
ha-color-on-disabled-loud: "var(--design-text-muted)"
ha-color-border-danger-quiet: "var(--design-danger-border)"
ha-color-border-danger-normal: "var(--design-danger-border)"
ha-color-border-danger-loud: "var(--design-danger)"
ha-color-fill-danger-quiet-resting: "var(--design-danger-subtle)"
ha-color-fill-danger-quiet-hover: "var(--design-surface-hover)"
ha-color-fill-danger-quiet-active: "var(--design-surface-active)"
ha-color-fill-danger-normal-resting: "var(--design-danger-subtle)"
ha-color-fill-danger-normal-hover: "var(--design-surface-hover)"
ha-color-fill-danger-normal-active: "var(--design-surface-active)"
ha-color-fill-danger-loud-resting: "var(--design-danger)"
ha-color-fill-danger-loud-hover: "var(--design-danger-hover)"
ha-color-fill-danger-loud-active: "var(--design-danger-active)"
ha-color-on-danger-quiet: "var(--design-danger)"
ha-color-on-danger-normal: "var(--design-danger)"
ha-color-on-danger-loud: "var(--design-on-danger)"
ha-color-border-warning-quiet: "var(--design-warning-border)"
ha-color-border-warning-normal: "var(--design-warning-border)"
ha-color-border-warning-loud: "var(--design-warning)"
ha-color-fill-warning-quiet-resting: "var(--design-warning-subtle)"
ha-color-fill-warning-quiet-hover: "var(--design-surface-hover)"
ha-color-fill-warning-quiet-active: "var(--design-surface-active)"
ha-color-fill-warning-normal-resting: "var(--design-warning-subtle)"
ha-color-fill-warning-normal-hover: "var(--design-surface-hover)"
ha-color-fill-warning-normal-active: "var(--design-surface-active)"
ha-color-fill-warning-loud-resting: "var(--design-warning)"
ha-color-fill-warning-loud-hover: "var(--design-warning-hover)"
ha-color-fill-warning-loud-active: "var(--design-warning-active)"
ha-color-on-warning-quiet: "var(--design-warning)"
ha-color-on-warning-normal: "var(--design-warning)"
ha-color-on-warning-loud: "var(--design-on-warning)"
ha-color-border-success-quiet: "var(--design-success-border)"
ha-color-border-success-normal: "var(--design-success-border)"
ha-color-border-success-loud: "var(--design-success)"
ha-color-fill-success-quiet-resting: "var(--design-success-subtle)"
ha-color-fill-success-quiet-hover: "var(--design-surface-hover)"
ha-color-fill-success-quiet-active: "var(--design-surface-active)"
ha-color-fill-success-normal-resting: "var(--design-success-subtle)"
ha-color-fill-success-normal-hover: "var(--design-surface-hover)"
ha-color-fill-success-normal-active: "var(--design-surface-active)"
ha-color-fill-success-loud-resting: "var(--design-success)"
ha-color-fill-success-loud-hover: "var(--design-success-hover)"
ha-color-fill-success-loud-active: "var(--design-success-active)"
ha-color-on-success-quiet: "var(--design-success)"
ha-color-on-success-normal: "var(--design-success)"
ha-color-on-success-loud: "var(--design-on-success)"