Dashboard

Plans and billing

Usage and limits

How memory, storage, bandwidth and counted items are measured against your plan, and what happens when you reach a limit.

Your plan caps the organisation's memory, storage and bandwidth, and the number of projects, databases and team members it can have. Reaching a limit stops new work from starting but never stops apps that are already running.

Your plan's numbers are on the Subscription page, and Plans and billing covers upgrading. Build minutes have their own allowance; see Build minutes.

Where to see your usage

Owners and admins see the figures on the Subscription page, each shown as used against the plan's allowance. The API returns the same figures from getCapabilities, including each signal's state and whether it is enforcing; see API overview.

Memory

Memory counts what your apps and databases reserve, not what they happen to use at a given moment. A running or deploying app counts its reservation, and so does a running database. A stopped app counts 0.

HCode checks memory when something would add to the total: creating or starting an app or database, deploying, or raising a reservation. If the new total would be over the plan, the action is refused. A deploy refused this way says "Your plan doesn't have enough memory left for this app. Stop or shrink another project, or upgrade your plan." Lowering a reservation, or redeploying and restarting without changing it, is always allowed, even while you are over.

Storage

Storage counts the persistent data you own:

  • database volumes
  • backups

It does not count build workspaces, build cache, container images, logs, a container's own writable files, or the scratch space an image declares with VOLUME.

Storage is checked in two ways.

Reserved storage

Running databases, and apps that keep persistent data, reserve storage. Creating, starting or growing one is refused if it would take the reservations past the plan's storage. A deploy refused this way says "Your plan doesn't have enough storage left for this app. Free up storage another project reserves, or upgrade your plan."

Measured storage

HCode measures the bytes actually stored and compares them with the plan:

Usage What happens
80% The organisation owner gets a "[HCode] Storage Usage Warning" email. Nothing is paused.
95% The owner gets "[HCode] Storage Pause Scheduled" with the date the pause starts. Nothing is paused yet.
95% for 72 hours New work is paused and the owner gets "[HCode] Storage Pause Now in Effect".
Back under 90% The pause lifts on its own and the owner gets an email saying usage is back within quota.

While storage is paused, the subscription page says "Storage is full enough that new deploys are paused. Delete data or backups you no longer need, or upgrade your plan, to deploy again. Running sites keep serving."

Bandwidth

Bandwidth counts traffic through your projects' domains, both directions added together: request bodies coming in and response bodies going out. It is counted per UTC calendar month and resets on the 1st. Speed is never limited, even after you go over.

Not counted:

  • HTTP headers
  • traffic on a WebSocket after the connection is upgraded
  • connections to your databases from outside HCode
Usage What happens
80% The owner gets a "[HCode] Bandwidth Usage Warning" email. Nothing is paused.
100% The owner gets "[HCode] Bandwidth Quota Exceeded" with the date the pause starts. Nothing is paused yet.
100% for 24 hours New work is paused until the allowance resets on the 1st (UTC), or until you upgrade.

What is paused

When storage or bandwidth pauses new work, the rest of the organisation keeps working:

Action While paused
Creating a project or database Refused
Deploys from the dashboard, the API or a GitHub push, and rollbacks Refused
Starting a stopped app Refused
Database imports Refused
Raising the memory or storage reserved for a project Refused
Lowering a reservation Allowed
Restarting an app Allowed
Backups, restores and new backup schedules Allowed
Apps and databases that are already running Keep running

A refused action returns HTTP 403 with the code storage_quota_blocked or bandwidth_quota_blocked, and a message that starts with "Your organization's storage use has reached the level at which new work is paused" or "Your organization has used its bandwidth allowance for this month". If you need more time, contact [email protected].

Projects, databases and team members

These are counts, checked when you add one:

  • Projects: deleted projects don't count. At the limit, creating one fails with "Project limit reached", followed by your count and limit.
  • Databases: all databases in the organisation count. At the limit you get "Database limit reached", followed by your count and limit.
  • Team members: everyone in the organisation counts, and so does each pending invite that hasn't expired. At the limit, inviting fails with "Team member limit reached. Upgrade to invite more members."