Skip to content

Limits reference ​

Every bound BrowserMesh enforces, in one table. Defaults are what an unconfigured server uses; the range is what the environment variable accepts.

Exceeding a bound produces LIMIT_EXCEEDED when the request cannot be served, or a truncated result flagged in the response when it can. The two are different outcomes and both are explicit — no result is silently shortened.

Runtime ​

BoundDefaultRangeSet with
Operation timeout10,000ms1–300,000BROWSERMESH_TIMEOUT_MS
Live sessions501–1,000BROWSERMESH_MAX_SESSIONS
Pages per session201–100BROWSERMESH_MAX_PAGES

timeoutMs on an individual call overrides the default for that call, up to 300,000ms.

Snapshots ​

browser_snapshot bounds are fixed in the build, not configurable. Per-call arguments may lower them but never raise them past the maximum.

BoundDefaultPer-call maximumArgument
Returned characters50,000100,000maxChars
Returned bytes65,536131,072maxBytes
Tree depthunbounded100maxDepth
Element refs50100maxRefs
Children per nodeunbounded1,000maxChildren
Source DOM nodes20,000——
Source characters2,000,000——
Retained captures / page4——
Cursor lifetime30s——
Element ref lifetime30s——

maxChars and maxBytes both apply; whichever binds first truncates, and truncation.byMaxChars / truncation.byMaxBytes say which did. For ASCII text characters bind first. For content averaging three bytes per character the byte bound is reached at roughly 21,800 characters, so the same arguments return less text on a CJK page than on an English one — by design, and reported.

A source page over 20,000 DOM nodes or 2,000,000 characters is rejected with LIMIT_EXCEEDED before serialization rather than truncated. Scope the snapshot to a container with scope.

Cursors and refs both expire 30 seconds after capture and are invalidated by navigation or page close, whichever comes first.

Reading page text ​

BoundDefaultRangeSet with
Characters20,000128–1,000,000BROWSERMESH_VISIBLE_TEXT_MAX_CHARS
Bytes65,536512–4,194,304BROWSERMESH_VISIBLE_TEXT_MAX_BYTES

browser_visible_text has no per-call bound argument and no cursor. When truncation.truncated is true, the remedy is a narrower locator or a server-side change to the limit — not a follow-up call. Use browser_snapshot, which paginates, when the whole of a long page is needed.

Observability ​

BoundDefaultRangeSet with
Retained events per page2001–1,000BROWSERMESH_OBSERVABILITY_EVENTS
Events per response1001–200BROWSERMESH_OBSERVABILITY_PAGE_SIZE
Captured string length2,048128–8,192BROWSERMESH_OBSERVABILITY_STRING_CHARS
Response bytes65,5361,024–262,144BROWSERMESH_OBSERVABILITY_RESPONSE_BYTES

browser_observe's limit argument is validated against the configured events per response, not against the maximum the published schema allows. On a default server limit: 150 is accepted by the schema and rejected by the runtime with INVALID_ARGUMENT; the safe ceiling is 100 unless the operator raised it.

The event buffer is a ring. When it overflows, droppedCount and gap say so. Read both before concluding that something did not happen.

Screenshots ​

BoundDefaultRangeSet with
Dimension (pixels)10,000256–32,768BROWSERMESH_SCREENSHOT_MAX_DIMENSION
Total pixels40,000,00065,536–268,435,456BROWSERMESH_SCREENSHOT_MAX_PIXELS
Encoded bytes16 MiB1,024–64 MiBBROWSERMESH_SCREENSHOT_MAX_BYTES

A full-page capture of a long page reaches the pixel or byte bound before the dimension bound. Capture a single element instead of raising the limit.

Session labels ​

Fixed in the build. Names and metadata are workflow labels, not identity.

BoundValue
Name characters / bytes128 / 512
Metadata entries32
Metadata key chars/bytes64 / 256
Metadata value chars/bytes512 / 2,048
Metadata aggregate bytes8,192

Control characters are rejected, as are the keys __proto__, constructor, and prototype.

Saved state ​

BoundDefaultRangeSet with
Saved states1001–10,000BROWSERMESH_MAX_SAVED_STATES
Bytes per state1 MiB1,024–64 MiBBROWSERMESH_MAX_STATE_BYTES
Bytes in total16 MiB1,024–1 GiBBROWSERMESH_MAX_STATE_TOTAL_BYTES

stateId is 1–128 characters from a safe identifier set.

Argument bounds ​

Enforced by the published input schemas.

ArgumentBound
timeoutMs1–300,000
url matcher value2,048 characters
URL glob wildcards32
wait text2,000 characters
Dialog promptText2,000 characters
key1–64 characters
Iframe chain depth1–5 selectors
stateId, sinceEventId1–128 characters
Snapshot cursor1–160 characters

What browser_runtime_info reports ​

browser_runtime_info returns the session, screenshot, visible-text, and persistence limits plus the timeout, session, and page counts. It does not report snapshot bounds, observability bounds, or the 30-second cursor and ref lifetimes. Those are fixed in the build or come from environment variables the tool does not echo; this page is the reference for them.

Released under the Apache License 2.0.