Slim

Pretty domains for
local development

Map localhost:3000 to https://myapp.local with trusted certificates, WebSocket passthrough, and zero config.

$ slim start myapp --port 3000
https://myapp.local localhost:3000
$ slim start api --port 8080
https://api.local localhost:8080
$ slim list
DOMAIN PORT STATUS
myapp.local 3000 healthy
api.local 8080 healthy
MIT Licensed · macOS & Linux · Single Binary
$ curl -sL https://slim.sh/install.sh | sh

Install using script above or build from source.

Automatic HTTPS Trusted certificates, green lock, no warnings.
WebSocket & HMR Next.js, Vite, and others work out of the box.
Multiple Domains Each gets its own certificate and proxy.
Access Logging Full, minimal, or off. Tail and filter by domain.
Health Monitoring See which upstreams are reachable at a glance.
Zero Config First run handles CA, trust, and port forwarding.

Commands

Everything is one slim command away.

slim start <name> Map a domain to a port
# Map your Next.js app
$ slim start myapp --port 3000

# Add your API server
$ slim start api -p 8080

# Enable access logging
$ slim start dashboard -p 5173 --log-mode full

# Wait for upstream to be ready
$ slim start myapp -p 3000 --wait --timeout 30s
slim list See what's running
# Show all domains with health status
$ slim list

# Output as JSON
$ slim list --json
slim logs View access logs
# Tail all access logs
$ slim logs

# Follow logs for a specific domain
$ slim logs -f myapp

# Clear all logs
$ slim logs --flush
slim stop Stop proxying
# Stop a specific domain
$ slim stop myapp

# Stop all domains and shutdown daemon
$ slim stop
slim uninstall Remove everything
# Removes everything: CA, certs, hosts entries,
# port-forward rules, and config
$ slim uninstall

How it works

A single Go binary that handles everything under the hood.

1
Generates a root CA and trusts it in macOS Keychain or Linux CA store.
2
Creates per-domain certificates on demand, served via SNI for each .local domain.
3
Manages /etc/hosts entries automatically, pointing domains to 127.0.0.1.
4
Forwards ports 80/443 via pfctl or iptables so the proxy runs unprivileged.
5
Reverse proxies requests with HTTP/2, WebSocket upgrades, and CORS headers.