Skip to main content
Private Connect Hero Light

What is Private Connect?

Your database binds to localhost. You need it from your laptop, a cloud IDE, or another machine. One command on each side connects them.
# On the machine with the DB
connect expose localhost:5432 --name my-db

# From anywhere else
connect reach my-db
# → localhost:5432 now points at my-db. Same connection string, works everywhere.
No port forwarding, no firewall rules. Works with Tailscale.

Why Private Connect?

Access by Name

Use connect prod-db instead of remembering IPs or ports. Services are identified by meaningful names across your entire workspace.

Stable Ports

The same service always gets the same local port across restarts. Your connection strings never change.

End-to-End Encrypted

All traffic is encrypted with TLS. Services are private to your workspace with built-in audit logging.

Works Everywhere

On top of Tailscale, VPN, or plain internet. Access services from your laptop, cloud IDEs, CI/CD, or mobile devices.

How It Works

┌─────────────────┐         ┌───────┐         ┌─────────────────┐
│   Your Server   │────────▶│  Hub  │◀────────│   Your Laptop   │
│                 │         └───────┘         │                 │
│ connect :5432   │                           │ connect prod-db │
└─────────────────┘                           └─────────────────┘
An agent runs on each machine. Expose services from one, reach them from another. All traffic is encrypted. Services are private to your workspace.

Real Use Cases

Database Access for AI Coding Assistants

Let Cursor’s AI query your local database without exposing ports:
# On your laptop with the database
connect expose localhost:5432 --name my-db

# From Cursor (via MCP integration)
# AI can now: "What tables are in my-db?" or "Get connection string for my-db"
Your app keeps using localhost:5432. The AI uses the same endpoint via Private Connect.

Onboard Teammates Instantly

The old way: “Join the VPN, add these entries to /etc/hosts, forward ports 5432, 6379, and 8080…” With Private Connect:
# New teammate's first day
connect clone sarah
# → ✓ Cloned 4 service(s) from sarah
# → Ready to code.
Time saved: 2 hours → 30 seconds

CI/CD to Private Infrastructure

GitHub Actions deploying to servers that aren’t publicly accessible:
# .github/workflows/deploy.yml
steps:
  - name: Connect to private infra
    run: |
      curl -fsSL https://privateconnect.co/install.sh | bash
      connect up --api-key ${{ secrets.PRIVATECONNECT_KEY }}
      connect reach deploy-server
      
  - name: Deploy
    run: |
      rsync -avz ./dist/ localhost:/var/www/app/
No bastion hosts. No VPN configurations. No firewall rules.

Test Webhooks from Stripe, GitHub, etc.

Local development needs to receive webhooks from external services:
connect expose localhost:3000 --name webhook-test --public
# → https://abc123.privateconnect.co

# Use that URL in Stripe/GitHub webhook settings
# Webhooks hit your local machine

Access Your Home Lab from Anywhere

Raspberry Pi, NAS, or self-hosted services — reach them without exposing ports:
# On your home server (runs 24/7)
connect daemon install
connect expose localhost:8096 --name jellyfin
connect expose 192.168.1.50:445 --name nas

# From anywhere in the world
connect reach jellyfin
# → http://localhost:8096 — your media server
No dynamic DNS. No port forwarding. No security exposure.

Share with Teammates

# Share your environment
connect share
# → Share code: x7k9m2

# Teammate joins with one command
connect join x7k9m2
# → Same services, same ports. Done.

Try Without Signup

Quick tunnel for demos and testing:
npx private-connect tunnel 3000
# → Creates temporary public tunnel (2hr expiry)
Share your entire local environment with a teammate:
npx private-connect up 3000 5432 6379
# → npx private-connect join k7m2p9    (send this to your teammate)

Private Connect vs. Alternatives

ScenarioVPNSSH TunnelsPrivate Connect
Onboard new dev2+ hours30+ min30 seconds
Share environmentNot possibleComplexOne command
Works from anywhereSometimesFragileAlways
Revoke accessIT ticketFind & delete keysInstant
Audit who accessedLimitedNoneBuilt-in
Setup on new machineReinstall clientCopy keysRun connect up
Public link (no account)Not possibleNot possibleconnect link

Get Started

Quickstart

Get from install to first working tunnel in under 2 minutes

Installation

Detailed installation instructions for all platforms

CLI Reference

Complete command reference and options

Use Cases

Real scenarios where Private Connect saves hours of setup

Community

Join our Discord community to get help, share use cases, and connect with other users:

Join our Discord

Get support, share tips, and stay updated on new features

Build docs developers (and LLMs) love