Dev Environments
Production-grade environments. Ready in seconds.
Your team wastes days on environment setup. Now they don't have to anymore.
The setup problem is half-solved
Most development teams have made progress with containerization. Many use Docker Compose, devcontainers, or setup scripts. However, the remaining challenge isn't complete failure — it's fragility. Docker builds take extended periods with cache invalidation issues. Devcontainers work inconsistently across different machines. Documentation becomes outdated quickly after infrastructure changes. Individual developers experience divergence across their machines.
Key Statistic: "156 hours per year per developer spent on environment setup and maintenance" (Microsoft Dev Box case study)
This represents nearly four full work weeks annually per person spent on infrastructure rather than product work.
The golden image
The solution involves moving from configuration recipes to running systems. Teams should configure a single machine with the complete stack — Docker containers, databases, services, tools, configurations. This becomes the golden image that developers fork.
$ ssh boxd.sh fork production-stack --name=sarah
forked production-stack → sarah (sarah.boxd.sh)
$ ssh boxd.sh connect sarah
boxd@sarah:~$ docker ps
CONTAINER ID IMAGE STATUS NAMES
a1b2c3d4e5f6 myapp/web Up 2 hours app-web
f6a1b2c3d4e5 myapp/api Up 2 hours app-api
c3d4e5f6a1b2 postgres:14 Up 2 hours postgres
d4e5f6a1b2c3 redis:7 Up 2 hours redis
e5f6a1b2c3d4 nginx:latest Up 2 hours nginx
Developers receive fully configured, running environments in seconds rather than blank VMs or lengthy build processes. The platform team maintains the golden image. Updates propagate automatically to all forked instances.
Free yourself of dependency drift
Environment drift stems from structural factors, not people problems. Development machines accumulate changes over time. Traditional scripted setups suffer the same degradation — "script drift" replaces environment drift.
CI exacerbates this issue. CI runners represent fundamentally different runtime environments than development machines, with different filesystems, kernels, resource constraints, and state management. Docker narrows but doesn't eliminate these gaps.
When developers fork identical machine images, drift becomes structurally impossible. Forks maintain identical OS versions, packages, running services, and file paths. Only developer code changes afterward. This approach rules out environment differences by construction.
Shareable by default
Every boxd machine includes a public HTTPS URL upon startup. Developers can share URLs with colleagues or fork entire machines for others to examine.
$ ssh boxd.sh list
name status url image
sarah running sarah.boxd.sh default
mark running mark.boxd.sh default
staging running staging.boxd.sh default
$ ssh boxd.sh fork sarah --name=sarah-demo
forked sarah → sarah-demo (sarah-demo.boxd.sh)
This eliminates gaps between development and visibility. Designers see actual running applications rather than screenshots. Product managers test features pre-merge. Backend engineers debug integration issues using real services.
Try things without fear
Developers typically approach environment changes cautiously because failures require extensive recovery time. When forking takes seconds, experimentation becomes cost-free.
$ ssh boxd.sh fork sarah --name=try-nextjs-15
forked sarah → try-nextjs-15 (try-nextjs-15.boxd.sh)
$ ssh boxd.sh connect try-nextjs-15
boxd@try-nextjs-15:~$ npm install next@15
... breaks three things
boxd@try-nextjs-15:~$ exit
$ ssh boxd.sh destroy try-nextjs-15
destroyed try-nextjs-15
Failed experiments involve minimal time loss. Original environments remain untouched. This encourages rapid testing rather than extensive research.
Persistent
Machines persist across sessions. Developers closing laptops Friday retrieve running services Monday morning without rebuilds or reinitializations.
# Friday, 6pm
boxd@sarah:~$ exit
# Monday, 9am
$ ssh boxd.sh connect sarah
boxd@sarah:~$ docker ps
CONTAINER ID IMAGE STATUS NAMES
a1b2c3d4e5f6 myapp/web Up 3 days app-web
f6a1b2c3d4e5 myapp/api Up 3 days app-api
c3d4e5f6a1b2 postgres:14 Up 3 days postgres
d4e5f6a1b2c3 redis:7 Up 3 days redis
Machines sleep when idle without cost. Reconnection takes seconds rather than minutes. No morning infrastructure startup rituals are necessary.
Work from anywhere
Environments live in the cloud rather than on individual hardware. Developers SSH from laptops, tablets, borrowed computers, or multiple offices. Single environment synchronization becomes unnecessary. Hardware specifications stop limiting developer capabilities. Three-year-old laptops provide equivalent performance to latest models.
Configure once, fork forever
Golden images apply production infrastructure patterns to development. The approach mirrors immutable infrastructure practices used in production — configure once, fork repeatedly.
Onboarding Example:
$ ssh boxd.sh fork production-stack --name=new-hire-day-1
forked production-stack → new-hire-day-1 (new-hire-day-1.boxd.sh)
New hires begin writing code on day one with production-grade environments matching the entire team. Setup overhead approaches zero.