Skip to content
use-cases / onboard-developer-one-link / hero
SNAPSHOTS · CONTAINER COPY

Onboard a developer with one link

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.

use-cases / onboard-developer-one-link / mechanism

How a URL becomes a working laptop

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 /api/v1/containers/[baseline_id]/copy4 STEPS · ONE API CALL
01

Snapshot the baseline once

POST .../snapshots

Take a named snapshot of your reference container — alias it dev-baseline. Re-run when the baseline changes.

02

Copy on each new hire

POST .../copy [ source_snapshot ]

One API call clones the snapshot into a fresh container under the new developer's project.

03

Their URL is the container

alex-laptop.containers.hoody.com

The container ships with a public URL out of the gate. Paste it into Slack. They click. They're in.

04

Terminal, files, browser

ttyd · webview · ssh

hoody_kit lights up the terminal, file browser, and VSCode-in-browser endpoints automatically. Nothing to install on the laptop.

onboard-alex.sh
# 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.com

Two 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.

use-cases / onboard-developer-one-link / contrast

From a wall of steps to a single sentence

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.

README.md · setup47 STEPS
  • 01Install Xcode CLI tools
  • 02Install Homebrew
  • 03brew install node@20 pnpm postgres@15
  • 04Add PATH lines to .zshrc
  • 05createdb acme_dev
  • 06Clone the seed-data repo
  • 07Run the loader (takes 25 min)
  • 08Ask in #devops for the staging .env
  • ...39 more lines you'll get wrong
AVG TIME TO FIRST COMMITTWO DAYS
BECOMES
the welcome email · v21 LINE

TO: alex@acme.com · SUBJECT: WELCOME

Welcome to the team. Open this when you're ready to write code:

https://alex-laptop.containers.hoody.com

— infra@acme

TIME TO FIRST COMMITFIVE MINUTES
use-cases / onboard-developer-one-link / dayone
DAY ONE · ALEX'S MONDAY

The README that used to be 47 steps is now one line: open this URL.

08:59 — laptop open, link in clipboard09:04 — first commit pushed
First commit, by the clockFIVE MINUTES · ZERO INSTALLS
0108:59URL lands in the inboxno laptop setup
0209:00Open the URL — already incontainer is the workspace
0309:04First commit pushedwriting code, not configuring
FILESCodebase already cloned, branch on main
DEPSNode, pnpm, Postgres, Redis pre-installed
DATASeed database loaded, staging .env injected
use-cases / onboard-developer-one-link / replaces

What this replaces

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.

  • GitHub CodespacesPer-seat billing, devcontainer.json to maintain
  • GitpodPer-workspace pricing, .gitpod.yml to debug
  • DaytonaSelf-hosted control plane to run
  • CoderTemplates and provisioner infrastructure to babysit
  • Devcontainer setupDocker Desktop license + VSCode dance per laptop
  • Local developmentTwo days of brew, paths, .env requests in #devops
  • Onboarding docs47 steps that drift the moment someone updates the baseline
use-cases / onboard-developer-one-link / cta

Stop shipping README setup steps. Ship a URL.

use-cases / onboard-developer-one-link / related

Read the others