Skip to main content
ThingValue
Manifest version1
Service name regex^[a-z][a-z0-9-]{0,30}$
Public-port prefix regex^[a-z][a-z0-9-]{0,30}$
Secret / variable name regex^[A-Z][A-Z0-9_]*$
Public ports per service1
Pod replicas per service1
Ephemeral deploy TTL — default5 minutes
Ephemeral TTL clock startswhen status reaches healthy
”Concurrent deployments” unitactive environment instance (base env = 1 regardless of repo count; each preview / dev / manual instance = +1)
Manual instance TTL — defaultthe plan’s deployment TTL, or 24 hours when the plan has none
Public host shape<env-name>-<service>-<id>.<apps-base> (<id> = 8 hex from the env-instance UUID)
Host stabilityStable across redeploys; an instance keeps its <id> for its lifetime
Invite expiry7 days
Storage overage hard ceiling4× the plan’s included storage (on plans that bill overage)
Log retention30 days
Usage metrics retention30 days (sampled every 30s — see Metrics)
Deployments list default page size15
Repos list default page size24
Max page size on any list100
Request body cap (app traffic)10 MB (413 beyond it)

Edge rate limits

Plans can carry a per-client-IP request rate (sustained requests/second, with a burst allowance) and a per-client-IP concurrent-request cap, enforced at the platform edge for every public service — platform subdomains and custom domains alike. A client that exceeds them receives 429 Too Many Requests; other clients of the same service are unaffected. These are abuse guards against a single hot client, not a cap on how much total traffic a service may serve. Open Settings → Billing to see your org’s live values; unlimited means no edge throttle is applied. There is no upstream response timeout at the edge — long-lived SSE and WebSocket connections are not cut off.

Per-deployment resources

Every deployment runs with CPU, memory, and disk caps that come from your plan. The numbers aren’t fields in slipway.yaml — they apply automatically. See Plans & pricing for the current per-plan caps, or open Settings → Billing to see the live values for your org. Each container gets a CPU limit (the ceiling) and a CPU request (the guaranteed share) from your plan; when the request is below the limit, the container can burst up to the limit whenever the node has headroom. Memory is always fully guaranteed at the limit — there is no memory burst, because memory can’t be throttled. If a build asks for more than your plan allows, the deploy fails at the deploy phase and the deployment detail page tells you exactly which cap was exceeded.

Storage overage

Named-volume storage is an org-wide budget (see Plans & pricing). What happens when you exceed your included storage depends on the plan:
  • Plans with an overage rate (e.g. Team, Business) treat included storage as a soft cap. You may provision past it up to a hard safety ceiling — 4× the included amount — and the GB over the included line are billed as metered overage on your next invoice at the plan’s per-GB-month rate. Provisioning past the safety ceiling is refused.
  • Plans without an overage rate (e.g. Starter) treat included storage as a hard cap: provisioning past it is refused until you free space or upgrade.
A background reporter samples each subscribed org’s provisioned storage daily and reports the over-included amount to Stripe (the meter aggregates by last reported value, so your invoice reflects what you have provisioned at billing time). Watch your standing on Settings → Usage.

Tenant isolation

Each deployment runs fully isolated, with strict network policies. Other tenants can’t reach your services, and yours can’t reach theirs. Outbound traffic to the public internet works normally, with one exception: outbound SMTP (TCP ports 25, 465, and 587) is blocked. Direct mail sending from shared infrastructure gets the platform’s IPs blacklisted; send mail through a provider’s HTTPS API (Resend, SendGrid, Postmark, SES, …) instead. SMTP between your own services inside an environment still works. Each environment is bounded by a resource quota from your plan: pods per environment × per-pod size for CPU and memory, plus the pods-per-environment cap itself. Changing plans re-derives the quota on the next deploy.