Give a task more memory
Long, wide-scope work — a security audit across a whole codebase, a large refactor — can run an agent container out of memory. The run then dies at the ceiling with nothing you can act on, and the only lever used to be a single number for the entire installation: raising it for one audit raised it for every task on the server.
A resource class is that lever, applied where the work is.
| Class | What it means |
|---|---|
| Normal | Today’s behaviour, unchanged. |
| Heavy | More memory, and correspondingly more of your workspace’s parallel capacity. |
Memory and parallelism are one budget
Section titled “Memory and parallelism are one budget”This is the part worth understanding before you choose, because it is what makes Heavy safe to pick.
A server does not pay for a memory limit. It pays for the limit times the number of tasks allowed to hold one at the same time:
3 tasks x 2 GB = 6 GB (a typical Normal workspace)1 task x 6 GB = 6 GB (the same cost)3 tasks x 6 GB = 18 GB (three times the cost)So a class carries a weight: a Heavy task occupies more than one of your workspace’s parallel slots. With the shipped setting it takes two slots and twice the memory, and the two cancel out — a workspace running only Heavy tasks costs the server exactly what the same workspace costs running only Normal ones.
Heavy therefore means fewer tasks at once, each with more room. It does not raise what your server has to provide.
Where to set it
Section titled “Where to set it”There are three places, and the one nearest the task wins:
-
On the agent profile — Settings → Profiles → (a profile) → Resource class. This is usually the right place: “the audit profile needs room” is a statement about the kind of work, not about one launch. Every task that runs under that profile inherits it.
-
On the workspace — Settings → Workspace → Resource class. This is the default for work that runs under no profile, which includes every workflow and every automatic development run. Leave it empty for no house rule.
-
On a single run — a launch may carry a
resource_classof its own, which overrides both. This tier is available through the API’s task configuration; the two places above are the ones with a picker in the interface.


A profile or workspace set to Inherit / No default passes the decision down the chain; the built-in floor is Normal, so nothing changes until someone chooses.
When a run is killed anyway
Section titled “When a run is killed anyway”A class raises a ceiling; it does not remove one. If a run still exhausts its memory, the failure now names the class it was running in and the limit it had — so the next question (“was it close, or nowhere near?”) has an answer. On the server itself, the container carries its class as a label, which is what lets an operator match a kernel log entry to a run.
What the numbers actually are
Section titled “What the numbers actually are”The byte counts belong to whoever runs the server, not to this page. Heavy ships as twice Normal on both halves — memory and slots — and an operator can set either half independently. Setting them unevenly is allowed (a server whose workloads never saturate it may want that), and SupaCloud says so at startup rather than letting the arithmetic drift unnoticed.