Open source · Free forever

Start local HTTPS
in seconds

pugloo gives you clean HTTPS URLs for local development. Automatic SSL, path routing, WebSockets, and public tunnels in a single CLI.

Free · No account required · macOS & Linux

Terminal
$ npm i -g pugloo $ pugloo map myapp.test 3000 Mapping myapp.test → localhost:3000 Mapping saved Hosts entry added TLS certificate ready Proxy reloaded Done! Visit https://myapp.test
1 command
To go from localhost to HTTPS
Auto SSL
Trusted certificates, zero config
WebSocket
HMR support out of the box
How it works

Three steps. Zero config.

Go from localhost to a clean HTTPS domain in under 10 seconds.

1

Map your domain

Run pugloo map myapp.test 3000 to connect a .test domain to your local server.

2

Automatic setup

pugloo generates trusted SSL certs and updates your hosts file. Nothing manual.

3

Open in your browser

Visit https://myapp.test and get the full HTTPS experience locally.

No code? No problem

HTTPS that just works. Locally.

pugloo generates a local Certificate Authority on first run and creates per-domain certificates signed by it. Trust the CA once and every .test domain gets a green lock.

  • Auto-generated SSL certificates per domain
  • Wildcard support (*.myapp.test)
  • One-time pugloo trust to install the CA
  • Works in Chrome, Firefox, Safari, and curl
$ pugloo trust Trusting pugloo root CA... CA path: ~/.pugloo/ca/rootCA.pem CA trusted in system keychain $ pugloo map shop.test 4000 TLS certificate ready Done! Visit https://shop.test 🔒
For developers

Path-based routing for microservices

Route different paths to different ports on the same domain. Perfect for frontend + API setups, or any multi-service architecture.

  • Longest-prefix matching (/api/v2 before /api)
  • WebSocket proxying for HMR
  • Works with Vite, Next.js, webpack, and more
  • Hot reload without extra config
$ pugloo map app.test 3000 $ pugloo map app.test/api 8080 $ pugloo map app.test/ws 9090 $ pugloo list DOMAIN TARGET app.test → localhost:3000 app.test/api → localhost:8080 app.test/ws → localhost:9090
Team workflows

One config file for your whole stack

Drop a .pugloo.yaml in your repo. Define all domains, ports, and startup commands. Then run pugloo up to start everything.

Commit it to your repo so every teammate gets the same local setup.

.pugloo.yaml
domain: myapp.test services: /: port: 3000 command: npm run dev /api: port: 8080 command: npm run api /docs: port: 4000 command: npm run docs
Features

Everything you need. Nothing you don't.

Professional local development, without the professional headaches.

🔒

HTTPS Everywhere

Auto SSL certs with a locally trusted CA. Green lock in every browser. Zero manual setup.

🔀

Path-Based Routing

Route /api to one port and / to another. One domain, as many services as you want.

WebSocket Support

HMR works out of the box with Vite, Next.js, webpack. No proxy quirks to debug.

📄

Project Config

Define your whole stack in .pugloo.yaml. Commit it. Everyone gets the same local setup.

🌐

Public Sharing

Run pugloo share to get a public URL. Perfect for demos, testing webhooks, or quick feedback.

👻

Background Daemon

Runs quietly. Mappings persist across restarts. Start it and forget about it.

Changelog

Built in public. Updated constantly.

Follow the development of pugloo from day one.

March 9, 2026
10:00 AM Project kickoff
Initial project scaffolding. Set up Node.js project with commander, http-proxy, node-forge, js-yaml, and ws dependencies.
11:00 AM Core proxy engine
Built the HTTPS reverse proxy with SNI support, longest-prefix path matching, and automatic HTTP-to-HTTPS redirect.
12:00 PM Certificate authority
Implemented root CA generation and per-domain SSL certificate creation using node-forge. Certs stored at ~/.pugloo/.
1:00 PM System integration
Added /etc/hosts management, port forwarding via pfctl (macOS) and iptables (Linux), and persistent mapping storage.
2:00 PM CLI commands
Built all 9 CLI commands: map, unmap, up, down, list, share, status, start, stop. Colorful terminal output with ANSI codes.
3:00 PM Background daemon
Implemented daemon process management with fork, PID tracking, SIGHUP-based config reload, and graceful shutdown.
4:00 PM WebSocket tunneling
Added public sharing via WebSocket tunnels. Client connects to tunnel server, receives public URL, proxies requests locally.
5:00 PM Project config
Added .pugloo.yaml support. Define domain, service ports, and startup commands. pugloo up starts everything at once.
6:00 PM Error handling
Added graceful error handling for sudo operations, cert failures, and daemon communication. Warnings instead of crashes.
7:00 PM Trust command
Added pugloo trust to install the root CA in system keychain. Supports --yes flag and --remove to untrust.
8:00 PM npm publish
Published v0.1.0 to npm. Set up package.json with proper fields, .npmignore, MIT license, and README.
9:00 PM Landing page
Built the pugloo landing page. Light theme, teal accent, terminal demos, feature blocks, and install section.
March 10, 2026
9:00 AM CLI branding
Added ASCII art banner displayed when running pugloo with no arguments. Toe beans + pugloo name box.
10:00 AM Changelog & deploy
Added changelog to landing page. Deployed site to Cloudflare Pages.

Start a free trial.
Just kidding. It's free forever.

Install pugloo in one command and start mapping domains.

$ npm install -g pugloo

Works on macOS & Linux · Requires Node.js 18+