Skip to main content

Agent-first browser automation toolkit — Playwright alternative built in Rust

Project description

playwLeft

Agent-first browser automation toolkit built in Rust.

playwLeft is a high-performance browser automation library designed primarily for AI agents and programmatic use cases. Built in Rust with Python bindings, it provides a powerful interface for browser testing, web scraping, and data extraction — without the overhead of visual tooling.

Key Features

  • Agent-First Design — Optimized for machine-readable output, structured data extraction, and headless operation. No screenshots, video recording, or GUI inspectors.
  • Rust Core — High performance, low memory footprint, strong type safety.
  • Python Library — Distributed as a Python package with both sync and async APIs.
  • CDP Protocol — Direct Chrome DevTools Protocol communication for precise browser control.
  • Structured Extraction — Built-in methods to extract text, links, tables, and structured data from pages.

Architecture

┌─────────────────────────────────────────────────┐
│                 Python API Layer                 │
│            (sync_api / async_api)                │
├─────────────────────────────────────────────────┤
│              PyO3 Bindings Layer                 │
├─────────────────────────────────────────────────┤
│                 Rust Core                        │
│  ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│  │ Browser  │ │  Page    │ │    Network       │ │
│  │ Manager  │ │  & Frame │ │  Interception    │ │
│  └────┬─────┘ └────┬─────┘ └───────┬──────────┘ │
│       │             │               │            │
│  ┌────┴─────────────┴───────────────┴──────────┐ │
│  │           CDP Protocol Layer                │ │
│  │    (WebSocket Transport + Sessions)         │ │
│  └─────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────┤
│              Chromium Browser Process             │
└─────────────────────────────────────────────────┘

Quick Start (Python)

import asyncio
from playwleft import PlaywLeft

async def main():
    async with PlaywLeft() as pw:
        browser = await pw.chromium.launch()
        page = await browser.new_page()

        await page.goto("https://example.com")

        # Get page content
        title = await page.title()
        content = await page.content()

        # Agent-optimized: extract structured data
        text = await page.extract_text()
        links = await page.extract_links()

        # Network interception
        await page.route("**/*.css", lambda route: route.abort())

        # JavaScript evaluation
        result = await page.evaluate("document.title")

        await browser.close()

asyncio.run(main())

Installation

pip install playwleft

Class Hierarchy

Class Description
PlaywLeft Entry point — provides browser type access
BrowserType Launches or connects to browser instances
Browser A browser instance with context management
BrowserContext Isolated browser session (like incognito)
Page A single browser tab with full interaction API
Frame An iframe within a page
Element A DOM element with query and action methods
Request Outgoing network request
Response Incoming network response
Route Network request interception handler

Design Principles

  1. Responses over Rendering — Every API returns structured, machine-parseable data.
  2. Headless by Default — No headed mode; all interactions are programmatic.
  3. Minimal Surface — Only the APIs agents actually need, no legacy compat.
  4. Performance First — Rust core ensures minimal latency and memory usage.
  5. Deterministic — Consistent behavior across runs, no flaky waits.

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

playwleft-0.1.0-cp313-cp313-win_amd64.whl (16.4 MB view details)

Uploaded CPython 3.13Windows x86-64

playwleft-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

playwleft-0.1.0-cp313-cp313-manylinux_2_28_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

