Slim
Free Forever   ยท   Built with Go

Give your localhost a
local or public URL

Turn localhost:3000 into https://app.local with path routing, HTTPS, HMR support, or get a public url without deployment.

$ slim start web --port 3000
https://web.local localhost:3000
$ slim start myapp --port 3000 --route /api=8080
https://myapp.local     localhost:3000
  https://myapp.local/api localhost:8080
$ slim up  # .slim.yaml
https://myapp.local     localhost:3000
  https://myapp.local/api localhost:8080
https://dashboard.local localhost:5173

Install with one command

$ curl -sL https://slim.sh/install.sh | sh

Or build from source.

Local Development

Local Domains with HTTPS

Map localhost ports to pretty .local domains with trusted certificates and zero config.

Map your application

$ slim start web --port 3000
https://web.local localhost:3000

Route /api to a different port

$ slim start myapp --port 3000 --route /api=8080
https://myapp.local     localhost:3000
  https://myapp.local/api localhost:8080

Sharing

Internet Sharing

Give your local server a public URL with one command. Custom subdomains, password protection, and auto-expiry built in.

$ slim login
Authenticated
$ slim share --port 3000 --subdomain demo
https://demo.slim.show localhost:3000
$ slim share --port 8080 --password --ttl 30m
https://a1b2c3.slim.show localhost:8080
  password protected · expires in 30m
Vanity Subdomains

Choose your own subdomain on slim.show.

Password Protected

Add authentication to your public URL.

Auto-Expiring

Set a TTL so tunnels close automatically.

Live Request Logs

Watch requests flow through in real-time.

Reference

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

# Route /api requests to a different port
$ slim start myapp -p 3000 --route /api=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 up Start all services from .slim.yaml
# Start all services from .slim.yaml
$ slim up

# Or specify a config path
$ slim up --config /path/to/.slim.yaml
slim down Stop project services
# Stop all project services
$ slim down

# Or specify a config path
$ slim down --config /path/to/.slim.yaml
slim stop Stop proxying
# Stop a specific domain
$ slim stop myapp

# Stop all domains and shutdown daemon
$ slim stop
slim doctor Diagnose setup issues
# Check your local setup
$ slim doctor
slim uninstall Remove everything
# Removes everything: CA, certs, hosts entries,
# port-forward rules, and config
$ slim uninstall

Highlights

Features

Everything you need for local development, built into a single binary.

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.

Path Routing

Route different URL paths to different upstream ports.

Project Config

Share your dev setup with teammates via .slim.yaml.

Zero Config

First run handles CA, trust, and port forwarding.

Under the Hood

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.

Get started in seconds

Install Slim and set up your first .local domain in under a minute.

$ curl -sL https://slim.sh/install.sh | sh

View on GitHub · Build from source