Limits
The limits that apply on the free plan. We notify you before you approach or exceed one.
Every organization is on the Free plan today; the Pro column shows what the plan changes once self-serve billing opens. Every limit below is actually enforced by the service, with two exceptions. Requests are counted but not yet blocked; enforcement starts together with the Pro plan. Database size is measured and notified, but nothing rejects a write at the cap — what happens instead is described below.
| Item | Free | Pro | When exceeded |
|---|---|---|---|
| Requests | 100,000 a day | 3 million a month included | Serving stops for the rest of the day. |
| Projects per organization | 3 | 30 | 409 project_limit |
| Database size | 150MB | 150MB | Writes keep working. Backups slow down and cold resume can fail. |
| Backup retention | 24 generations (1 day) | 168 generations (7 days) | The oldest generations are deleted first. |
| File storage | 1GiB | 10GiB | 507 quota_exceeded |
Outgoing email (login emails and env.email.send) | 30 per hour per project | 300 per hour | Delivery is delayed. |
| Incoming email | 600 per hour per project | Same | Rejected at the sender. |
| Email log retention | 30 days | 365 days | The oldest entries are deleted first. |
| Log buffer | 2,000 lines / 1MiB per project | Same | The oldest logs are dropped first. |
| Bundle upload | 64MiB compressed | Same | bundle_too_large |
| Scheduled execution | 5 per organization | 250 | 400 cron_limit |
The 150MB database size limit applies to every plan alike — but it is an operational limit, not an engine limit. The engine handles larger databases. 150MB is the size at which an hourly full backup stays cheap, and once incremental backups land the cap goes up.
Nothing blocks a write at 150MB today. At 90% we send a db_near_cap notification, and past the cap two things degrade: every hourly backup takes longer in proportion to the database size, and above roughly 240MB a project that has gone cold can fail to come back (restore_too_large). See The 150MB cap for details.
Scheduled execution also caps the wall-clock time of one run, and that cap comes from the schedule rather than the plan: 30 seconds under an hour, 5 minutes at an hour or longer. See Scheduled execution.
Even after you go over the file storage quota, reads, listings, and deletes keep working. Only writes are restricted, so that you can bring usage back down.
When you hit the project limit
Error [project_limit] the free plan allows up to 3 projects (currently 3)The response body includes the current limit and usage.
{ "error": { "code": "project_limit", "message": "…", "details": { "limit": 3, "count": 3, "plan": "free" } } }Clean up projects you no longer use, or tell us at hello@runlot.io if you need more.
Notifications
When you approach or exceed a limit, we notify the organization's admin.
| Notification | When |
|---|---|
project_limit | A project creation was rejected by the limit |
db_near_cap | The database reached 90 % of the cap |
storage_near_quota | File storage reached 90 % of the quota |
backup_failed | A backup failed after retries |
restore_done | A restore finished |
dns_publish_stalled | A DNS zone has not been published for five minutes |
The same kind of notification is sent at most once every 24 hours. This keeps repeated overruns from flooding your inbox.
You can review recent notifications on the organization page in the dashboard. For accounts with no email address on file, the dashboard is the only place notifications appear.
Requests, today and later
Request counts and CPU time are collected as usage today and are not blocked yet. Two things start together with the Pro plan:
- On the free plan, passing the daily request limit stops serving for the rest of that day — it never turns into a charge.
- On Pro, requests past the included amount are billed as usage, with spending limits on by default.
runlot usage
runlot usage --hours 168Why backup retention is one day
Backup generations are taken once an hour. 24 generations is one day, and 168 generations is seven days. Retention differs by plan because of the cost of keeping copies off-site.
Restores also work at hourly granularity; you cannot roll back to an arbitrary point in time. See Backup and restore.
Regions
There is one region today: Seoul. Your application and your database run on the same machine, so an env.db call needs no network round trip.