playwleft-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (16.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

playwleft-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl (16.5 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

playwleft-0.1.0-cp312-cp312-win_amd64.whl (16.4 MB view details)

Uploaded CPython 3.12Windows x86-64

playwleft-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

playwleft-0.1.0-cp312-cp312-manylinux_2_28_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

playwleft-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (16.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

playwleft-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl (16.5 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

playwleft-0.1.0-cp311-cp311-win_amd64.whl (16.4 MB view details)

Uploaded CPython 3.11Windows x86-64

playwleft-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

playwleft-0.1.0-cp311-cp311-manylinux_2_28_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

playwleft-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (16.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

playwleft-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (16.5 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

playwleft-0.1.0-cp310-cp310-win_amd64.whl (16.4 MB view details)

Uploaded CPython 3.10Windows x86-64

playwleft-0.1.0-cp310-cp310-manylinux_2_28_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

playwleft-0.1.0-cp310-cp310-manylinux_2_28_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

playwleft-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (16.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

playwleft-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl (16.5 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file playwleft-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: playwleft-0.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 16.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playwleft-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fc1cf44e5756c955e337efb188b3805863bf67d7266f170610f34f617f385db7
MD5 8f3c45acec4b1371264f61fbf7de6a26
BLAKE2b-256 053fc9bd2e64d6813c656208d3011c2c4aa57f9b1a40a6df2d2336d2b8d7baab

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 52d2210b12bcbb78bdf616cd450beba0c6798be1bfcc0f9956f37be38f5cf3dc
MD5 608821dc230943cc3fc94cf0bccc5736
BLAKE2b-256 a7c6f9f2fe53052028a742c518006a206b9ce28bd36eebbc79dbc3ae00f9be89

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d84fce8b43bdb105b9b04277090657b4b53a580325f52d31ef2ca55ca5ffc839
MD5 a385c20b70eb272296318f38dbf4291c
BLAKE2b-256 46f6dc6ba59f91f441e45acfc4bdf90a42021adc7ab129b45a20f2b2bb251dd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1fc2b287889e290f824b4e835584d11208c7fe3ba3eeccae8471e02a0249edb
MD5 3840102bbfb411f708b8e778ab9ee629
BLAKE2b-256 374820328bdb9abef3c8daafaeb71f45d9ed6f474af9605b06038a48f58df389

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f32de64349b621e6a0f2b31d9e1bef699f9663f552fde77a524f999c6c621b01
MD5 7cc4ebbfabbf95bdec71be3e7bc4c8fa
BLAKE2b-256 07a0a91d81cf1ded1d46617385efd533998bcb0881a6e9b8d1564a73f01cb66e

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: playwleft-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 16.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playwleft-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 80bc53ddabb0192c2471e5f23e962f71b279729e398e8941b18230d5981636f4
MD5 02389156e0240dc0055bae0c7196f4c6
BLAKE2b-256 12955b9ec6620a15e3285a0a6aca52b3051c59bdbc2bbff09fc181eb733ed206

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ffdf075ead63c568d439709af9177baaaddbf76a74daf5a2cce1cf706b0be55
MD5 8f3ab50925023e4b41c9781fcc098865
BLAKE2b-256 0c4c660e36ccf3363069c431a1fc6063467237b619df35ec59e5e41329b381ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c2d9cdb2915cd266677d74136dc69db77e5ecc01ffb72071c8a5610b29e40e90
MD5 7b54e2746ed4d7629c4dc6c10ba5ca2a
BLAKE2b-256 be1d073c876acba1c921431f6265f1bbd3496dbf3126e1194704ccce3e559043

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ea3136d9adc93182f1a54e01bf5433d9efbc0d68b1ca96c7904ddc1073cd186
MD5 6083280716bdf13173fefa8296ad3047
BLAKE2b-256 46103377a24efd07c565be95b3a67a23b1d86fd1ddfd48abf9c7bfd369fc06d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a5f517aed6b1ed064e1f943d28a27ddd98585ade9f6519c668c425c6404ad9c8
MD5 be2f8e370403c598a2a39f7d4117b06f
BLAKE2b-256 b6de0be1664abb427b2eef51caaec22376020b117621b1917565f1552d2fd506

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: playwleft-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 16.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playwleft-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 64d434a0a94b9bb80a618fcbf232761221848b4a75c0ce159b97dd7d933114a8
MD5 7e1202ebab0c9775a75e3bbf695f4ff9
BLAKE2b-256 783bfabcfa84701795d2f7e98f22300e89876b40701915f5ae3ca6695416d613

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0d3606709c3b2e3e0b85f7cea0a2fbc1455e8e47448d0ccf425ed4d99df80acd
MD5 ee6d336d699ab535678446e542c6bd26
BLAKE2b-256 3586d816df7bfd5e3654ef0d09424bd20b9eb7623c6123b2d7d4c334305f6c05

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 867f168f0ba6c98755c7cea818668e658807591c7c56c34fab91762528e51046
MD5 9c1fcfda724cda7829ed82cb3be5bb69
BLAKE2b-256 52afce9d4d76c1a931f61e6ff9076618ff85a33bdefc8b9102191d5cf80a12c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 645c297737a94226f991927d55012417803d0890b6fb9978e61974be98011583
MD5 4bf46a185bb84bf1a9fb60384cb301a9
BLAKE2b-256 c1be33acd8d0daf25393c70ec072cc6db693209b966a49c5b1de4d576c4cc016

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 355cbaa790609d66af55f682bf5e672340bcf2f39ccc0e041ea7b46f02f02c24
MD5 4ac9ad67f10d476c30edc824e12fd0b2
BLAKE2b-256 d3efb8d3f843c4a822cededb83694ff79d8a50f0b2490e18d1dc8f849115f9ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: playwleft-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 16.4 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for playwleft-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 878d98c3084dbdec435f694f2f220b1c104cac4f9f9ed87c854974dde783197a
MD5 fb3e1aa08cecbc22ef19d93c866d551d
BLAKE2b-256 11645d93f8667bad67fb6dc1868b78a28fa9a981a87dce975c48c231ef00b053

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1705e3e5c7c25380ca811da651fc9e97b2c3da5addf67ca4161eb1bece177081
MD5 6719d49a62d5883ca99ed36ba52891d2
BLAKE2b-256 bd0d9f84252f5dd3bb9c04efddd2d2fe7840f31e406b28a6e5728ce874ef967c

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cbec4a965511dd9c701c8660ee69a3ac7934dc4f5f23ddf694012d2985c6ce1b
MD5 c0518f1efd98b0a918b67363c064dc7b
BLAKE2b-256 24c24f317e14e13a9a1b0a4026027f2b9cd6a83ef07448b916d22f3488721018

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9e2ea9708ed0b5b8c5c2d2e7a34837df42830ab04da09f45edf7a94ec3bfea9
MD5 61745eb160bd248fa00778a88e617086
BLAKE2b-256 72b6d6f9f5c01d012468faad99940fb410ace6df15fc43828390e4df8b242db8

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file playwleft-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for playwleft-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0083acb3e6b03dd6e1c7a6276e56ec6d77b2340bf3973b003790bbac54428549
MD5 ee4fea8c7ffceeaed407fc75d533d618
BLAKE2b-256 db31bf6432f63fea8a313d81083cdf183b567bf8c42f6398715fc3d821010f58

See more details on using hashes here.

Provenance

The following attestation bundles were made for playwleft-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: publish.yml on CocoRoF/playwLeft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page