One command.
Full dev environment.
Clone a repo with a podfile.yaml, run podspawn dev, get packages, services, and a shell. Locally or over SSH.
Define once, reproduce anywhere.
Commit a podfile.yaml to your repo. Every contributor, CI runner, and AI agent gets the exact same environment.
# Inherit common dev tools
extends: ubuntu-dev
packages:
- go@1.25
- nodejs@22
services:
- name: postgres
image: postgres:16
env: { POSTGRES_PASSWORD: devpass }
on_create: |
go mod download
npm installWhat you get
Local, remote, or both.
Three ways to use the same tool. Same Podfile, same containers, same workflow.
podspawn dev
Auto-detect Podfile, build, mount your code, start services, drop into a shell. One command.
Named machines
Long-lived containers that persist across sessions. Create once, attach from anywhere.
SSH mode
Native sshd. Zero client install. SFTP, VS Code Remote, JetBrains Gateway all work.
Built for real development.
Composable Podfiles
extends: ubuntu-dev inherits a base with git, ripgrep, fzf, neovim, jq. Your Podfile adds what's specific to your project. Deep merge with bang-replace syntax for full control. Multi-level chains supported.
Companion services
Postgres, Redis, or any Docker image as sidecar containers on a shared bridge network. Access them by name -- postgres:5432 resolves inside your container. Services start with podspawn dev and stop with podspawn down.
postgres:5432 resolves via Docker DNSHardened by default
Security isn't an afterthought. Every container drops all capabilities, enables no-new-privileges, and enforces PID limits. Per-user bridge networks isolate traffic. Optional gVisor runtime for untrusted workloads.
Every SSH feature works
SFTP, scp, rsync, port forwarding, agent forwarding. VS Code Remote, JetBrains Gateway, Cursor. Because podspawn hooks into native sshd, not a custom SSH server. OpenSSH handles the protocol.
How it compares
Podspawn competes with Codespaces, Coder, and ContainerSSH. Not Docker Desktop or WSL.
| Feature | podspawn | ContainerSSH | Coder | Codespaces |
|---|---|---|---|---|
| One-command setup | ||||
| Native sshd | ||||
| Podfile composition | extends + merge | features | ||
| Companion services | ||||
| All SSH features | ||||
| Ephemeral + persistent | both | ephemeral | persistent | persistent |
| Zero client install | ||||
| Self-hosted | ||||
| Local mode | ||||
| Open source | AGPL | Apache | AGPL |
Try it in 30 seconds
Install the binary, enter your project, run podspawn dev. No Podfile yet? podspawn init scaffolds one.