Skip to content
Single Go binary · runs inside the swarm

Deploy hook and Cloudflare 
reconciler for Docker Swarm

swarmctl gives CI one endpoint to roll a new image into a running service, 
and keeps Cloudflare Tunnel ingress, DNS, and Access apps in sync with the labels on your services.

# deploy a new image from CI
curl -X POST -H "Authorization: Bearer $AUTH_TOKEN" \
  "https://swarmctl.example.com/v1/update/web_server?image=ghcr.io/you/web:sha-abc123"
# and this is all a service needs to get a hostname
labels:
  - "cloudflared.tunnel.enabled=true"
  - "cloudflared.tunnel.port=80"
  - "cloudflared.tunnel.hostname=app.example.com"