Skip to content

Files, limits and environment

A HivePod keeps two folders on its own volumes:

Folder Use it for
/home/hivepod/projects Your code and repositories.
/home/hivepod/data Data, caches, databases, keys, anything else to keep.

Everything else (the operating system, packages you install with apt-get, dnf or apk, files in /root, /etc or /usr) belongs to the pod itself. It survives stops and restarts, but it’s reset when the pod is re-created.

Backups contain the two persistent folders.

Changes to environment variables or the startup command take effect when you apply them, and applying re-creates the pod from its OS image:

  • /home/hivepod/data and /home/hivepod/projects are kept.
  • Root’s ~/.ssh is kept: it’s a link to /home/hivepod/data/.ssh, so deploy keys and known_hosts survive. Pods created before October 2026 get the link on their next restart.
  • Installed packages and every other file are reset to the image.

The CLI warns you before applying. A setup script makes reinstalling easy. Keep one in /home/hivepod/data, for example setup.sh with your apt-get install … line, and run it after an apply:

Terminal window
hivepod exec --detach --follow web1 "sh /home/hivepod/data/setup.sh"

/tmp is a small (1 GB) area that doesn’t allow running programs from it, for safety. Some installs unpack helpers there and run them, so pip, npm and native builds can fail with Permission denied.

So every terminal, hivepod exec and background job gets:

Variable Value
TMPDIR /home/hivepod/data/.tmp
npm_config_cache /home/hivepod/data/.cache/npm
PIP_CACHE_DIR /home/hivepod/data/.cache/pip

These are on the data volume, so they count toward your pod’s disk. Files in .tmp that haven’t been touched for two days are removed when the pod starts. If you set TMPDIR yourself in the pod’s environment variables, yours wins.

Inside a pod, free, top, nproc and df show the whole machine’s memory, CPUs and disk, not your pod’s. To see your pod’s own limits, run:

Terminal window
hivepod-info
HivePod limits (free, top and df show the node's totals, not these):
CPU 2.00 vCPU
Memory 412 MiB used of 2048 MiB
Disk 12345 MiB used of 60G (measured 2026-10-05T14:00Z; run hivepod-info --measure for now)

The same values are in the variables HIVEPOD_CPU_LIMIT, HIVEPOD_MEMORY_LIMIT and HIVEPOD_DISK_LIMIT, for scripts that size worker counts or caches.

A pod’s CPU and memory limits are enforced. A process that goes over the memory limit is stopped. Tools that read the machine’s totals may plan for more than your pod has, so set worker counts from HIVEPOD_CPU_LIMIT or hivepod-info.

Your pod’s size is its disk limit. In regions where the filesystem supports it, the pod’s folders are created with that size and writing past it fails with No space left on device. Everywhere else, DockHive measures each running pod’s disk use about every 10 minutes. That covers the two persistent folders plus everything installed in the pod. You can see it with:

  • hivepod status web1: for example disk 12.3 GB of 60.0 GB (21%), with a warning from 90%,
  • hivepod-info inside the pod.

Keep your pod within its size. Free space by cleaning /home/hivepod/data/.cache and old builds, or move to a bigger size.

  • Over its size: the pod can’t start new background jobs. hivepod exec and the terminal keep working, so you can clean up.
  • More than 10% over its size: the pod is stopped, and hivepod status says why. Start it again and free space within 30 minutes. If it’s still well over its size after that, it’s stopped again.