Limits
Plans, quotas and the fixed limits you meet: sizes, counts, timeouts and how long things are kept.
Some limits are set by your installation: the plans you can choose, your team's quota, how long a workspace may idle. Others are fixed in Harthelm. This page lists both. Values marked default are what a new installation ships with; your administrator may have changed them in the chart values.
Plans
A plan is a size. Every workspace has a workspace plan (CPU, memory and the size of its volume), and every
steps or container service of a landscape has a service plan (CPU, memory and its most replicas). Pick a
workspace plan in Create workspace or with --plan of hart ws create; pick a
service plan with the plan key in harthelm.yml.
List the plans your installation offers:
curl -H "Authorization: Bearer $HART_TOKEN" https://console.example.com/api/v1/plansThe answer of List plans also says which plan is the default of each kind. A
service without plan uses the default service plan.
The plans a new installation ships with (default):
| Plan | Kind | CPU | Memory | Storage | Most replicas |
|---|---|---|---|---|---|
ide-s | workspace | 0.5 | 1.5 GiB | 10 GiB | |
ide-m | workspace | 1 | 2 GiB | 20 GiB | |
nano | service | 0.1 | 128 MiB | 3 | |
small | service | 0.25 | 512 MiB | 3 | |
medium | service | 1 | 1 GiB | 3 |
The plan's CPU and memory are the limits of each pod. What a pod reserves on the cluster, and what counts toward the team's quota, are its requests: by default 20 % of the CPU and 50 % of the memory. A service with three replicas counts three times.
Managed services have their own plans, and they count toward the quota at their whole plan, not a share. The built-in PostgreSQL (default): Tiny (0.25 CPU, 256 MiB, 1 GiB of storage) and Small (0.5 CPU, 512 MiB, 5 GiB). The plans of MariaDB, Valkey, RabbitMQ and S3 object storage are in Managed services.
Team quota
Each team has a quota over everything its workspaces, services and databases reserve. Default for a new team:
| Resource | Default |
|---|---|
| CPU requests | 2 |
| Memory requests | 4 GiB |
| Memory limits | 8 GiB |
| Storage (volumes) | 50 GiB |
Volumes of recently deleted workspaces still count until they are purged. A team admin sees the usage in the team's
settings; an administrator can raise the quota for one team. When a change does not fit, Harthelm refuses it with
"Team quota exceeded: needs …, … left" (quota-exceeded). See
Plans and quotas.
Disk quota of a workspace. The files of a workspace may use its volume's size. Harthelm measures the usage of awake workspaces every 6 hours; from 90 % on the console warns, and above 100 % Sync and prepare are refused until you delete files.
Sleep, wake and idle
| What | Limit |
|---|---|
| Idle time before a workspace or service that sleeps when idle goes to sleep | 60 minutes (default); a workspace or service can set 1 to 1440 minutes |
| Wakes that start per minute, whole installation | 30 (default); an administrator can pause waking, and every wake is then refused with "Waking is paused" |
| An editor connection that drops | keeps its session for 300 seconds (default) before it counts as closed |
Waiting for the services a service needs | 5 minutes, then it starts anyway |
harthelm.yml
| What | Limit |
|---|---|
| File size | 1 MiB |
| Nesting depth | 100 levels |
| Values after aliases are expanded | 100 000 |
| Problems listed per check | 100 |
| Service name | lower-case letters, digits and -, starting with a letter, at most 32 characters |
| Step name | 1 to 100 characters |
| Environment variable name | letters, digits and _, not starting with a digit, at most 128 characters; not HART_* |
| Reserved ports | 7777 (the workspace agent); 3000 cannot be made public, it is the dev URL's entry port |
| Restarts of a failing service | after 1 s, doubling to 60 s; after 5 failures within 2 minutes the service is Failed. A start that ran 1 minute counts as a fresh start. |
Workspaces
| What | Limit |
|---|---|
| Workspace name | 1 to 64 characters: letters, digits, space, -, _ and .; starts and ends with a letter or digit |
| Environment variables per workspace | 500 |
| Value of one variable | 32 768 characters |
| All names and values together | 256 KiB |
| Value of one secret | 64 KiB |
| Generated password | at most 256 characters |
| Terminals per pod | 32 |
hart exec command | 8192 characters; runs 120 s by default, at most 300 s |
| Output of one exec | 1 MiB |
| Output kept per stage and step | 2 MiB; a longer line is split at 16 KiB |
git pull from the console or hart git pull | 30 seconds |
| A file in the read-only file viewer | 1 MiB |
| Recently deleted workspaces | can be restored for 7 days, then they are purged |
API and sign-in
| What | Limit |
|---|---|
| Request body | 8 MiB |
| Page size of lists | 50 by default, at most 200 |
| Idempotency keys | 255 characters; the answer is kept for 24 hours; bodies up to 1 MiB |
| Operations | readable for 7 days after they finish |
| Lines per log request | 1000 by default, at most 10 000 |
| Browser session | ends after 12 hours without use, and after 7 days at the latest |
hart login sign-in | must be approved within 10 minutes |
| API keys per user | 100; a key name has at most 100 characters |
Too many requests are answered with 429 and Retry-After.
Custom domains
| What | Limit |
|---|---|
| Domains per team | 20 (default) |
| New domains per team and hour | 10, deleted ones included (default) |
| An unverified domain keeps its name | 7 days (default), then it is removed |
| A verified domain without its TXT record | lapses after 7 days (default) |
| Routes per domain | 50 |
| Workspaces one route splits traffic across | 10 |
| Request body | 100 MiB by default; a team admin may set up to 1 GiB (default) |
| Answer timeout | 60 s by default; a team admin may set up to 3600 s (default) |
Managed services and backups
| What | Limit |
|---|---|
| A deleted managed service | listed as recently deleted for 7 days (default) |
Database dumps (backups: true) | nightly, with the installation's backups |
| Workspace archives | of workspaces that sleep and changed, daily, if the installation keeps archives |
Ask your administrator what your installation keeps; Backups and restore shows the options.