做了一个本地开发网关 Coulson,灵感来自早年 macOS 上的 Pow,用 Rust 重写并大幅扩展。
核心思路:告别 localhost:端口号,每个项目一个 .local 域名,链接即用。
本地开发经常遇到:
Coulson 用一套方案覆盖这些场景。
安装:下载 Coulson.app 打开即可,守护进程自动启动。
已有服务跑在 3000 端口:
echo 3000 > ~/.coulson/myapp
# 访问 http://myapp.coulson.local:18080/
文件名就是域名前缀,写入端口号就完事了。
软链接项目到 ~/.coulson/,Coulson 自动识别并管理进程:
ln -s ~/Projects/hello ~/.coulson/hello
# 访问 http://hello.coulson.local:18080/
app.py + pyproject.toml → 自动用 uvicorn/granian 启动package.json → 自动识别包管理器(bun/pnpm/yarn/npm),运行 dev 脚本空闲 15 分钟自动回收,下次访问再拉起。
在 Web 控制台或菜单栏应用中给项目开启「LAN Access」,.local 域名通过 mDNS 发布,同网段的手机、平板等设备即可直接访问。
coulson tunnel start myapp
生成公网链接(基于 Cloudflare Tunnel),发给任何人即可访问。支持快速隧道(随机 URL)和命名隧道(自有域名泛解析,新增项目即时可达)。
对项目开启 Inspect,网关自动记录每个请求的完整信息,可在 Web 控制台回看并一键重放。调试 webhook 不用再让对方重发。
在外面用手机或平板 SSH 到开发机,通过 Claude Code、OpenCode、Codex 这些终端工具 vibe coding,服务跑起来了但没法预览。开一条 Tunnel,项目即时获得公网地址,在手机浏览器里直接看效果。
sudo coulson trust 一键信任本地 CA,开启 HTTPSsudo coulson trust --pf 接管 80/443,省略端口号Rust + Pingora(Cloudflare 开源的反向代理库)、Swift(macOS 菜单栏应用)。