What is Waypoint?
Waypoint solves the common problems with traditional development setups:- Time-consuming initial configuration
- Inconsistent environments across teams and devices
- Hard to reproduce when issues arise
- Works across all teams and roles
- Speeds up onboarding for new developers
- Makes it easier to switch between projects
Features
| Feature | Description |
|---|---|
| Easy Setup | Simple one-liner install to get started quickly |
| Consistent Environment | Same setup for all products, no more “works on my machine” issues |
| Docker-Based | Run all services in a containerized environment |
| Cross-Platform | Works on Mac, Linux, and Windows (with WSL) |
| Secret Management | Secrets are mounted securely and persist after container updates |
| Product Switching | Instantly switch between product environments |
Installation
curl -sSL https://raw.githubusercontent.com/pennlabs/infrastructure/refs/heads/add-waypoint/docker/waypoint/install.sh | sudo bash
Getting Started
Dev Containers: Attach to Running Container524282d029a330b59158e80299e3be23988f1765d2e5758f1498b17cd3f20d08c37969d3e8c9c7bdb1a8bfa53a35496c972b880f7e3ab9d93845b614723640b1dbb815877c24bb1bc8b729c15e12c87a42c56ff509f60de5389262a9de5e38faf1d9aac2CLI Commands
- waypoint-client (Local)
- waypoint (Container)
The
waypoint-client CLI runs on your local machine and manages the Waypoint container.| Command | Description |
|---|---|
waypoint-client configure | Set up Waypoint on your local machine |
waypoint-client start | Start the container and attach to VSCode |
waypoint-client start --rebuild | Force a container rebuild |
waypoint-client spawn | Open a new bash terminal inside the container |
Dependency Management
Waypoint usesuv for fast dependency installation and shared dependency management:
- Dependencies are pinned at build time for consistency
- Backends are synced with specific Git SHAs (e.g., OHQ →
524282d029a330b59158e80299e3be23988f1765)
Updating Dependencies
- Bump version by submitting a PR to Waypoint
- Run
waypoint sync [product]to refresh dependencies
Secret Management
Secrets can be managed like normal with.env files in each project. You can also use the mounted secrets folder to assist with file transfers.
Updating Waypoint
Update waypoint-client
Re-run the install command:Update the Container
Rebuild the container:Old containers may need to be deleted manually. Mounted files will persist.
Mounted Paths
Configured withwaypoint-client configure:
| Path | Configuration | Notes |
|---|---|---|
/root/.ssh | Mounted from [CONFIG_DIR]/.ssh | SSH keys |
/root/.gnupg | Mounted from [CONFIG_DIR]/.gnupg | GPG keys |
/labs | Mounted from [CODE_DIR] | Stores repos |
/opt/waypoint/secrets | Mounted from [SECRETS_DIR] | Stores secrets |
Common Questions
Do local changes persist?
Do local changes persist?
Changes to mounted folders (code, secrets) will persist. Other local changes (e.g., installing new packages) won’t persist after an update unless you push them.