Skip to main content
The service layer for AI development infrastructure. How AI teams access GPU clusters, model APIs, and training services, without VPN headaches.
VPN is too slow for AI teams. Private Connect isn’t.

The problem

AI teams move fast. You’re spinning up GPU clusters, deploying model APIs, iterating on training pipelines. Your infrastructure is exploding:
  • GPU clusters across 3 regions
  • Model registries (internal and external)
  • Vector databases for RAG
  • Experiment tracking (MLflow, Weights & Biases)
  • Training APIs and inference endpoints
  • Jupyter servers on beefy machines
And then someone new joins the team. The old way:
  1. “Submit a VPN access request”
  2. “Here’s the bastion host SSH key”
  3. “Forward these 6 ports…”
  4. “Oh, the service moved to a new cluster/IP”
  5. 2 hours later: “Can someone help me? I still can’t connect”
The Private Connect way:
connect clone alice
# → 6 services connected in 30 seconds
# → Ready to train

Access AI infrastructure by name

Stop managing VPN configs, SSH tunnels, and port forwards. Name your services once, reach them from anywhere—your laptop, CI/CD, or another cloud region.
1

Expose services on your GPU cluster

connect expose localhost:8888 --name jupyter-gpu
connect expose localhost:6006 --name tensorboard
connect expose localhost:5000 --name mlflow
2

Expose inference services

connect expose localhost:8080 --name model-api
connect expose localhost:6333 --name qdrant
3

Access from anywhere

connect reach jupyter-gpu
connect reach model-api
connect reach qdrant
No VPN. No SSH tunnels. No port forwarding. Just:
connect reach <service-name>

Onboard ML engineers in 30 seconds

New hire? Contractor joining for a project? Researcher collaborating for a week?
# Senior ML engineer
connect share
# → Share code: x7k9m2

# New teammate
connect join x7k9m2
# → ✓ jupyter-gpu → localhost:8888
# → ✓ tensorboard → localhost:6006
# → ✓ mlflow → localhost:5000
# → ✓ model-api → localhost:8080
# → ✓ qdrant → localhost:6333
# → Ready to work
Or even simpler:
# Clone a teammate's exact environment
connect clone alice
# → Same services, same ports, same everything
Time saved: 2 hours → 30 seconds

Common AI infrastructure setups

GPU cluster access

# On your GPU node (Lambda, RunPod, on-prem)
connect daemon install
connect expose localhost:8888 --name jupyter-a100
connect expose localhost:22 --name ssh-gpu  # if you need shell

# From your laptop
connect reach jupyter-a100
# → localhost:8888 — Jupyter on your A100, from anywhere

Multi-region training

# US-West cluster
connect expose localhost:8888 --name train-west

# EU cluster  
connect expose localhost:8888 --name train-eu

# Asia cluster
connect expose localhost:8888 --name train-asia

# From your laptop — switch regions with one command
connect reach train-west
connect reach train-eu
connect reach train-asia

RAG infrastructure

# Vector database
connect expose localhost:6333 --name qdrant
connect expose localhost:19530 --name milvus

# Embedding service
connect expose localhost:8080 --name embeddings-api

# Your app connects to localhost
# Private Connect routes to the real services

Experiment tracking

# MLflow server
connect expose localhost:5000 --name mlflow

# Weights & Biases (self-hosted)
connect expose localhost:8080 --name wandb

# TensorBoard
connect expose localhost:6006 --name tensorboard

# Access from any machine
connect reach mlflow
open http://localhost:5000

Model serving

# Inference endpoints
connect expose localhost:8080 --name llm-api
connect expose localhost:8081 --name vision-api
connect expose localhost:8082 --name embedding-api

# Load testing from your laptop
connect reach llm-api
curl http://localhost:8080/v1/completions -d '{"prompt": "Hello"}'

Project-based environments

Define services per-project. Connect with one command.
# ml-project/pconnect.yml
services:
  - name: jupyter-gpu
    port: 8888
  - name: mlflow
    port: 5000
  - name: tensorboard
    port: 6006
  - name: model-api
    port: 8080
  - name: qdrant
    port: 6333
cd ml-project
connect dev
# → All 5 services connected
# → Start training

Why AI teams switch from VPN

VPNPrivate Connect
Request access, wait for ITconnect up — instant
IPs change, config breaksNamed services, always correct
Forward ports manuallyAuto port binding
New hire = 2 hour setupconnect clone teammate = 30 seconds
One person’s environmentShare with the whole team
Works on the office networkWorks from anywhere

Security for AI infrastructure

AI infrastructure often has sensitive data, models, training data, embeddings. Private Connect is built for this:
  • No exposed ports — services stay private
  • Encrypted tunnels — all traffic is encrypted
  • Time-limited sharesconnect share --expires 7d
  • Instant revocationconnect share --revoke <code>
  • Audit logs — who accessed what, when
# Give a contractor access for 1 week
connect share --expires 7d
# → Share code: abc123

# Check active shares
connect share --list

# Revoke when done
connect share --revoke abc123

Real workflow: Training a model remotely

1

Morning: connect to your GPU cluster

connect reach jupyter-gpu
Start a training run in Jupyter.
2

Afternoon: check progress from your phone

Via Termius + connect CLI:
connect reach tensorboard
# → localhost:6006 — training curves on your phone
3

Evening: training done, check MLflow from home

connect reach mlflow
# → localhost:5000 — compare runs, pick best model
4

Deploy: push to inference

connect reach model-api
curl -X POST localhost:8080/v1/models/deploy -d '{"run_id": "abc123"}'
Same workflow whether you’re at the office, at home, or on a plane.

For AI team leads

You have a team of 5-15 ML engineers. Each one needs access to:
  • Shared GPU clusters
  • Training infrastructure
  • Model registries
  • Experiment tracking
Without Private Connect:
  • Maintain VPN configs
  • Update SSH keys
  • Answer “how do I connect to X?” daily
  • Onboard new hires manually
With Private Connect:
# New hire
connect clone senior-ml-engineer
# → Done

# Contractor for 2 weeks
connect share --expires 14d
# → Done

# Check active shares
connect share --list
# → Share x7k9m2: expires in 13 days
# → Share abc123: expires in 6 days

Getting started

1

Install

curl -fsSL https://privateconnect.co/install.sh | bash
2

Authenticate

connect up
3

Expose your first service

connect expose localhost:8888 --name jupyter-gpu
4

Reach it from anywhere

connect reach jupyter-gpu

The bottom line

AI teams are shipping faster than ever. Infrastructure access shouldn’t be the bottleneck. Private Connect is the service layer for AI development infrastructure. Access GPU clusters, model APIs, and training services by name, from anywhere. Onboard teammates in 30 seconds.
connect reach training-cluster
That’s it. Start training.

Build docs developers (and LLMs) love