Opening Tunnels

Basic usage

# Expose a local port
nullbore open --port 3000
# ✓ https://a7f3bc.tunnel.nullbore.com → localhost:3000

This creates a tunnel with a random URL and a 1-hour TTL.

Named tunnels

On Hobby plans and above, you can choose your URL:

nullbore open --port 3000 --name myapp
# ✓ https://myapp.tunnel.nullbore.com → localhost:3000

Names must be 2-63 characters, lowercase alphanumeric and hyphens only. Names are first-come-first-served and tied to your account while the tunnel is active.

TTL (time to live)

Every tunnel has a TTL — the maximum time it stays open.

# 30 minutes
nullbore open --port 3000 --ttl 30m

# 4 hours
nullbore open --port 3000 --ttl 4h

# 7 days (Hobby plan max)
nullbore open --port 3000 --ttl 168h

TTL limits depend on your plan:

PlanMax TTL
Free2 hours
Hobby7 days
ProUnlimited (persistent)

Idle TTL mode

With --idle, the TTL becomes an inactivity timeout instead of a hard deadline. The tunnel stays alive as long as there's traffic, and only expires after the TTL period of silence.

# Stay alive while there's traffic, close after 30 min of silence
nullbore open --port 3000 --ttl 30m --idle

This is useful for:

  • Dev servers you want up while you're working
  • MCP servers that should be available while an agent session is active
  • Demo environments that clean themselves up

Multiple tunnels

Open several tunnels at once with the -p flag:

nullbore open -p 3000:api -p 8080:web -p 5432:db
# ✓ https://api.tunnel.nullbore.com → localhost:3000
# ✓ https://web.tunnel.nullbore.com → localhost:8080
# ✓ https://db.tunnel.nullbore.com → localhost:5432

Via the API

curl -X POST https://tunnel.nullbore.com/v1/tunnels \
  -H "Authorization: Bearer nbk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"local_port": 3000, "ttl": "30m", "idle_ttl": true}'

See API: Tunnels for full details.