Deploy across multiple servers and roles with Kamal
domain: kamal-deploy.org · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
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
Known 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
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?