
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.
Every client site is its own isolated container — files, processes, ports, hostname. They all live on one bare-metal server you rent once. You open one Hoody Workspace and see the whole roster as tiles. Click a tile, you're inside.
one workspace · forty containers · one host · one bill
Three things have to be true at once for this to actually work — not just on a slide deck. Containers give you the isolation. The host gives you the density. Workspaces give you the single pane of glass.
Each client site is a Hoody container with its own filesystem, process tree, network namespace, and DNS hostname. A POST request to /api/v1/projects/[id]/containers spawns it from a base image; a DELETE removes it cleanly when the contract ends. Nothing leaks between clients.
All forty containers sit on one bare-metal box. The kernel deduplicates shared memory pages and the filesystem stores deltas, not copies, so the thirty clients sitting idle most of the day cost almost nothing on top of the server you already rent.
Open app.hoody.com, log in, and the whole roster shows up as tiles in a single Workspace. Click a client and you're inside that container — terminal, files, code editor, browser preview — without juggling forty Vercel projects or forty SSH keys.
Containers do the isolation. The host does the density. The Workspace does the management. The agency principal sees one screen, not forty dashboards in forty browser tabs.
Per-site hosting is linear in dollars. Per-server hosting is bounded. The shape change shows up most clearly when you stop paying for clients who haven't deployed in three weeks.
Per-site numbers reflect public list pricing on Vercel Pro, Netlify Pro, and similar tiers; actual agency bills vary by traffic and add-ons. Hoody bare-metal entry pricing starts at $29/month for an entry box; mid-range fleet hosts cost more (final price varies by spec, region, and rental duration). Density depends on workload — forty static-leaning client sites pack comfortably; a fleet of database-heavy SaaS apps wants more headroom.
The shape looks like classic cPanel — many sites, one box. The mechanism is nothing like it. Containers give every client a real Linux instance, not a virtualhost line.
Each container has its own root filesystem, its own process namespace, its own user accounts. A compromised WordPress site can't read another client's wp-config.php, can't see another client's processes, can't exhaust another client's CPU quota. The kernel enforces it.
You keep billing your clients per site — that's what they understand. Underneath, you pay one server bill. The margin used to disappear into hosting line items; now it stays in the agency. Onboard the forty-first client and the box doesn't notice.
When a contract ends, one DELETE /api/v1/containers/[id] removes the filesystem, processes, scheduled jobs, environment variables, and SSH keys. No leftover droplet rotting in DigitalOcean. No half-uninstalled WP Engine site. The client's footprint is gone.
Forty clients used to be forty invoices. Now it's one server and a folder.
The standard agency stack is a tower of per-site billing — one vendor for static sites, another for WordPress, another for the droplet that runs the legacy PHP nobody touches. Forty clients used to mean forty rent bills. The container model collapses them:
Stop paying forty rents to host forty clients. Pay one rent and host the agency.