From devproxy
This skill should be used when the user asks to "set up devproxy", "install devproxy", "configure HTTPS for Docker", "set up local HTTPS subdomains", "get started with devproxy", "configure DNS for devproxy", or needs a guided walkthrough for first-time devproxy installation and configuration.
How this skill is triggered — by the user, by Claude, or both
Slash command
/devproxy:setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guided walkthrough for installing and configuring devproxy from scratch. Walk through each step interactively, verifying success before proceeding to the next.
Guided walkthrough for installing and configuring devproxy from scratch. Walk through each step interactively, verifying success before proceeding to the next.
Verify Docker and Docker Compose are installed:
docker --version
docker compose version
If either is missing, guide the user to install Docker Desktop (macOS/Windows) or Docker Engine (Linux) before continuing.
Check if devproxy is already installed:
devproxy --version
If not installed, install via the install script:
curl -fsSL https://raw.githubusercontent.com/foundra-build/devproxy/main/install.sh | sh
If already installed, check for updates:
devproxy update
Verify the binary works after installation:
devproxy --version
If the binary is killed on macOS (exit code 137), Gatekeeper is blocking it. Fix with:
xattr -cr $(which devproxy)
codesign --force --sign - $(which devproxy)
Ask the user what domain they want to use. Common choices:
mysite.dev — generic<company>.dev — company-specificlocal.dev — simpleThe domain is used as the suffix for all project subdomains: https://<slug>.<domain>
Run init with the chosen domain:
devproxy init --domain <chosen-domain>
This will:
Verify the daemon started:
devproxy status
This is the most involved step. Wildcard DNS (*.<domain>) must resolve to 127.0.0.1. Standard /etc/hosts does NOT support wildcards.
brew install dnsmasq
echo "address=/.<chosen-domain>/127.0.0.1" >> $(brew --prefix)/etc/dnsmasq.conf
sudo brew services restart dnsmasq
sudo mkdir -p /etc/resolver
echo "nameserver 127.0.0.1" | sudo tee /etc/resolver/<chosen-domain>
Verify DNS resolves:
dig test.<chosen-domain> @127.0.0.1
Expect 127.0.0.1 in the response. Note: dig @127.0.0.1 queries dnsmasq directly and confirms it's working. Browsers will resolve correctly via /etc/resolver/, but curl on macOS does not use /etc/resolver/ — see the curl note in Step 6.
sudo apt install dnsmasq # or equivalent for the distro
echo "address=/.<chosen-domain>/127.0.0.1" | sudo tee -a /etc/dnsmasq.conf
sudo systemctl restart dnsmasq
Configure the system to use dnsmasq for the chosen domain. The approach varies by distro (systemd-resolved, NetworkManager, or direct /etc/resolv.conf).
For testing a single project without dnsmasq, a manual /etc/hosts entry works:
127.0.0.1 swift-penguin.<chosen-domain>
But this must be updated for each new project slug.
If the user has a Docker Compose project ready, add the devproxy label:
services:
web:
build: .
labels:
- devproxy.port=3000 # container-side port
Start the project:
devproxy up
Open the URL shown in the output. Verify HTTPS works with no certificate warnings.
If the user doesn't have a project ready, create a minimal test:
# docker-compose.yml
services:
web:
image: nginx:alpine
labels:
- devproxy.port=80
devproxy up
# => https://<slug>.<domain>
devproxy open # opens in browser — best way to verify on macOS
devproxy down # clean up test
Note on curl (macOS): curl does not use /etc/resolver/ for DNS, so it will fail with exit code 6 even when browsers resolve fine. To test with curl, use --resolve:
curl --resolve <slug>.<domain>:443:127.0.0.1 https://<slug>.<domain>
Run through the verification checklist:
devproxy status # daemon running
devproxy ls # routes listed
devproxy --version # version shown
If everything passes, the setup is complete. Remind the user:
.devproxy-override.yml to .gitignore in each projectdevproxy up / devproxy down to manage projectsdevproxy daemon restart to restart the daemon if neededdevproxy update to stay currentnpx claudepluginhub foundra-build/devproxy --plugin devproxyManages Portless local-dev HTTPS proxy: setup, custom TLD URLs, aliases, CA trust, monorepo orchestration, Tailscale sharing, and troubleshooting.
Configures reverse proxy patterns for Nginx, Traefik, and ShinyProxy including WebSocket proxying, path/host-based routing, SSL termination, and Docker label auto-discovery.
Turns application stacks into production deployments on Linux VPS with Docker Compose, Traefik, private registries, SSH tunnels, backups, and rollback planning.