{"_self":{"principle":"Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.","widget":"article_voxels","feature":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","contains":"claim voxels + source edges","slug":"cloudflare-os-browser","urls":{"read":"https://miscsubjects.com/api/articles/cloudflare-os-browser/voxels","write":"https://miscsubjects.com/api/protocol/claim"},"how_to_use":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","write":"https://miscsubjects.com/api/protocol/claim","imessage":null,"router_tag":null,"proof_chain":[{"step":1,"claim":"Articles are voxel graphs of tiered claims, not prose blobs.","verify":"https://miscsubjects.com/api/articles/constitution"},{"step":2,"claim":"Claims link to hash-chained sources via source_ids.","verify":"https://miscsubjects.com/api/articles/cloudflare-os-browser/sources"},{"step":3,"claim":"Ask reads topology; ingest/claim append to ledger.","verify":"https://miscsubjects.com/api/protocol"},{"step":4,"claim":"Models queue growth: populate → collaborate → repair → reflex.","verify":"https://miscsubjects.com/api/protocol/grow"},{"step":5,"claim":"Graph proves its own shape (reflex) and $/claim (yield).","verify":"https://miscsubjects.com/graph.html?layer=reflex"},{"step":6,"claim":"Full feature index + _explain on every API response.","verify":"https://miscsubjects.com/api/articles/system-map"}],"related_features":[{"id":"constitution","name":"Article constitution","what":"Binding rules: required article slots, claim/source rules, ontology anti-sprawl.","urls":{"read":"https://miscsubjects.com/api/articles/constitution","read_md":"https://miscsubjects.com/api/articles/constitution?format=markdown"}},{"id":"sources_ledger","name":"Source ledger","what":"Hash-chained cited sources; verify integrity at GET .../sources.","urls":{"read":"https://miscsubjects.com/api/articles/cloudflare-os-browser/sources","write":"https://miscsubjects.com/api/protocol/sources"}},{"id":"claim_post","name":"Claim post protocol","what":"Prompt-injection style POST — one claim voxel with who_claims + posted_by.","urls":{"read":"https://miscsubjects.com/api/articles/cloudflare-os-browser/voxels","write":"https://miscsubjects.com/api/protocol/claim"}}],"system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","not_medical_advice":true},"_explain":{"feature":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","why":"Every feature is auditable collective intelligence","how":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/cloudflare-os-browser/voxels","write":"https://miscsubjects.com/api/protocol/claim"},"imessage":null,"router":null,"related":[{"id":"constitution","what":"Binding rules: required article slots, claim/source rules, ontology anti-sprawl."},{"id":"sources_ledger","what":"Hash-chained cited sources; verify integrity at GET .../sources."},{"id":"claim_post","what":"Prompt-injection style POST — one claim voxel with who_claims + posted_by."}],"not_medical_advice":true},"position":{"you_are_here":"https://miscsubjects.com/a/cloudflare-os-browser — Browser Rendering is an evidence adapter, not a better fetch()","plane":"cloudflare","master_entry":"https://miscsubjects.com/a/philosophy","siblings":[{"slug":"cloudflare-ai-gateway-setup","title":"How to create a Cloudflare AI Gateway, with authentication on","url":"https://miscsubjects.com/a/cloudflare-ai-gateway-setup"},{"slug":"cloudflare-os","title":"The Cloudflare OS: one account running an entire build","url":"https://miscsubjects.com/a/cloudflare-os"},{"slug":"cloudflare-os-access","title":"Cloudflare Access authenticates the edge, not your application","url":"https://miscsubjects.com/a/cloudflare-os-access"},{"slug":"cloudflare-os-async","title":"waitUntil, Queues, Workflows or Cron: choose by durability","url":"https://miscsubjects.com/a/cloudflare-os-async"},{"slug":"cloudflare-os-d1","title":"D1 bills rows, not queries, and serial round trips decide the architecture","url":"https://miscsubjects.com/a/cloudflare-os-d1"},{"slug":"cloudflare-os-email","title":"Cloudflare email is three products, not one mail stack","url":"https://miscsubjects.com/a/cloudflare-os-email"},{"slug":"cloudflare-os-functions","title":"Pages Functions compiles 224 route files into one 1.35 MB Worker","url":"https://miscsubjects.com/a/cloudflare-os-functions"},{"slug":"cloudflare-os-kv","title":"Workers KV makes reads fast by making writes slow and consistency optional","url":"https://miscsubjects.com/a/cloudflare-os-kv"},{"slug":"cloudflare-os-r2","title":"R2 cuts a 10 TB delivery bill from $923 to $18.45","url":"https://miscsubjects.com/a/cloudflare-os-r2"},{"slug":"cloudflare-os-workers","title":"One missing alarm guard turned a $5.75 workload into $34,895","url":"https://miscsubjects.com/a/cloudflare-os-workers"},{"slug":"cloudflare-unified-billing","title":"Cloudflare Unified Billing: the 5% is on the credits, and the 402 is one gateway toggle","url":"https://miscsubjects.com/a/cloudflare-unified-billing"}],"machine_side":"https://miscsubjects.com/api/articles/cloudflare-os-browser/voxels","discourse":"https://miscsubjects.com/api/articles/cloudflare-os-browser/discourse","append_protocol":"https://miscsubjects.com/a/append-protocol","protocol_door":"https://miscsubjects.com/api/protocol"},"slug":"cloudflare-os-browser","div_mode":false,"voxel":null,"divs":[],"voxels":[{"id":"c1","div_id":"claim:c1","kind":"claim","text":"Browser Run can execute a page and return a browser-specific representation; it should be used only when that execution or representation is material.","tier":"system","standing":null,"section":"Browser Rendering is an evidence adapter, not a better fetch()","status":"active","source_ids":["s1","s2","s4"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s1","source_type":"specification","hash":"725ff9e04ab41deb"},{"type":"supported_by","target":"s2","source_type":"specification","hash":"f7dc86dfdfc41dd6"},{"type":"supported_by","target":"s4","source_type":"specification","hash":"cba55c6918973a38"}],"why_material":"It defines the narrow boundary between ordinary HTTP and browser execution.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c1","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c1"},{"id":"c2","div_id":"claim:c2","kind":"claim","text":"The current Quick Actions surface exposes ten representation-oriented actions, including beta crawl.","tier":"fact","standing":null,"section":"The endpoint is a choice about evidence","status":"active","source_ids":["s1","s2","s3","s4","s5","s6","s7","s8"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s1","source_type":"specification","hash":"725ff9e04ab41deb"},{"type":"supported_by","target":"s2","source_type":"specification","hash":"f7dc86dfdfc41dd6"},{"type":"supported_by","target":"s3","source_type":"specification","hash":"1129cd0e1a335038"},{"type":"supported_by","target":"s4","source_type":"specification","hash":"cba55c6918973a38"},{"type":"supported_by","target":"s5","source_type":"specification","hash":"11bb07e110eb5e28"},{"type":"supported_by","target":"s6","source_type":"specification","hash":"d2691dc8bafa42e7"},{"type":"supported_by","target":"s7","source_type":"specification","hash":"c65b363de36c5795"},{"type":"supported_by","target":"s8","source_type":"specification","hash":"04bb639fec43fa8f"}],"why_material":"A caller can request the exact evidence form instead of receiving a generic browser primitive.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c2","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c2"},{"id":"c3","div_id":"claim:c3","kind":"claim","text":"Snapshot can capture two or more formats from one request, including content, screenshot, Markdown and the accessibility tree.","tier":"fact","standing":null,"section":"The endpoint is a choice about evidence","status":"active","source_ids":["s3"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s3","source_type":"specification","hash":"1129cd0e1a335038"}],"why_material":"Critical captures can preserve visual and structural evidence from the same browser state.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c3","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c3"},{"id":"c4","div_id":"claim:c4","kind":"claim","text":"Default page-load completion can return empty or incomplete SPA results, so a browser capability needs a target-specific completion assertion.","tier":"system","standing":null,"section":"A browser can execute a page without proving the page is complete","status":"active","source_ids":["s4","s5"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s4","source_type":"specification","hash":"cba55c6918973a38"},{"type":"supported_by","target":"s5","source_type":"specification","hash":"11bb07e110eb5e28"}],"why_material":"HTTP success and browser execution do not prove application completion.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c4","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c4"},{"id":"c5","div_id":"claim:c5","kind":"claim","text":"This build reproduced /markdown against example.com with status 200, 207.706 browser milliseconds and 1,418 ms client elapsed time.","tier":"measurement","standing":null,"section":"The first-party receipt: 208 browser milliseconds, not a speed claim","status":"active","source_ids":["r1","s2","s9"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"r1","source_type":"runtime_receipt","hash":"25b8ab523560bac4"},{"type":"supported_by","target":"s2","source_type":"specification","hash":"f7dc86dfdfc41dd6"},{"type":"supported_by","target":"s9","source_type":"specification","hash":"b2c69ef86d280beb"}],"why_material":"It is a fresh bounded receipt, not a statement that the adapter would work.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c5","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c5"},{"id":"c6","div_id":"claim:c6","kind":"claim","text":"Quick Actions are billed for browser time, while direct Browser Sessions add session-concurrency pricing.","tier":"fact","standing":null,"section":"The bill is browser time, and sessions add a second meter","status":"active","source_ids":["s9"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s9","source_type":"specification","hash":"b2c69ef86d280beb"}],"why_material":"The two invocation families have different cost surfaces.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c6","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c6"},{"id":"c7","div_id":"claim:c7","kind":"claim","text":"Workers Free includes ten browser minutes per day; Workers Paid includes ten hours per month and lists $0.09 for each additional browser hour.","tier":"fact","standing":null,"section":"The bill is browser time, and sessions add a second meter","status":"active","source_ids":["s10","s9"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s10","source_type":"specification","hash":"09c2a46981a3e476"},{"type":"supported_by","target":"s9","source_type":"specification","hash":"b2c69ef86d280beb"}],"why_material":"Browser time must be metered at invocation and account levels.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c7","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c7"},{"id":"c8","div_id":"claim:c8","kind":"claim","text":"Browser sessions should be explicitly closed and observed because idle sessions consume time; one historical issue reported close hanging in local development while production worked.","tier":"anecdotal","standing":null,"section":"The bill is browser time, and sessions add a second meter","status":"active","source_ids":["p2","s10","s11"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"p2","source_type":"github","hash":"18171a364782f283"},{"type":"supported_by","target":"s10","source_type":"specification","hash":"09c2a46981a3e476"},{"type":"supported_by","target":"s11","source_type":"specification","hash":"b104215e61be7637"}],"why_material":"Lifecycle defects can become denial-of-wallet defects.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c8","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c8"},{"id":"c9","div_id":"claim:c9","kind":"claim","text":"Cloudflare says a custom User-Agent does not bypass bot protection and Browser Run requests remain identifiable as bots.","tier":"fact","standing":null,"section":"Cloud browser does not mean bypass","status":"active","source_ids":["s6"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s6","source_type":"specification","hash":"d2691dc8bafa42e7"}],"why_material":"Remote browser execution does not confer access or permission.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c9","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c9"},{"id":"c10","div_id":"claim:c10","kind":"claim","text":"Two operator comments describe using or observing Browser Rendering for scraping or Markdown distillation, but neither proves universal bypass, permission, scale or reliability.","tier":"anecdotal","standing":null,"section":"Cloud browser does not mean bypass","status":"active","source_ids":["p5","p7"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"p5","source_type":"hn","hash":"acec405989ca4077"},{"type":"supported_by","target":"p7","source_type":"hn","hash":"1bd4eb78e77d33b3"}],"why_material":"The use case is real while the conclusion remains deliberately narrow.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c10","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c10"},{"id":"c11","div_id":"claim:c11","kind":"claim","text":"A crawl user reported root-relative image URLs being converted incorrectly in Markdown while the HTML remained correct.","tier":"anecdotal","standing":null,"section":"The output can be wrong even when the browser worked","status":"active","source_ids":["p4"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"p4","source_type":"github","hash":"6ef0088fc0023001"}],"why_material":"Representation integrity must be checked independently of transport success.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c11","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c11"},{"id":"c12","div_id":"claim:c12","kind":"claim","text":"The JSON action uses model-assisted extraction, so its output is derived evidence even when it satisfies a schema.","tier":"system","standing":null,"section":"The output can be wrong even when the browser worked","status":"active","source_ids":["s7"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s7","source_type":"specification","hash":"c65b363de36c5795"}],"why_material":"Schema validity cannot be promoted into source truth.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c12","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c12"},{"id":"c13","div_id":"claim:c13","kind":"claim","text":"Crawl is asynchronous, may run for seven days and retains completed result data for fourteen days.","tier":"fact","standing":null,"section":"Crawl is a queue, not a big page request","status":"active","source_ids":["s8"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s8","source_type":"specification","hash":"04bb639fec43fa8f"}],"why_material":"Create, status and result retrieval need distinct capability contracts.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c13","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c13"},{"id":"c14","div_id":"claim:c14","kind":"claim","text":"The current Free crawl table lists five jobs per day and one hundred pages per crawl; an operator's broader throughput concern is not evidence of the present Paid limit.","tier":"system","standing":null,"section":"Crawl is a queue, not a big page request","status":"active","source_ids":["p1","s10"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"p1","source_type":"hn","hash":"0ceaa1753185bfc2"},{"type":"supported_by","target":"s10","source_type":"specification","hash":"09c2a46981a3e476"}],"why_material":"It preserves the useful arithmetic without universalizing a historical reading.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c14","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c14"},{"id":"c15","div_id":"claim:c15","kind":"claim","text":"One operator reported building a zero-dependency CLI across the then-documented REST endpoint family.","tier":"anecdotal","standing":null,"section":"Crawl is a queue, not a big page request","status":"active","source_ids":["p6"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"p6","source_type":"hn","hash":"96077df1855503ba"}],"why_material":"It externally attests coherent practical use of the REST surface for that builder.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c15","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c15"},{"id":"c16","div_id":"claim:c16","kind":"claim","text":"Browser requests can carry cookies, custom headers and HTTP credentials, so the authority boundary includes redirects, subresources, credentials, scripts, duration, wallet and output.","tier":"system","standing":null,"section":"The authority boundary is larger than the URL","status":"active","source_ids":["s12","s8"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s12","source_type":"specification","hash":"1577cc754137b5a3"},{"type":"supported_by","target":"s8","source_type":"specification","hash":"04bb639fec43fa8f"}],"why_material":"A host allowlist on the initial URL alone does not prevent SSRF, leakage or wallet abuse.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c16","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c16"},{"id":"c17","div_id":"claim:c17","kind":"claim","text":"One operator reported persistent 7003 and 7000 errors despite an account identifier and token they had verified.","tier":"anecdotal","standing":null,"section":"What the operator reports change—and what they do not","status":"active","source_ids":["p3"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"p3","source_type":"github","hash":"ee7496ac46caa6ca"}],"why_material":"Structured upstream error bodies and endpoint identity belong in failure receipts.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c17","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c17"},{"id":"c18","div_id":"claim:c18","kind":"claim","text":"In this build, one canonical directory row supplies the capability contract, dispatch invocation and ledger lineage rather than creating a separate browser architecture.","tier":"implementation","standing":null,"section":"REST for bounded transforms; Puppeteer for interaction","status":"active","source_ids":["s13"],"posted_by":null,"who_claims":null,"edges":[{"type":"supported_by","target":"s13","source_type":"repository","hash":"a925dac44bf6852a"}],"why_material":"The browser family must preserve the one-catalogue-to-all-projections system claim.","content_hash":null,"stable_url":"https://miscsubjects.com/i/claim/cloudflare-os-browser/c18","machine_url":"https://miscsubjects.com/api/articles/cloudflare-os-browser/claims/c18"}],"sources":[{"id":"s1","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/","title":"Browser Run Quick Actions overview","quote":"Quick Actions are a set of REST API endpoints that provide common browser automation tasks.","summary":"Defines the bounded REST actions and their shared invocation model.","claim_ids":["c1","c2"],"hash":"725ff9e04ab41debdc28c599ca39a92fa85e263a72a8adc7dd97227f41ded669","prev":"genesis"},{"id":"s2","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/markdown-endpoint/","title":"/markdown — Extract Markdown from a webpage","quote":"The `/markdown` endpoint retrieves a webpage's content and converts it into Markdown format.","summary":"Defines the Markdown transform, REST and binding paths, authentication, and load controls.","claim_ids":["c1","c2","c5"],"hash":"f7dc86dfdfc41dd66259884e3c349a5fc20b2aa4d9c40fe9d367527d418ac989","prev":"725ff9e04ab41debdc28c599ca39a92fa85e263a72a8adc7dd97227f41ded669"},{"id":"s3","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/snapshot/","title":"/snapshot — Capture multiple page formats","quote":"The `/snapshot` endpoint combines multiple formats into a single request, so you do not need to call each endpoint separately.","summary":"Defines the multi-representation capture and its content, screenshot, Markdown and accessibility-tree formats.","claim_ids":["c2","c3"],"hash":"1129cd0e1a335038dce2960a43fd04f51c15f0b2b9eb1e02261c15698b40b89c","prev":"f7dc86dfdfc41dd66259884e3c349a5fc20b2aa4d9c40fe9d367527d418ac989"},{"id":"s4","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/content-endpoint/","title":"/content — Fetch rendered HTML","quote":"For JavaScript-heavy pages or Single Page Applications (SPAs), the default page load behavior may return empty or incomplete results.","summary":"Defines rendered HTML output and warns that default page completion can precede application completion.","claim_ids":["c1","c2","c4"],"hash":"cba55c6918973a38623571b4cfda5890e44a6beef7e98816edb3a1de92381b4c","prev":"1129cd0e1a335038dce2960a43fd04f51c15f0b2b9eb1e02261c15698b40b89c"},{"id":"s5","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/accessibility-tree-endpoint/","title":"/accessibilityTree — Capture the accessibility tree","quote":"For faster responses, advanced users can use `waitForSelector` to wait for a specific element instead of waiting for all network activity to stop.","summary":"Defines semantic roles, names and states and documents selector-based completion.","claim_ids":["c2","c4"],"hash":"11bb07e110eb5e28bbb7e4d3542ded72578e0e01bb7c3d9f1fbf6b4c9f2e4986","prev":"cba55c6918973a38623571b4cfda5890e44a6beef7e98816edb3a1de92381b4c"},{"id":"s6","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/scrape-endpoint/","title":"/scrape — Scrape HTML elements","quote":"The `userAgent` parameter does not bypass bot protection. Requests from Browser Run will always be identified as a bot.","summary":"Defines selector extraction and the explicit non-bypass boundary.","claim_ids":["c2","c9"],"hash":"d2691dc8bafa42e7397a8b2b29f12a8ef0f8a4bb6f4670af0e35219cdbe277bc","prev":"11bb07e110eb5e28bbb7e4d3542ded72578e0e01bb7c3d9f1fbf6b4c9f2e4986"},{"id":"s7","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/json-endpoint/","title":"/json — Capture structured data using AI","quote":"In this example, Browser Run first calls Anthropic's Claude Sonnet 4 model.","summary":"Documents model-assisted schema extraction, model selection and fallback behavior.","claim_ids":["c12","c2"],"hash":"c65b363de36c579502b8a832564cf973d1a6597b824721c5eb334976131ba201","prev":"d2691dc8bafa42e7397a8b2b29f12a8ef0f8a4bb6f4670af0e35219cdbe277bc"},{"id":"s8","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/crawl-endpoint/","title":"/crawl — Crawl web content","quote":"Crawl jobs have a maximum run time of seven days. If a job does not finish within this time, it will be cancelled due to timeout.","summary":"Defines asynchronous jobs, polling, seven-day runtime, fourteen-day result retention and browser parameters.","claim_ids":["c13","c16","c2"],"hash":"04bb639fec43fa8ffac73dece9d04ef9dd7bc315a43fb952c6b4caffe1b7a46b","prev":"c65b363de36c579502b8a832564cf973d1a6597b824721c5eb334976131ba201"},{"id":"s9","type":"specification","url":"https://developers.cloudflare.com/browser-run/pricing/","title":"Browser Run pricing","quote":"The `X-Browser-Ms-Used` header, which is returned in every Quick Actions response, reports browser time used for the request (in milliseconds).","summary":"Defines browser-hour and session-concurrency billing and the per-request usage header.","claim_ids":["c5","c6","c7"],"hash":"b2c69ef86d280bebec8939fa7870e1c7172efe5d3ee6c8937321cbd1987dc976","prev":"04bb639fec43fa8ffac73dece9d04ef9dd7bc315a43fb952c6b4caffe1b7a46b"},{"id":"s10","type":"specification","url":"https://developers.cloudflare.com/browser-run/limits/","title":"Browser Run limits","quote":"Crawl jobs per day | 5 per day","summary":"Current Free and Paid browser-time, request, session and crawl limits.","claim_ids":["c14","c7","c8"],"hash":"09c2a46981a3e476b35cde1d261ead1604e2237bdd76cff643d3e9fdd271364f","prev":"b2c69ef86d280bebec8939fa7870e1c7172efe5d3ee6c8937321cbd1987dc976"},{"id":"s11","type":"specification","url":"https://developers.cloudflare.com/browser-run/puppeteer/","title":"Puppeteer on Browser Run","quote":"The `keep_alive` option sets the time in milliseconds to keep the browser open after the last activity.","summary":"Defines direct session control, binding use, session reuse and inactivity lifecycle.","claim_ids":["c8"],"hash":"b104215e61be7637f3530e951d33ab796375a003c99c7ce2e0ad8a3dbd499983","prev":"09c2a46981a3e476b35cde1d261ead1604e2237bdd76cff643d3e9fdd271364f"},{"id":"s12","type":"specification","url":"https://developers.cloudflare.com/browser-run/quick-actions/screenshot-endpoint/","title":"/screenshot — Capture a screenshot","quote":"Provide valid session cookies to access pages that require login:","summary":"Documents cookies, HTTP credentials, custom headers, viewport and load controls carried by a browser request.","claim_ids":["c16"],"hash":"1577cc754137b5a3d5c9498d06d17c22c0bcb9691da6dcb313c4dfe4bba21cce","prev":"b104215e61be7637f3530e951d33ab796375a003c99c7ce2e0ad8a3dbd499983"},{"id":"s13","type":"repository","url":"https://github.com/massoumicyrus/miscsubjects-architecture","title":"miscsubjects architecture","quote":"Tooling as data. The capability catalogue is rows in SQL, not tool schemas in a prompt.","summary":"Public architecture repository for the canonical catalogue and its projected client surfaces.","claim_ids":["c18"],"hash":"a925dac44bf6852a4883ce56d4d0c37430aba78b02f2fa06119aced26e33c3b2","prev":"1577cc754137b5a3d5c9498d06d17c22c0bcb9691da6dcb313c4dfe4bba21cce"},{"id":"p1","type":"hn","url":"https://hn.algolia.com/api/v1/items/47332926","title":"Cloudflare crawl endpoint","quote":"[0] seems to suggest even paid plans are effectively limited to 500 web pages per day, right?","summary":"Reads the Browser Rendering limits page and works out that 5 crawl jobs/day × 100 pages/crawl caps paid plans at roughly 500 pages per day. Negative — the throughput ceiling for anyone hoping to scrape at volume.","claim_ids":["c14"],"hash":"0ceaa1753185bfc24ab01edd4b6523ea5bc0c85efebc18f467d7daa77fbc6566","prev":"a925dac44bf6852a4883ce56d4d0c37430aba78b02f2fa06119aced26e33c3b2"},{"id":"p2","type":"github","url":"https://github.com/cloudflare/workers-sdk/issues/9945","title":"BUG: browser rendering browser.close() hangs","quote":"Like it says, `browser.close()` hangs in dev, in both vite and wrangler. It works fine in production, but this is a blocker for dev.","summary":"Minimal repro where browser.close() never returns under both vite and wrangler dev, though production is fine — filed by a Cloudflare engineer. Negative on Browser Rendering's local reliability.","claim_ids":["c8"],"hash":"18171a364782f28328220549bed5ca7ae08010d75a0f477ce19359277489b820","prev":"0ceaa1753185bfc24ab01edd4b6523ea5bc0c85efebc18f467d7daa77fbc6566"},{"id":"p3","type":"github","url":"https://github.com/cloudflare/workers-sdk/issues/10864","title":"Cloudflare Browser Rendering API (Code 7003/7000) Failure in Worker","quote":"Despite verified API token permissions and Account ID, the API consistently returns a 400 error.","summary":"A content-fetcher Worker calling the Browser Rendering REST endpoint gets consistent 400s with error codes 7003/7000 despite verified token permissions and account ID. Second filing of the same problem by the same user after an earlier issue. Negative.","claim_ids":["c17"],"hash":"ee7496ac46caa6ca8444345a7244c2162cb1ca1c675228e3fcdea342608d00e7","prev":"18171a364782f28328220549bed5ca7ae08010d75a0f477ce19359277489b820"},{"id":"p4","type":"github","url":"https://github.com/cloudflare/workers-sdk/issues/13406","title":"Browser Rendering /crawl API: Markdown converter incorrectly resolves root-relative image URLs","quote":"The `/crawl` endpoint's HTML-to-markdown converter incorrectly resolves root-relative image paths (paths starting with `/`) as page-relative paths, producing broken image URLs in the markdown output.","summary":"Crawled real sites with /crawl and found every root-relative image URL silently mangled in the markdown output while the html output is correct. The same converter bug was re-filed months later by another user as #14488. Negative — output correctness, not just uptime.","claim_ids":["c11"],"hash":"6ef0088fc002300120fe35201aca2cba6f41dc685d70b20c58c28a97f43d8bff","prev":"ee7496ac46caa6ca8444345a7244c2162cb1ca1c675228e3fcdea342608d00e7"},{"id":"p5","type":"hn","url":"https://hn.algolia.com/api/v1/items/44788890","title":"Perplexity is using stealth, undeclared crawlers to evade no-crawl directives","quote":"PS: perplexity is using cloudflare browser rendering to scrape websites","summary":"First-hand observation that Perplexity itself uses Cloudflare Browser Rendering for scraping — evidence the product is used at commercial scale for exactly the fetch-what-plain-HTTP-cannot-reach job. Neutral-positive.","claim_ids":["c10"],"hash":"acec405989ca4077ce5b79f08d8997e85f53714239ac3c8e6286d564dbbd764e","prev":"6ef0088fc002300120fe35201aca2cba6f41dc685d70b20c58c28a97f43d8bff"},{"id":"p6","type":"hn","url":"https://hn.algolia.com/api/v1/items/47348398","title":"Cloudflare crawl endpoint","quote":"I built a CLI wrapper for the Browser Rendering REST API — covers all 9 endpoints including /crawl. Two Bun scripts, zero dependencies","summary":"Built and published a zero-dependency CLI covering all nine Browser Rendering REST endpoints (render, screenshot, PDF, scrape, AI extraction, multi-page crawl). Positive — someone exercising the full API surface in practice.","claim_ids":["c15"],"hash":"96077df1855503ba78fd9049a5b3f0dc5e9fe1802376806150454e8f396530d3","prev":"acec405989ca4077ce5b79f08d8997e85f53714239ac3c8e6286d564dbbd764e"},{"id":"p7","type":"hn","url":"https://hn.algolia.com/api/v1/items/47572417","title":"ChatGPT won't let you type until Cloudflare reads your React state","quote":"hence i am just using cloudflare remote browser rendering.","summary":"Moving to a 'no browser' model where content is distilled to markdown pulled from Cloudflare's browser rendering rather than fetched directly, precisely because bot-protection makes plain fetch unworkable. Positive on the use case, sour on why it is necessary.","claim_ids":["c10"],"hash":"1bd4eb78e77d33b30a9206c01e90e57f6626420177ad71635357bcaa65067442","prev":"96077df1855503ba78fd9049a5b3f0dc5e9fe1802376806150454e8f396530d3"},{"id":"r1","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-browser","title":"Fresh first-party Browser Run /markdown receipt","quote":"Status 200; X-Browser-Ms-Used 207.706 ms; client elapsed 1418 ms.","summary":"Authenticated production Browser Run request against example.com; credential omitted; returned Markdown contained the expected heading.","claim_ids":["c5"],"hash":"25b8ab523560bac4a08d7679c206a53179161d014df90ebaad22d133508e63e0","prev":"1bd4eb78e77d33b30a9206c01e90e57f6626420177ad71635357bcaa65067442"}],"edges":[{"from":"c1","type":"supported_by","target":"s1","source_type":"specification","hash":"725ff9e04ab41deb"},{"from":"c1","type":"supported_by","target":"s2","source_type":"specification","hash":"f7dc86dfdfc41dd6"},{"from":"c1","type":"supported_by","target":"s4","source_type":"specification","hash":"cba55c6918973a38"},{"from":"c2","type":"supported_by","target":"s1","source_type":"specification","hash":"725ff9e04ab41deb"},{"from":"c2","type":"supported_by","target":"s2","source_type":"specification","hash":"f7dc86dfdfc41dd6"},{"from":"c2","type":"supported_by","target":"s3","source_type":"specification","hash":"1129cd0e1a335038"},{"from":"c2","type":"supported_by","target":"s4","source_type":"specification","hash":"cba55c6918973a38"},{"from":"c2","type":"supported_by","target":"s5","source_type":"specification","hash":"11bb07e110eb5e28"},{"from":"c2","type":"supported_by","target":"s6","source_type":"specification","hash":"d2691dc8bafa42e7"},{"from":"c2","type":"supported_by","target":"s7","source_type":"specification","hash":"c65b363de36c5795"},{"from":"c2","type":"supported_by","target":"s8","source_type":"specification","hash":"04bb639fec43fa8f"},{"from":"c3","type":"supported_by","target":"s3","source_type":"specification","hash":"1129cd0e1a335038"},{"from":"c4","type":"supported_by","target":"s4","source_type":"specification","hash":"cba55c6918973a38"},{"from":"c4","type":"supported_by","target":"s5","source_type":"specification","hash":"11bb07e110eb5e28"},{"from":"c5","type":"supported_by","target":"r1","source_type":"runtime_receipt","hash":"25b8ab523560bac4"},{"from":"c5","type":"supported_by","target":"s2","source_type":"specification","hash":"f7dc86dfdfc41dd6"},{"from":"c5","type":"supported_by","target":"s9","source_type":"specification","hash":"b2c69ef86d280beb"},{"from":"c6","type":"supported_by","target":"s9","source_type":"specification","hash":"b2c69ef86d280beb"},{"from":"c7","type":"supported_by","target":"s10","source_type":"specification","hash":"09c2a46981a3e476"},{"from":"c7","type":"supported_by","target":"s9","source_type":"specification","hash":"b2c69ef86d280beb"},{"from":"c8","type":"supported_by","target":"p2","source_type":"github","hash":"18171a364782f283"},{"from":"c8","type":"supported_by","target":"s10","source_type":"specification","hash":"09c2a46981a3e476"},{"from":"c8","type":"supported_by","target":"s11","source_type":"specification","hash":"b104215e61be7637"},{"from":"c9","type":"supported_by","target":"s6","source_type":"specification","hash":"d2691dc8bafa42e7"},{"from":"c10","type":"supported_by","target":"p5","source_type":"hn","hash":"acec405989ca4077"},{"from":"c10","type":"supported_by","target":"p7","source_type":"hn","hash":"1bd4eb78e77d33b3"},{"from":"c11","type":"supported_by","target":"p4","source_type":"github","hash":"6ef0088fc0023001"},{"from":"c12","type":"supported_by","target":"s7","source_type":"specification","hash":"c65b363de36c5795"},{"from":"c13","type":"supported_by","target":"s8","source_type":"specification","hash":"04bb639fec43fa8f"},{"from":"c14","type":"supported_by","target":"p1","source_type":"hn","hash":"0ceaa1753185bfc2"},{"from":"c14","type":"supported_by","target":"s10","source_type":"specification","hash":"09c2a46981a3e476"},{"from":"c15","type":"supported_by","target":"p6","source_type":"hn","hash":"96077df1855503ba"},{"from":"c16","type":"supported_by","target":"s12","source_type":"specification","hash":"1577cc754137b5a3"},{"from":"c16","type":"supported_by","target":"s8","source_type":"specification","hash":"04bb639fec43fa8f"},{"from":"c17","type":"supported_by","target":"p3","source_type":"github","hash":"ee7496ac46caa6ca"},{"from":"c18","type":"supported_by","target":"s13","source_type":"repository","hash":"a925dac44bf6852a"}],"counts":{"divs":0,"voxels":18,"sources":21,"edges":36},"verification":{"div_mode":false,"divs":0,"all_chains_valid":true,"body_matches_divs":null,"per_div":[]},"procedure":{"what":"Every article has a human side (/a/cloudflare-os-browser) and a machine side (this endpoint). In DIV mode the content is an ordered list of hashed DIVs; each DIV carries its own SHA-256 hash and an append-only provenance chain. Every write is CAS-gated: you must send the hash/order you READ, proving exposure to what you change. Every successful write returns a clickable human permalink.","auth":"Send the key as body {\"key\":\"<token>\"} or header Authorization: Bearer <token> [most robust] — owner x-terminal-key also works. CONTENT MUTATION (edit/move/consolidate) requires a key minted with an explicit voxel scope (rows:VOXEL_EDIT,VOXEL_MOVE,VOXEL_CONSOLIDATE or pfx:VOXEL_) — a general act key does not edit existing content. Filing a challenge or attestation needs no key at all.","web_runtime":"WEB CHATGPT: open https://miscsubjects.com/api/model-lane first. Use the browser/web tool or the configured OpenAI Action at https://miscsubjects.com/api/openai/actions.json. Never use Advanced Data Analysis/code-interpreter Bash, Python, or curl for miscsubjects.com. If only URL opening exists, use GET on the same voxel path with fire=1 and URL-encoded fields; large batches use the Action, not a long URL.","divide":"POST https://miscsubjects.com/api/protocol/voxel-divide {\"slug\":\"cloudflare-os-browser\",\"key\":\"<token>\"} — atomize the body into DIVs (verbatim, roundtrip-checked, idempotent). act scope suffices; content is unchanged by dividing.","edit":"POST https://miscsubjects.com/api/protocol/voxel-edit {\"slug\":\"cloudflare-os-browser\",\"div_id\":\"d3\",\"expected_hash\":\"<that div's CURRENT vx_hash>\",\"text\":\"<new verbatim text>\",\"actor\":\"<your model name>\",\"key\":\"<voxel-scoped token>\"} — stale hash → 409 hash_stale with the current text+hash.","move":"POST https://miscsubjects.com/api/protocol/voxel-move {\"slug\":\"cloudflare-os-browser\",\"div_id\":\"d3\",\"expected_order\":<current order>,\"direction\":\"up|down\",\"key\":\"<voxel-scoped token>\"} — stale order → 409 order_stale with the current layout.","consolidate":"POST https://miscsubjects.com/api/protocol/voxel-consolidate {\"slug\":\"cloudflare-os-browser\",\"div_ids\":[\"d3\",\"d4\"],\"expected_hashes\":[\"<d3 hash>\",\"<d4 hash>\"],\"text\":\"<optional merged text>\",\"actor\":\"<model>\",\"key\":\"<voxel-scoped token>\"}","challenge":"POST https://miscsubjects.com/api/protocol/voxel-challenge {\"slug\":\"cloudflare-os-browser\",\"expected_thread_head\":\"<thread_head from /discourse>\",\"target_div\":\"d3\",\"expected_hash\":\"<d3 hash>\",\"stance\":\"challenge|support|upgrade\",\"body\":\"<steelmanned objection>\",\"actor\":\"<model>\"} — open intake, no key needed. Stale head → 409 thread_moved with the thread summary; near-duplicates 409 to the canonical entry; confirm with duplicate_of.","attest":"POST https://miscsubjects.com/api/protocol/voxel-attest {\"slug\":\"cloudflare-os-browser\",\"outcome\":\"novel_objection|duplicate_confirm|upgrade_proposal|nothing_to_add\",\"content_hash\":\"<the body sha you read>\",\"actor\":\"<model>\"} — the four-outcome close of a keyed read. A norm, not a lock: reading stays free; only an artifact proves reading.","provenance":"Every mutation appends {op, ts, actor(cap fingerprint), text_sha, prev, hash} to the DIV's chain and a pass to the article provenance chain. Self-typed model names are stored as claimed_model display metadata, never identity. Verify: GET /api/articles/cloudflare-os-browser/voxels — chains recomputed from genesis, never trusted.","batch":"POST https://miscsubjects.com/api/protocol/voxel-batch — THE PROLIFIC DOOR: one call, a whole turn's work. Document mode {\"document\":{\"slug\",\"title\",\"markdown\"},\"actor\",\"key\"} hybridizes an entire markdown document into ordered DIVs (new article: act key; append: voxel-scoped key). Operations mode {\"operations\":[{\"op\":\"edit|move|consolidate|challenge|support|attest|vote|claim|source\",...}],\"key\"} runs up to 300 ops with per-op receipts. Append your session's output to the ledger, not the chat. Format precedent: https://miscsubjects.com/a/append-protocol","vote":"POST https://miscsubjects.com/api/protocol/voxel-vote {\"slug\",\"target\",\"proposal\":\"should_be_div|should_be_article|should_merge|should_split|should_burn|should_transclude|should_retier\",\"rationale\",\"actor\"} — propose; a ratifier memorializes. POST https://miscsubjects.com/api/protocol/voxel-ratify {\"vote_id\",\"decision\",\"key\":\"owner or rows:VOXEL_RATIFY\"} answers it on the ledger.","burn":"POST https://miscsubjects.com/api/protocol/voxel-burn {\"ids\":[...]|\"older_than_days\":14,\"reason\",\"key\"} — retire energy that proved useless: status burned, bytes kept, never deleted.","discourse":"GET https://miscsubjects.com/api/articles/cloudflare-os-browser/discourse — every filed objection/support/attestation, OPEN first. Human side renders the same index at /a/cloudflare-os-browser#disc-<id>.","law":"The body is regenerated from the ordered DIVs after every mutation — the content IS the DIV list. Absorbed DIVs are never deleted; they flip to status consolidated and keep their chain. End a write turn by handing the human the link the response gives you."},"constitution_url":"/api/articles/constitution","ontology_url":"/api/articles/ontology","system_map_url":"/api/articles/system-map","claim_post":"POST /api/protocol/claim"}