# Limits & scaling

Plans are per workspace and limit how many things you create and the monthly allowances. Free limits are per person, across all your free workspaces. Every paid workspace has its own limits. The technical limits below apply on every plan. Data size, storage bytes, bandwidth and function traffic have no plan quota yet — they are listed as not metered.

## Plans

|  | Hobby | Pro | Enterprise |
| --- | --- | --- | --- |
| Price (per workspace) | Free | $20 a month | $500 a month |
| AI usage | Pay as you go from your balance | $10 a month included | $100 a month included |
| Emails (rolling 30 days) | 100 | 5,000 | 100,000 |
| Custom sending domains | 1 | 10 | 50 |
| Apps and sites (projects) | 3 | 20 | 1,000 |
| Server apps | Pro and up | Included | Included |
| Functions | 5 | 50 | 100 |
| Databases (10 GB each) | 1 | 10 | 100 |
| Storage buckets | 2 | 20 | 500 |
| Vector collections | 1 | 10 | 200 |
| Memory stores | 2 | 20 | 500 |
| Agents | 2 | 20 | 500 |
| Auth pools | 1 | 10 | 100 |
| Payment accounts | 1 | 10 | 100 |
| Media assets (videos and live channels) | Pro and up | 100 | 1,000 |
| Repos | 5 | 50 | 500 |
| Your own domains connected | 2 | 20 | 500 |
| Team members | 3 | 10 | 100 |
| Workspaces you can own | 2 | 10 | 100 |
| AI requests a minute | 60 | 600 | 6,000 |
| Agent runs at once | 1 | 5 | 20 |

> Past a count the create call answers 402 with code plan_limit, the limit and the current count. On Hobby the count is the total across every free workspace the owner owns (the answer carries shared_workspaces), and upgrading the workspace gives it its own limits. Server apps are on Pro and up, and videos and live channels on Pro and up: on a plan without them the deploy or create answers 402 plan_limit with required_plan, before anything is built or created. Server apps that were already live on a free workspace when server apps moved to Pro keep running and can be redeployed. Nothing existing is deleted when a plan changes; only new creates are refused.

## Not metered or capped yet

