Skip to content

Stop fighting port conflicts

Port orchestration for multi-project development. Deterministic ports, .test hostnames, .env integration, and multi-instance support — all from a single config file.

$ outport apply

myapp · main

  service    port   hostname
  rails     13842  myapp.test
  postgres  28391
  redis     19204

→ .env updated

Features

#

Deterministic Ports

Same project, same ports — every time, on every machine. No more "is 3000 free?" guessing games.

.t

.test Domains

Real hostnames like myapp.test instead of localhost:3000. Built-in DNS and reverse proxy.

>_

Multi-Instance

Worktrees, branches, or multiple checkouts — each gets its own ports and hostnames. No collisions.

.e

.env Integration

Ports, URLs, and derived values written directly to your .env files. Your app reads them natively.


Get up and running

1

Configure

Define your services in .outport.yml

# .outport.yml
name: myapp
services:
  rails:
    env_var: PORT
    hostname: myapp
    protocol: http
  postgres:
    env_var: PGPORT
  redis:
    env_var: REDIS_PORT
2

Apply

Run outport apply and ports are allocated

$ outport apply

myapp · main

  rails      13842  myapp.test
  postgres   28391
  redis      19204

→ .env updated
3

Develop

Your .env has everything. Start coding.

# .env
PORT=13842
PGPORT=28391
REDIS_PORT=19204
MYAPP_URL=http://myapp.test

Try it

$ brew install steveclarke/tap/outport