Skip to content
use-cases / hobby-project-graveyard-stays-alive / hero
CONTAINERS · COST OPTIMIZE

The hobby-project graveyard you can afford to keep alive

Eleven half-finished side projects on Heroku is eleven $7/month dynos. On Hoody, it's eleven containers on one $29 box. Idle ones cost zero. The URL wakes the container in milliseconds when someone finally visits the chess engine you wrote in 2023.

Container docs
use-cases / hobby-project-graveyard-stays-alive / lifecycle

Three states, one bill

A Hoody container is a real Linux machine that doesn't have to be running to be cheap. Most projects spend their lives in the middle column.

STATE · STOPPED

Filesystem only

POST /containers/[id]/stop drops CPU and RAM to zero. Only the BTRFS delta on disk survives — usually a few hundred megabytes. The container is gone but the project isn't.

COSTdisk only
STATE · IDLE

Off until visited

Most of your eleven projects sit here. No process is running. No RAM is allocated. The only thing the box pays for is the filesystem, and BTRFS deduplicates the base image across every container on the server.

COST≈ 0¢ / hr
STATE · ACTIVE

Wakes on the request

A GET to the container URL boots it in 5–15 seconds (cold) or instantly (paused). The visitor sees a brief load, the request lands, and the container goes back to sleep when traffic dies.

WAKE< 15 s

Hoody documents three lifecycle operations on a container: stopped (no CPU, no RAM, filesystem persists), paused (frozen in RAM), and the active state. Stopped is the graveyard's natural resting state — the disk delta keeps the project alive at near-zero marginal cost.

use-cases / hobby-project-graveyard-stays-alive / wake

What happens when someone finally visits

Two windows. The visitor sends a normal GET. The container boots, serves, and goes back to sleep. The whole flow runs over the same Hoody URL the project always had.

visitor.curl
VISITOR · 2023-VINTAGE LINK
# someone clicks an old README linkGET https://chess-engine.containers.hoody.com/# response after cold-wake 200 OK · text/html · 4.2 kB# total wall time: 0.41 s
containers/$CID/start
SERVER · CONTAINER LIFECYCLE
# server-side wake trace[t+0ms] rootfs mount (BTRFS subvolume)[t+8ms] namespace + cgroup attach[t+34ms] init pid 1 → systemd (or your CMD)[t+72ms] 200 OK ← request handed to app# back to stopped after idle timeout

POST /api/v1/containers/[id]/start is the explicit lifecycle operation; routing through the container's HTTPS hostname triggers the same wake automatically. There's no separate wake endpoint — visiting the URL is the wake.

use-cases / hobby-project-graveyard-stays-alive / powers

What you stop killing

When idle is free, the eleven projects stop being a monthly bill question and start being a folder. The decisions you used to make stop being decisions.

TWICE-A-YEAR SCRIPT

The texter that fires at tax time still fires

The script that pings you when 1099 forms are out runs once a year. On a $7/mo dyno, that's $84 per fire. Here it sleeps for 364 days, wakes for one HTTP call, sleeps again. You forgot you wrote it. It still works.

SHARED LINK

The 2022 demo someone is reading right now

Someone found your `recipe-tracker-2022` blog post on Hacker News two years late. The link still resolves. The container wakes, renders the page, and goes back to sleep. You didn't get a $30 bill for the spike.

CREATIVE LATITUDE

You stop pre-killing projects

On a per-app pricing plan, you ration ideas before you build them. Here you don't. Push the half-formed thing. Forget about it. Find it years later. Open the URL. It's still there.

use-cases / hobby-project-graveyard-stays-alive / cost

The shape of the bill

Per-app hosting bills you for the second your eleven projects are not getting traffic. Per-server bills you once for the box and lets the projects stack inside it.

  1. PER-APP STACK · BEFORE$77/mo

    Eleven Heroku Eco dynos at ~$7 each, or eleven Render web services. Same bill whether anyone visits.

  2. ONE BARE-METAL BOX$29/mo

    One Hoody server starting around the price of two dynos. Eleven containers fit inside. Twelfth one is free of additional bill.

  3. IDLE CONTAINER COST0¢/hr

    BTRFS delta + KSM dedup mean a stopped container costs disk-only. The sleep state isn't billed; the box is.

Hoody bare-metal entry pricing starts at $29/month; final price varies by spec, region, and rental duration. Container density depends on workload — lightweight side projects pack densely, anything that holds RAM hot needs more headroom.

use-cases / hobby-project-graveyard-stays-alive / punchline

The graveyard isn't a hosting bill anymore. It's a folder.

BEFORE · ELEVEN BILLSAFTER · ONE BOX + A FOLDER
BEFORE · PER-APP11 dynos × $7 = $77/moEleven invoices · per-app retire decisions
NOW · PER-SERVER1 box × $29 = $29/moOne invoice · containers come and go
use-cases / hobby-project-graveyard-stays-alive / replaces

What this replaces

Per-app hosting plans bill you per dormant project. Per-server pricing puts a soft ceiling on the graveyard. The platforms below charge per side project, not per server:

  • Heroku Eco / Basic dynos$5–7 per dyno, per app, per month — even when idle
  • DigitalOcean dropletsPer-VM billing forces you to shuffle projects onto fewer boxes
  • Render web servicesFree tier sleeps then cold-starts; paid tier bills per service
  • RailwayPer-service usage billing — eleven services, eleven counters
  • Fly.io machinesPer-app pricing; auto-stop helps but is still per-app
  • Vercel free tierCold-start penalties on idle hobby projects, plus serverless billing surprises
use-cases / hobby-project-graveyard-stays-alive / cta

You can keep them all. The folder is the limit, not the budget.

use-cases / hobby-project-graveyard-stays-alive / related

Read the others