A lightweight macOS local development tool that runs web projects without VMs or containers. It auto-sets local domains with trusted HTTPS certificates and can proxy services to custom URLs.
Harbor is inspired by Laravel Valet but built with modern TypeScript and designed to be framework-agnostic.
- 🚀 Zero configuration - Just link your project and go
- 🔒 Trusted HTTPS - Automatic SSL certificates for all local domains
- 🌐 Custom domains - Use
.test,.local, or any TLD you prefer - 🔄 Proxy support - Forward domains to any local service (Node, Docker, etc.)
- 🐘 PHP switching - Easily switch between PHP versions
- ⚡ Lightweight - No VMs, no containers, just native macOS tools
- macOS
- Homebrew
- Node.js 18+
brew tap nforst/tools
brew install nforst/tools/harbor
harbor installThe harbor install command sets up:
- Caddy (web server with automatic HTTPS)
- dnsmasq (local DNS resolver)
- PHP-FPM (optional, for PHP projects)
Sets up Harbor and all required dependencies (Caddy, dnsmasq, PHP).
harbor installRemoves Harbor and cleans up all configurations.
harbor uninstallLinks the current directory to a local domain. If a public/ subdirectory with an index.php exists, it will be used as the document root.
You can specify just the domain name (uses the default TLD) or include a custom TLD.
# Link current folder as myapp.test (uses folder name + default TLD)
cd ~/Projects/myapp
harbor link
# Link with a custom domain name (uses default TLD, e.g. myapp.test)
harbor link myapp
# Link with a custom TLD (uses .dev instead of default .test)
harbor link myapp.devRemoves a linked domain.
# Unlink current folder
harbor unlink
# Unlink a specific domain
harbor unlink myappLists all linked sites and proxies.
harbor sitesProxies a domain to a local service. Perfect for Node.js apps, Docker containers, or any other service.
# Proxy frontend.test to localhost:3000
harbor proxy frontend localhost:3000
# Proxy api.test to a Docker container
harbor proxy api localhost:8080
# Proxy with a custom TLD (uses .dev instead of default .test)
harbor proxy frontend.dev localhost:3000Removes a proxy.
harbor unproxy frontendChanges the default TLD for new domains. You can optionally migrate existing sites to the new TLD.
# Change default TLD to .dev
harbor tld devInteractive PHP version switcher. Lists all installed PHP versions and lets you choose which one to use.
harbor phpTo install additional PHP versions:
brew install [email protected]
brew install [email protected]
brew install [email protected]Harbor uses a combination of native macOS tools:
- Caddy - A modern web server that automatically provisions and renews local SSL certificates
- dnsmasq - Resolves all
.test(or your chosen TLD) domains to127.0.0.1 - PHP-FPM - Handles PHP requests for your projects
All configuration is stored in ~/.config/harbor/.
Before uninstalling via Homebrew, run:
harbor uninstallThen remove the package:
brew uninstall nforst/tools/harbor
brew untap nforst/toolsISC © Niklas Forst