Skip to content

Sizing

  • ~520 MB RAM idle, flat across core counts
  • 1.1–2.15 TB monthly egress for 10 people
  • 15 people in the always-on room by default
  • ~0.4% of a core for the metrics collector
Team Box RAM used Monthly egress
up to 10 people 1 vCPU, 2 GB RAM, 50 GB disk ~520 MB idle, ~700 MB in a full call 1.1–2.15 TB
2–3 teams of 10 2 vCPU, 4 GB RAM ~1 GB 2.2–7.5 TB

On a typical VPS, the transfer allowance runs out before the CPU does. Check the allowance, not just the core count, when you pick a plan.

The stack uses about 520 MB at idle, and that figure does not grow with the host’s core count: the same on a laptop as on a 64-core server. A 10-person call adds roughly 100 MB to the media server. 2 GB is comfortable.

Add 2 GB of swap as a safety net (vm.swappiness=10), but do not size around it. A media server that is swapping during a call is already failing.

Server architecture: the desktop app reaches the gateway over HTTPS; call media goes straight to the LiveKit media server over UDP.
Call media passes through your media server, so its outbound traffic is the bill.

Calls go through your server (an SFU): everyone sends one stream up and receives everyone else’s streams down. So what your server sends grows with the square of the room size:

streams sent = N × (N − 1) 10 people → 90 streams, not 10

TeamHUD keeps camera and screen thumbnails live all day. That ambient presence is the point of the product, and at 10 hours a day it is most of the traffic. A modelled 10-person team (a few people talking at a time, thumbnails all day, two hours of full-screen sharing) sends:

Component Share of egress
Camera + screen thumbnails ~85%
Full-screen sharing ~10%
Voice ~5%

That comes to ~1.1 TB/month with video framerates tuned, up to ~2.15 TB on defaults. Muted users cost almost nothing: silence is sent at about 1 kbps.

Scaling by room size, from that 10-person model:

People in one room Streams Estimated egress / month
5 20 0.24–0.48 TB
10 90 1.1–2.15 TB
15 210 2.6–5.0 TB
20 380 4.6–9.1 TB

Two teams of 10 cost about half of one room of 20. That is why the always-on team room is capped at 15 people by default. On your hardware the cap is yours to change (TEAMHUD_AMBIENT_ROOM_CAP), but past that size a scheduled meeting is the right shape, not a bigger ambient room.

Only outbound traffic counts against most providers’ allowances. Inbound is free, and on providers that pool allowances across machines (DigitalOcean does), two small boxes often beat one large one.

The database stays small. Uploaded files (chat attachments, avatars) are what grows, and they live on the storage-data volume unless you move them to S3-compatible storage. 50 GB is a comfortable start.

The bundle ships a tiny collector (about 0.4% of a core) that samples the running stack every 10 seconds. Install it once:

Terminal window
bash metrics/install.sh

Then read it back over SSH:

Terminal window
ssh root@your-server thstat summary --since 2h # CPU, memory, observed egress, GB/month projection
ssh root@your-server thstat density --since 1h # per-participant memory, CPU and egress
ssh root@your-server thstat now # live: containers, rooms, participants

After a week of real use, thstat summary’s monthly projection is a better answer than anything on this page.