What is Hatch?
Local HTTPS development tool for macOS with .test domains, trusted certificates, and reverse proxying.
Last updated: March 5, 2025
What is Hatch?
If you work on more than one project at a time, you’ve probably lost track of which one runs on port 3000 and which is on 3001. Or hit a conflict because two things want the same port. Or had to explain to a colleague how to set up their /etc/hosts and trust a self-signed certificate.
Hatch fixes all of that. It gives every project a real .test domain with trusted HTTPS, automatic DNS, and reverse proxying. No port numbers to remember, no certificate warnings, no manual config.
https://myapp.test -> http://localhost:3000
https://api.myapp.test -> http://localhost:8080
https://docs.myapp.test -> http://localhost:4000
One binary, one config file, and everything just works.
How it works
Hatch runs a lightweight daemon that manages three things:
- DNS server — resolves
*.testto127.0.0.1using a macOS resolver file - Certificate authority — generates a root CA trusted by your Keychain, then issues per-site TLS certificates automatically
- Reverse proxy — routes HTTPS requests to your local services using an embedded Caddy server
All three run in a single process managed by launchd, with automatic startup on boot and live config reloading.
What makes Hatch different
- Single binary — no Docker, no Nginx config files, no external processes
- Embedded Caddy — HTTP server with automatic TLS, built in
- Live reload — edit your config, changes apply instantly, no restart needed
- macOS native — integrates with launchd, Keychain, and the system resolver
- GUI dashboard — optional desktop app for managing projects visually
- Process management — start and supervise your dev servers directly
- Tunnels — expose local services to the internet with Cloudflare Tunnels