
Sixty containers on one server
One bare-metal box runs dozens to hundreds of Hoody containers. KSM and BTRFS dedup make the marginal cost near zero.
Snapshot your developer baseline once. From then on, every new hire gets one URL. They click it on whatever laptop they have and they're in a fresh container that's a clone of the baseline — codebase, dependencies, env vars, seeded database, VSCode in the browser. Writing code in five minutes. Not setting up.
Welcome aboard! Your dev environment is ready: https://devbox-jordan.hoody.dev. Postgres seeded, repo cloned, just cd ~/work && bun dev.
Hoody snapshots capture an entire container — files on disk, the user accounts, the systemd unit files, the seeded database. Container copy clones that snapshot into a fresh container per developer. The link in the email is the route to that fresh container.
POST .../snapshotsTake a named snapshot of your reference container — alias it dev-baseline. Re-run when the baseline changes.
POST .../copy [ source_snapshot ]One API call clones the snapshot into a fresh container under the new developer's project.
alex-laptop.containers.hoody.comThe container ships with a public URL out of the gate. Paste it into Slack. They click. They're in.
ttyd · webview · sshhoody_kit lights up the terminal, file browser, and VSCode-in-browser endpoints automatically. Nothing to install on the laptop.
# 1. Snapshot the baseline (do this once, refresh when you upgrade Node)
curl -X POST "$API/api/v1/containers/$BASE/snapshots" \
-H "Authorization: Bearer $TOKEN" \
-d '[ "alias": "dev-baseline" ]'
# 2. Copy the snapshot into a fresh container for the new hire
curl -X POST "$API/api/v1/containers/$BASE/copy" \
-H "Authorization: Bearer $TOKEN" \
-d '[
"target_project_id": "$ACME",
"name": "alex-laptop",
"source_snapshot": "dev-baseline",
"copy_firewall_rules": true,
"copy_network_rules": true
]'
# 3. The response carries the container URL. Email it. That's onboarding.
# => https://alex-laptop.containers.hoody.comTwo POSTs and one URL. The baseline snapshot is the contract; container copy is the constructor; the resulting subdomain is what lands in the welcome email. No bastion to provision, no dotfiles repo to clone, no Docker Desktop license to negotiate.
The README that used to ship with every repo carried the failure modes too. Half the lines were workarounds for the laptop the new hire happened to bring. The URL is shorter because the laptop is no longer in the picture — the environment is.
TO: alex@acme.com · SUBJECT: WELCOME
Welcome to the team. Open this when you're ready to write code:
— infra@acme
The README that used to be 47 steps is now one line: open this URL.
Each of these tries to get a working environment to a new developer's laptop. They each cost setup, license, or DIY glue. A snapshot URL costs none of that — the environment is already running.
Stop shipping README setup steps. Ship a URL.