> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sevalla.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> These are the docs for Sevalla, a platform for deploying applications, databases, static sites, object storage and load balancers. The dashboard is at https://app.sevalla.com.
> Bold text in steps is an exact dashboard label.
> To act on a Sevalla account, prefer the Sevalla MCP server (https://mcp.sevalla.com/mcp, see https://docs.sevalla.com/ai-agents/overview.md), then the Sevalla CLI (https://docs.sevalla.com/developer-tools/cli.md), then the REST API (https://api-docs.sevalla.com, OpenAPI spec at https://api.sevalla.com/v3/openapi.json).
> Every page index is at https://docs.sevalla.com/llms.txt.

# Limits

> Every limit, default and quota on Sevalla, from process sizes, timeouts and builds to disks, databases, static sites, domains and the API, with what happens at each.

Limits are the sizes, counts, time limits and quotas that Sevalla enforces on your services. Each table gives the value, what happens when you reach it, and how to raise the limit or work around it, with a link to the page that explains it.

A value marked "(default)" can be raised for your company (or, for companies you own, for your account). To raise it, [contact support](https://docs.sevalla.com/support/get-help.md) with the limit, the service and the value you need. Every other value is the same for everyone.

## Instance sizes

An instance size sets the CPU and memory of each instance of a process. Pick it per process; every instance of the process gets the same size. See [Scaling](https://docs.sevalla.com/applications/scaling.md#instance-sizes).

| Size | Group | vCPU | Memory |
| - | - | - | - |
| **H1** | Hobby | 0.3 | 0.3 GB |
| **S1** | Standard | 0.5 | 1 GB |
| **S2** | Standard | 1 | 2 GB |
| **S3** | Standard | 2 | 4 GB |
| **S4** | Standard | 4 | 8 GB |
| **S5** | Standard | 8 | 16 GB |
| **C1** | CPU optimized | 1 | 1 GB |
| **C2** | CPU optimized | 2 | 2 GB |
| **C3** | CPU optimized | 4 | 4 GB |
| **C4** | CPU optimized | 8 | 8 GB |
| **M1** | Memory optimized | 0.5 | 2 GB |
| **M2** | Memory optimized | 1 | 4 GB |
| **M3** | Memory optimized | 2 | 8 GB |
| **M4** | Memory optimized | 4 | 16 GB |
| **M5** | Memory optimized | 8 | 32 GB |

* **Default size.** The dashboard picks **H1** for a new application's web process. The API creates it on **S1**; change it with [Update process](https://api-docs.sevalla.com/v3/applications/update-process).
* **No GPUs.** Every size is CPU only. To run a model on Sevalla, run it on CPU, or call a hosted model API from your application.
* **The largest size is 8 vCPU or 32 GB.** For more, run more instances.
* **Thread counts.** Inside an instance, tools such as `nproc` report the host's CPUs, not the size's. Set worker and thread counts (for example `WEB_CONCURRENCY` or `LLAMA_ARG_THREADS`) to match the size.

## Processes and instances

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Web processes | 1 per application | `App cannot have multiple web processes` | Run other servers as [background workers](https://docs.sevalla.com/applications/processes.md#background-workers) with a [private port](https://docs.sevalla.com/applications/networking.md#private-ports) or a [TCP proxy](https://docs.sevalla.com/applications/networking.md#tcp-proxies) |
| Background workers, cron jobs and jobs | No limit per application | | |
| Instances per process | 0 to 20 in the dashboard (default). The API accepts 0 to 50 | The **Instance count** slider stops at the limit. Above 50, the API returns `400` with `Request doesn't match the schema` | Contact support to raise the dashboard limit, or use [horizontal autoscaling](https://docs.sevalla.com/applications/scaling.md#horizontal-autoscaling) |
| Autoscaling | Minimum 1 or more, maximum up to the instance limit. Targets 1 to 100 %, steps of 1 to 5 instances, intervals of 1 to 60000 s | | See [Horizontal autoscaling](https://docs.sevalla.com/applications/scaling.md#horizontal-autoscaling) |
| Payment method | Creating an application and creating or updating a process need a valid payment method on the company | `No valid payment method found. Add one at https://app.sevalla.com/billing/payment-methods to continue.` | Add a payment method in **Billing** |
| Memory | The size's memory, a hard limit | The instance is stopped with exit code `137` (`OOMKilled`) and restarted | A larger size, or a **Memory optimized** one. See [Troubleshoot runtime errors](https://docs.sevalla.com/applications/troubleshooting/runtime-errors.md) |
| CPU | The size's CPU | The process is throttled, not stopped | A larger size, a **CPU optimized** one, or more instances |
| Local filesystem | Up to 20 GB per instance, wiped on every restart and deployment | The instance is stopped and restarted | Keep files on a [disk](https://docs.sevalla.com/applications/disks.md) or in [object storage](https://docs.sevalla.com/object-storage/overview.md) |
| Shutdown | `SIGTERM` 5 s after an instance starts stopping; stopped 30 s after it began | In-flight work is cut off | Handle `SIGTERM`, and start long commands with `exec`. See [How processes run](https://docs.sevalla.com/applications/processes.md#how-processes-run) |

## HTTP requests

Requests to an application's domains pass through Cloudflare, then Sevalla's ingress in the application's location. See [How traffic reaches your application](https://docs.sevalla.com/applications/networking.md#how-traffic-reaches-your-application).

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Request timeout | Cloudflare waits up to 185 s for the application to answer | Cloudflare returns `524` (`A timeout occurred`) | Answer within the limit: queue long work for a [background worker](https://docs.sevalla.com/applications/processes.md#background-workers) and return at once, or stream the response. See [504 and 524](https://docs.sevalla.com/applications/troubleshooting/http-errors.md#504-gateway-timeout-and-cloudflare-error-524) |
| Response time with [hibernation](https://docs.sevalla.com/applications/scaling.md#hibernation) on | The response headers must start within 15 s | Cloudflare returns `504` (`Gateway time-out`) | Send the headers first and stream the body, queue long work for a background worker, or turn hibernation off |
| Streaming | Responses are not buffered: server-sent events and chunked responses reach the client as they're written | | A stream stays open as long as it keeps sending data. No `X-Accel-Buffering` header is needed |
| WebSockets | Supported on the web process, through its domains | | |
| Session affinity | None: requests spread across all instances of the web process, request by request | Sessions or state held in one instance's memory or files break with more than 1 instance | Keep sessions and state in a [database](https://docs.sevalla.com/databases/overview.md), such as Redis or Valkey |
| IP restrictions | No limit on entries | | See [IP restrictions](https://docs.sevalla.com/applications/networking.md#ip-restrictions) |

## Builds and deployments

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Whole deployment (clone, build and rollout) | 30 minutes (default) | The deployment fails; the previous version keeps running | Keep the [build cache](https://docs.sevalla.com/applications/builds/overview.md#build-cache) on, set a **Build path**, or deploy a prebuilt [Docker image](https://docs.sevalla.com/applications/docker-images.md). Contact support to raise it |
| Rollout of one process | 20 minutes | Sevalla rolls that process back and the deployment fails | Make the process start faster, and check its [health checks](https://docs.sevalla.com/applications/processes.md#health-checks) |
| A job during a deployment | 10 minutes by default | `<job name> has timed out after <seconds>s and has been stopped`, and the deployment fails | Set the job's **Max run time**, up to 3,600 s. A job still stops at the deployment's own time limit |
| Build machine | 4 vCPU and 8 GB of memory | A build that needs more memory fails | Build the image elsewhere, for example in CI, and deploy it as a [Docker image](https://docs.sevalla.com/applications/docker-images.md) |
| Deployments at a time | 1 per application. Others wait as **Queued** | | Different applications deploy in parallel |
| Image platform | `linux/amd64` | Instances of an image built for another platform crash | Build for `linux/amd64`, for example with `docker build --platform linux/amd64` |
| Build path | Up to 400 characters | `Must be at most 400 characters` | |

See [Time limits and failures](https://docs.sevalla.com/applications/deployments.md#time-limits-and-failures) and [Troubleshoot builds and deployments](https://docs.sevalla.com/applications/troubleshooting/builds-and-deployments.md).

## Cron jobs and jobs

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Schedule | A 5-field cron expression, so at most one run a minute. UTC unless you set a time zone | `Cron schedule is invalid.` | For work more often than once a minute, use a [background worker](https://docs.sevalla.com/applications/processes.md#background-workers) with its own loop |
| Overlapping runs | **Skip the new run** by default | The due run doesn't start | Pick **Replace the running job** |
| Run time of a cron job | No limit by default | With **Max run time** set, the run stops with `Stopped at its max run time` | See [Cron jobs](https://docs.sevalla.com/applications/processes.md#cron-jobs) |
| Retries | A failed cron run is retried once. A failed job isn't retried | | |
| Run history | 30 days | Older runs are removed | |
| Instances | 1 per run | | |

## Disks

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Disks | 1 per web process or background worker. Cron jobs and jobs can't have one | | Share files between processes through [object storage](https://docs.sevalla.com/object-storage/overview.md) or a database |
| Sizes | 10, 20, 50, 100, 150, 200, 300, 400, 500, 750 and 1000 GB. Above 10 GB needs a payment method | | |
| Resizing | Grow only | `A disk cannot be made smaller. Pick a disk resource type of at least <size> GiB.` | Create a new, smaller disk; the old disk's files are lost |
| Instances | 1 for a process with a disk, and no autoscaling | `A process with a disk can only use manual scaling with at most one instance. Detach the disk to scale it further.` | Scale up with a larger size, or keep files in object storage and scale out |
| Mount path | Starts with `/`; letters, digits, `_`, `-`, `.` and `/`. Not `/`, `/app`, `/etc`, `/layers`, `/lib`, `/mnt`, `/root`, `/usr/local`, `/var` or `/workspace` themselves | `Invalid path` | Use a folder inside them, such as `/var/lib/data` |
| Deployments | The process stops before the new instance starts | A short interruption on every deployment | |

See [Persistent storage](https://docs.sevalla.com/applications/disks.md).

## Networking

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| TCP proxies | 3 per application (default) | The dashboard shows `You’ve reached the limit of 3 TCP proxies. Delete one to create another.` The API returns `400` with `Resource limit reached for tcpProxy` | Contact support |
| Private ports | 100 per process (default) | The API returns `400` with `Resource limit reached for privatePort` | Contact support |
| TCP proxy port | Assigned by Sevalla, from 20000 to 29999 or from 32768 to 65000 | | |
| Internal connections | Only between services in the same location | | Create the services in the same location |

See [Networking](https://docs.sevalla.com/applications/networking.md).

## Environment variables

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Key | 1 to 255 characters. Application keys use only letters, digits, `-`, `_`, `.` and `:` | The API returns `400` with `Request doesn't match the schema` | |
| Value | Up to 32,768 characters | The API returns `400` with `Request doesn't match the schema` | Keep larger data in [object storage](https://docs.sevalla.com/object-storage/overview.md) and put its URL in the variable |
| Number of variables | No limit | | |
| References between static site variables | Up to 10 levels | | |

The limits apply to application variables, [global variables](https://docs.sevalla.com/applications/environment-variables.md#global-variables) and [static site variables](https://docs.sevalla.com/static-sites/environment-variables.md).

## Web terminal

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Tabs | 8 per application | `You can have up to 8 tabs per application.` | Split a tab into panes |
| Session after the connection drops | Kept 15 minutes | The shell ends | Run long tasks in tmux |
| Session without input or output | 8 hours | The shell ends | |
| Disconnected sessions | 20 per user and 10 per process | The oldest one ends | |
| Output kept for a replay | The last 256 KB per session | Older output isn't replayed | |
| File upload or download | 100 MB | `This is over the 100 MB limit.` | Split the file, or fetch it from a URL with `curl` in the terminal |

See [Web terminal](https://docs.sevalla.com/applications/web-terminal.md).

## Logs and metrics

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Time ranges in the dashboard | Custom ranges up to 60 days back, for logs and metrics | | |
| Delay | Lines can take up to 2 minutes to appear | | |
| Lines in the dashboard view | 20,000 | Older lines drop off the top | Narrow the time range or the filters, or download the logs |
| Entries per API request | 1 to 5,000, default 1,000 | The most recent entries in the range are returned | Ask for shorter time ranges |

See [Logs](https://docs.sevalla.com/applications/logs.md).

## Databases

| Size | CPU | Memory | Storage |
| - | - | - | - |
| DB1 | 0.25 | 0.25 GB | 1 GB |
| DB2 | 0.5 | 2 GB | 5 GB |
| DB3 | 1 | 4 GB | 10 GB |
| DB4 | 2 | 8 GB | 20 GB |
| DB5 | 4 | 16 GB | 40 GB |
| DB6 | 8 | 32 GB | 60 GB |
| DB7 | 14.5 | 58 GB | 80 GB |
| DB8 | 28.5 | 108.5 GB | 90 GB |
| DB9 | 58.5 | 229 GB | 100 GB |

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Connections | Depends on the engine, the size and the location. A DB1 PostgreSQL database in an OCI location allows 100 | PostgreSQL refuses new connections with `sorry, too many clients already`; MySQL and MariaDB with `Too many connections` | Use a connection pool in your application, close idle connections, or move to a larger size |
| Storage | The size's storage; it can't be added separately | Writes fail | Move to a larger size before it fills. See [Storage](https://docs.sevalla.com/databases/overview.md#storage) |
| Memory | The size's memory | The database is stopped and restarted. Redis and Valkey in OCI locations reject writes at 80 % of it | A larger size. MySQL and MariaDB need at least DB2 under production load |
| Size changes | Up only. DB7 and larger through support | | To move down, restore a backup into a new, smaller database |
| Databases and users per database server | 1 database and 1 user | | Create another database |
| Databases per company | No limit | | |
| Manual backups | 5 per database (Google Cloud), 5 per backup target (OCI) | `Manual backup limit reached, at most 5 manual backups are kept per backup target` | Delete a manual backup first. See [Backups](https://docs.sevalla.com/databases/backups.md) |
| Backup targets (OCI) | 5 per database | `Backup target limit reached, a database can have at most 5 backup targets` | |
| Internal connections | Only from services in the same location | | Use the [external connection](https://docs.sevalla.com/databases/connect.md#enable-the-external-connection) |

To see a database's connection limit, connect to it and run the engine's command:

```sql PostgreSQL theme={"theme":{"light":"github-dark-default","dark":"github-dark-default"}}
SHOW max_connections;
```

```sql MySQL and MariaDB theme={"theme":{"light":"github-dark-default","dark":"github-dark-default"}}
SHOW VARIABLES LIKE 'max_connections';
```

```bash Redis and Valkey theme={"theme":{"light":"github-dark-default","dark":"github-dark-default"}}
CONFIG GET maxclients
```

See [Databases](https://docs.sevalla.com/databases/overview.md).

## Object storage

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Buckets | 20 per company (default) | `Object storage limit reached` | Delete a bucket, or contact support |
| Uploads in the dashboard | 300 MB per file, 100 files at a time | `Larger than 300 MB. Upload it with the S3-compatible API.` | Upload over the [S3 API](https://docs.sevalla.com/object-storage/connect.md) |
| Object size and requests over the S3 API | Cloudflare R2's [limits](https://developers.cloudflare.com/r2/platform/limits/) | | |
| Grace period when you roll keys | Up to 168 hours | | |
| Location | Fixed when you create the bucket | | |

See [Object storage](https://docs.sevalla.com/object-storage/overview.md).

## Static sites

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Static sites | 100 per company | `Site creation blocked due to limitations reached for company "<id>"` | Delete sites you don't use, or contact support |
| Publish directory | 1 GB per deployment | `'<directory>' directory size exceeds 1 GB limit.` and the deployment fails | Keep large media in [object storage](https://docs.sevalla.com/object-storage/overview.md) |
| Number of files and file size | No limit beyond the 1 GB | | |
| Build time | 30 minutes per deployment (default) | The deployment fails | Contact support |
| Build container | 4 CPUs and 8 GB of memory | | |
| Deployments queued or running | 10 per site, production and previews together | `Pending deployment limit reached for static site "<id>"`. A push at the limit starts no deployment | [Cancel](https://docs.sevalla.com/static-sites/deployments.md#cancel-a-deployment) deployments you don't need |
| Free bandwidth | 100 GB per billing period, shared by the company's sites | Beyond it, \$0.10 per GB | See [Pricing](https://docs.sevalla.com/billing/pricing.md#static-sites) |
| Free build time | 600 minutes per billing period, shared by the company's sites | Beyond it, \$0.05 per minute | |
| Pull request previews | Deleted 30 days after they finish | | |
| Edge cache | 30 days, or until the next deployment | | |

See [Static sites](https://docs.sevalla.com/static-sites/overview.md) and [Build settings](https://docs.sevalla.com/static-sites/build-settings.md#build-environment).

## Custom domains

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Applications on **H1** | No custom domains while the web process uses **H1** | Adding a domain fails with `Custom domains are not available while the web process uses a hobby instance size. Change the web process to a larger size first.` Moving a web process with a custom domain to **H1** fails with `Cannot create hobby process because app has custom domain` | Use **S1** or larger for the web process |
| Custom domains per service | No limit | | |
| Domain name | Up to 253 characters, each label up to 63. Not `.ru`, and not starting with `*.` | `Invalid domain name`, `.ru domain names are not supported` | For a wildcard, add the domain and select **Wildcard**. See [Wildcard domains](https://docs.sevalla.com/domains/overview.md#wildcard-domains) |
| The same domain twice | A domain can be on one service only, across all of Sevalla | `Domain already exists` | Delete it from the other service first |
| Sevalla domain name | 3 to 63 letters, numbers and hyphens | `Domain name must be at most 63 characters long` | |

See [Custom domains](https://docs.sevalla.com/domains/overview.md).

## Pipelines

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Pipelines | 50 per company (default) | `Pipeline limit reached` | Contact support |
| Stages | 10 per pipeline, the preview stage included (default) | `Pipeline stage limit reached` | Contact support |
| Stages per application | 1 | | |

See [Pipelines](https://docs.sevalla.com/pipelines/overview.md).

## API, webhooks and companies

The REST API counts requests per company, and per company and service for the tiers that act on one service. Every response has `x-ratelimit-limit`, `x-ratelimit-remaining` and `x-ratelimit-reset` headers.

| Tier | Limit | What it covers |
| - | - | - |
| Service creation | 20 per hour | Creating or cloning applications, creating databases, static sites, buckets and load balancers, and changing custom domains |
| Service mutation | 10 per minute per service | Updating, suspending, activating and deleting a service, cache purges, restarts |
| Deployment | 10 per minute per service | Triggering, rolling back and cancelling deployments |
| General write | 30 per minute | Other writes: environment variables, processes, backups, pipelines, webhooks, API keys |
| Logs | 30 per minute | Deployment, runtime and access logs |
| Read | 400 per minute | Every other request |

At a limit, the API returns `429` with a `retry-after` header: wait that many seconds, then retry with backoff. See [Rate limits](https://docs.sevalla.com/developer-tools/api.md#rate-limits).

| Limit | Value | At the limit | Raise it or work around it |
| - | - | - | - |
| Items per page in the API | `limit` 1 to 100, default 25 | | Page with `offset`. See [Pagination](https://docs.sevalla.com/developer-tools/api.md#pagination) |
| Webhooks | 10 per company | `You can only create up to 10 webhooks per company` | One webhook receives every event you pick; filter on the payload |
| Companies you own | 10 (default) | `You have reached the maximum number of companies allowed, if you have a need to create more companies please reach out to our support` | Companies you're invited to don't count. Contact support for more |

## API and CLI

The sizes on this page come from the API. List them to get the current values and the IDs that other operations take.

| Task | API | CLI |
| - | - | - |
| List instance sizes | [List process resource types](https://api-docs.sevalla.com/v3/resources/list-process-resource-types) | `sevalla resources process-types` |
| List disk sizes | [List disk resource types](https://api-docs.sevalla.com/v3/resources/list-disk-resource-types) | `sevalla resources disk-types` |
| List database sizes | [List database resource types](https://api-docs.sevalla.com/v3/resources/list-database-resource-types) | `sevalla resources db-types` |
| List locations | [List clusters](https://api-docs.sevalla.com/v3/resources/list-clusters) | `sevalla resources clusters` |

In the API, `cpu_limit` is in thousandths of a vCPU (`500` is 0.5 vCPU) and `memory_limit` and `storage_limit` are in MB (`1000` is 1 GB).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.