- Requests and bandwidth to sites and server apps, and traffic to function URLs.
- Storage bytes (measured daily and shown in Analytics, but no quota).
- Database size (measured daily; each database stops at the engine's 10 GB).
- Server-app running time, errors and latency.

## Databases

| Limit | Value |
| --- | --- |
| Size of one database | 10 GB |
| One row or value | 2 MB |
| One SQL statement | 100 KB |
| Bound parameters per statement | 100 |
| Time per query | 30 seconds |
| Columns per table | 100 |
| Statements in one batch | 100 |
| Query requests per workspace | 600 per 5 minutes (a batch counts once) |

## Deploys and server apps

| Limit | Value |
| --- | --- |
| One upload (folder, tar.gz or JSON files) | 25 MB compressed, 40 MB unpacked |
| One file | 10 MB |
| Files in one upload | 5,000 |
| Files a static site serves | 500 |
| Git repository download | 20 MB compressed, no file-count cap |
| Build time | about 13 minutes |
| Server app | one container per app (about a quarter of a CPU and 1 GB of memory), no extra copies |
| Server app sleep | after 15 idle minutes; disk wiped on sleep and on every deploy |
| Awake server apps | 40 across the whole platform today; sleeping apps do not count |

## Functions, storage and repos

| Limit | Value |
| --- | --- |
| Function code | one ES module, at most 200 KB, no npm install |
| Test invoke | first 16 KB of the response, 10-second timeout |
| One storage upload | 5 GB (one signed PUT) |
| Object key | 1,024 characters |
| Signed link lifetime | 60 seconds to 7 days (default 15 minutes) |
| Objects per listing page | 1,000 (default 100), with a cursor for the next page |
| Repo push over REST | 500 files, 10 MB per file, 25 MB per push |

## AI, vectors, memory and agents

| Limit | Value |
| --- | --- |
| Gateway input | 200,000 characters (system prompt plus messages), up to 500 messages |
| Gateway output | max_tokens up to 8,192 (2,048 on the Llama edge models); default 1,024 |
| AI requests a minute | 60 hobby, 600 pro, 6,000 enterprise — chat and embeddings counted separately |
| What one AI request may reserve | $2 hobby, $10 pro, $10 enterprise (402 `ai_request_too_large`) |
| Embeddings per call | 100 inputs |
| Vector dimensions | 384, 768 (default), 1,024 or 1,536 |
| Vectors per upsert | 1,000 (100 when sending text to embed) |
| Vector query topK | 100, or 50 with full metadata or values |
| Memory value / key | 1 MB / 512 characters |
| Conversation window | 1,000 most recent messages per scope |
| Memory quotas | items per store and bytes per workspace, by plan; a write past them gets 402 |
| Agent steps | 1–24 per run (default 8) |
| Agent runs | 6 a minute per workspace; input up to 32,000 characters |
| Media upload | video only, up to 1 hour |

## Mail, payments and auth pools

| Limit | Value |
| --- | --- |
| Email per call | one recipient; text and/or HTML |
| Email quota | 100 hobby, 5,000 pro, 100,000 enterprise per rolling 30 days; optional daily cap of your own |
| Custom sending domains | 1 hobby, 10 pro, 50 enterprise per workspace (pending and failed domains count until removed) |
| Checkout amount | $0.50 to $1,000,000, USD, one-time |
| Checkout link | single use, expires after 24 hours |
| Earnings hold | 7 days per payment before it can be withdrawn |
| End-user password | 8–256 characters; 10 wrong tries lock the account for 15 minutes |
| End-user token | HS256 JWT, valid 7 days |
| Browser sign-up | 10 per IP an hour, 600 per pool an hour |
| Codes asked for from the browser | 50 an hour and 300 a day per pool; at most 20% of the email quota per workspace (20 / 1,000 / 20,000 per 30 days) |

## Rate limits

Every 429 carries `code`, a Retry-After header and `retry_after` seconds in the body. API quotas also send X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Back off for Retry-After seconds and try again.

| What | Limit | Code |
| --- | --- | --- |
| AI chat | 60 / 600 / 6,000 a minute (hobby / pro / enterprise) | ai_rate_limited |
| Embeddings, memory search, text sent to vectors | a separate bucket of the same size | ai_rate_limited |
| Database queries, vector calls, semantic memory | 600 calls per 5 minutes per workspace, shared (a batch of statements is one call) | rate_limited |
| Agent runs | 6 a minute per workspace | rate_limited |
| Balance top-ups | 10 an hour | rate_limited |
| New workspaces | 5 a day per person | rate_limited |
| Email | your optional daily cap | daily_cap |
| Auth-pool codes asked for from the browser | 50 an hour and 300 a day per pool, and 20% of the email quota per workspace | code_limit |

## How it scales

| Service | At millions of users today |
| --- | --- |
| Static sites | Scale: served from the edge cache close to each visitor, the rest from object storage. |
| Functions | Scale: each request runs at the edge location nearest the caller, with no servers to size. |
| Storage | Bytes scale: uploads and downloads go straight to object storage. Each signed link is one API call to Harakumo, so sign links with a longer expiresIn and reuse them rather than signing one per page view. |
| Auth pools | Verify tokens in your app with the JWT secret (no call per request). Sign-ups and logins run on the shared platform and suit apps with thousands of active users. |
| Databases | Each database has one writer and stops at 10 GB, and each query is an HTTPS call through Harakumo capped at 600 requests per 5 minutes per workspace. Good for development, internal tools and low-traffic apps; not yet for a high-traffic public app. Batch statements, cache reads and split data across databases. |
| Server apps | One small container per app with no extra copies, a cold start after it sleeps, and a platform-wide cap on awake apps. For large traffic, put the front end on a static site and the server logic in functions. |
| AI | Model capacity scales with the vendors; your workspace is capped by the per-minute limits above. |
| Mail | Up to the plan's 30-day quota, one recipient per call. |

> Coming: databases reached directly from your functions and apps (no HTTPS hop, no shared limit), read replicas, a Postgres engine for datasets over 10 GB, extra copies and larger sizes for server apps, and metered traffic.
