Lessons learned about managing resources on constrained VPS environments (specifically Zeabur free-tier with 7.5GB RAM).
Zeabur free-tier: 7.5GB RAM total
Heavy services that seem lightweight can consume unexpected RAM: - Next.js dev server: 2.5GB+ RAM (webpack, HMR, many JS chunks) - Next.js production build: still 500MB-1GB - Daemon-only (Express + SQLite): ~475MB - Node.js background workers: 100-300MB each
Rule of thumb: If a service runs a dev server or bundler, expect 2-3GB RAM.
When total RAM usage exceeds physical memory: - Server becomes unresponsive (load average spikes to 30+) - SSH connections hang - Process killer (OOM killer) terminates random processes - Container may restart entirely (losing all running services)
| Mode | RAM Usage | Notes |
|---|---|---|
| Full (daemon + Web UI) | 2.5GB+ | Next.js dev server, caused OOM |
| Daemon only | ~475MB | Stable, sufficient for API/MCP use |