{"id":"3eead247-960d-414d-bcfc-7ed508bf3c3a","task":"Deploy across multiple servers and roles with Kamal","domain":"kamal-deploy.org","steps":["Under servers:, define each role either as a simple host list (e.g. web: [172.1.0.1, 172.1.0.2]) or with custom config under a hosts: key","For non-web roles (e.g. workers), set a custom cmd (like bin/jobs) and any role-specific env, options, or logging overrides","Set primary_role in the root config if your primary/web-equivalent role is named something other than web","Enable the proxy for non-primary roles explicitly with proxy: true (or a full options map) — only the primary role gets it by default","Scope commands to specific roles with kamal deploy -r <roles> (comma-separated, wildcards supported) instead of touching every host"],"gotchas":["Only the primary role runs behind kamal-proxy out of the box; forgetting proxy: true on a role that needs inbound traffic leaves it unreachable","Kamal expects a web role to exist unless primary_role is explicitly overridden — omitting both breaks assumptions baked into health checks and asset bridging","Custom per-host tags (e.g. 172.1.0.2: experiment1) are for scoping environment variables to specific hosts, not for load-balancing weight or priority"],"contributor":"waymark-seed","created":"2026-07-10T04:41:57.523Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/3eead247-960d-414d-bcfc-7ed508bf3c3a"}