Dev Serve
/install dev-serve
dev-serve — One-Command Dev Server Hosting
Start a dev server in a tmux session and expose it via Caddy at \x3Cproject>.YOUR_DOMAIN. One command up, one command down.
Setup
-
Install the script:
cp scripts/dev-serve.sh ~/.local/bin/dev-serve chmod +x ~/.local/bin/dev-serve -
Set your domain (one of):
- Export
DEV_SERVE_DOMAINin your shell profile - Or edit the
DOMAINvariable in the script
- Export
-
Requirements:
- Caddy running with wildcard DNS + TLS (see caddy skill)
tmux,jq,curl- Caddy admin API on
localhost:2019
CLI
dev-serve up \x3Crepo-path> [port] # Start dev server + add Caddy route
dev-serve down \x3Cname> # Stop dev server + remove Caddy route
dev-serve ls # List active dev servers
dev-serve restart \x3Cname> # Restart dev server (keep Caddy route)
How It Works
- Derives subdomain from the repo folder name (
~/projects/myapp→myapp.YOUR_DOMAIN) - Detects the dev command from
package.jsonscripts.dev(supports vite, next, nuxt, sveltekit) - Auto-patches Vite
allowedHostsif a vite config file exists - Starts the dev server in a tmux session named
dev-\x3Cname>with--host 0.0.0.0 --port \x3Cport> - Adds a Caddy route + dashboard link to the Caddyfile
- Reloads Caddy via admin API (no sudo, no restart)
- Verifies end-to-end: waits for the dev server to listen, then polls HTTPS until 2xx/3xx (up to 90s)
Examples
# Start with auto-assigned port (starts at 5200, skips used ports)
dev-serve up ~/projects/myapp
# → https://myapp.YOUR_DOMAIN
# Explicit port
dev-serve up ~/projects/myapp 5200
# Override dev command
DEV_CMD="bun dev" dev-serve up ~/projects/myapp 5300
# Stop and clean up
dev-serve down myapp
# List what's running
dev-serve ls
Configuration
| Variable | Default | Description |
|---|---|---|
DEV_SERVE_DOMAIN |
(must be set) | Your wildcard domain (e.g. mini.example.com) |
DEV_SERVE_STATE_DIR |
~/.config/dev-serve |
Where state JSON is stored |
CADDYFILE |
~/.config/caddy/Caddyfile |
Path to your Caddyfile |
CADDY_ADMIN |
http://localhost:2019 |
Caddy admin API address |
DEV_CMD |
(auto-detected) | Override the dev server command |
Port Convention
- Permanent services: 3100 range (managed in Caddyfile directly)
- Dev servers: 5200+ (managed by dev-serve, auto-assigned)
Vite allowedHosts
Vite blocks requests from unrecognized hostnames. dev-serve up automatically patches vite.config.ts (or .js/.mts/.mjs) to add the subdomain. If auto-patching fails, it prints the manual fix.
Architecture
Browser (Tailscale / LAN / etc.)
→ DNS: *.YOUR_DOMAIN → your server IP
→ Caddy (HTTPS with auto certs)
→ reverse_proxy localhost:\x3Cport>
→ Dev server (in tmux session)
Companion Skills
- caddy — Required. Sets up the Caddy reverse proxy with wildcard TLS.
Troubleshooting
Dev server not starting:
tmux attach -t dev-\x3Cname> # see what happened
Cert not provisioning (curl exit 35):
Wait 30-60s for DNS-01 challenge. Check tail -20 /var/log/caddy-error.log.
Caddy reload failed:
caddy reload --config ~/.config/caddy/Caddyfile --address localhost:2019
403 from Vite:
The subdomain wasn't added to allowedHosts. Add it manually to your vite.config.ts:
server: { allowedHosts: ['myapp.YOUR_DOMAIN'] }
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install dev-serve - 安装完成后,直接呼叫该 Skill 的名称或使用
/dev-serve触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Dev Serve 是什么?
Start and manage tmux-backed dev servers exposed through Caddy at wildcard subdomains. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 471 次。
如何安装 Dev Serve?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install dev-serve」即可一键安装,无需额外配置。
Dev Serve 是免费的吗?
是的,Dev Serve 完全免费(开源免费),可自由下载、安装和使用。
Dev Serve 支持哪些平台?
Dev Serve 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Dev Serve?
由 BrennerSpear(@brennerspear)开发并维护,当前版本 v1.0.0。