Limits and quotas

Monthly browser-hours and egress, concurrency, session length, idle timeout, token lifetime, retention and egress rules of OpenWAF Browsers in the beta.

On this page

During the public beta OpenWAF Browsers is free within the quota below. These are the defaults for every organization. An operator can adjust them for yours: write to support@openwaf.dev.

Quota per organization

ItemDefaultCounted as
Browser-hours20 per monthTime of every browser from the moment Chrome is ready until it stops, idle time included; start-up time is not counted
Egress5 GB per monthBytes uploaded plus bytes downloaded through the egress proxy (1 GB = 10⁹ bytes)
Concurrent browsers2 per keyBrowsers running at the same time with one key
Session length60 minutesPer browser, then it stops
Keys5Keys of the organization

GET /v1/orgs/{org}/browsers returns the quota in quota and the month to date in usage. The dashboard shows both on Browsers → Overview.

The monthly cycle

  1. The month is a calendar month in UTC. It starts on the 1st at 00:00 UTC. period.start and period.end give the exact bounds.
  2. At 80 % of browser-hours or of egress, warning turns true and the dashboard shows a warning. Nothing stops.
  3. At 100 % of either, every key of the organization is disabled and its running browsers stop. status becomes quota_exceeded and the keys show disabled: true. New browsers are refused with 401.
  4. On the 1st of the next month at 00:00 UTC the keys are enabled again automatically. You do not need to do anything.

Usage is collected every minute, so the figures in the dashboard and the API lag by up to about two minutes. For the same reason, browsers can keep running for up to about two minutes past 100 % before they are stopped.

Browser lifetime

ItemValue
Idle timeout120 seconds with no CDP or live view client, unless you set timeout or keepAlive
Maximum session length60 minutes
CDP and live view tokens1 hour; GET /v1/browsers/{id} returns fresh ones
Session files (recordings, downloads)Kept 7 days after the browser stops
ProfilesOne browser at a time; deleting one in use answers 409

Closing the CDP connection does not stop a browser. Stop it with PATCH /v1/browsers/{id} {"action": "stop"} so it does not count idle time.

Shared capacity

In the beta, all organizations share the browser nodes: up to 5 browsers run at the same time across the service. When they are all busy, POST /v1/browsers answers 429 with {"code": "capacity_busy"} and Retry-After: 30. Wait and retry: it does not count against your quota. capacity in the overview shows the current state (max_sessions, running, busy).

This is different from your own limit of 2 browsers per key, which answers 429 with {"code": "key_concurrency"}.

Egress rules

Every request of the browser goes through the egress proxy:

  • Ports 80 and 443 only.
  • Always denied, whatever the settings: private addresses (RFC 1918), loopback, link-local (including the cloud metadata address 169.254.169.254), CGNAT (100.64.0.0/10), multicast, documentation and other special-purpose ranges, and their IPv6 equivalents. The proxy resolves the names itself; if any address of a name is denied, the name is denied.
  • Open mode (the default) allows any other public host. Allowlist mode allows only the hosts an admin lists: example.com for that host, *.example.com for its subdomains, up to 100 entries.
  • Every request is logged: time, key, browser, method, host, port, decision, reason, status, bytes and duration. Read it with GET /v1/browsers/{id}/egress, the organization egress log or Browsers → Egress log.

The browser cannot reach your own machine or private network. To test a site that is not public, publish it on a public host name first.

Location

Browsers, recordings, downloads and logs are hosted in the EU, in Germany.

Last updated:

↑↓ to navigate↵ to openesc to close