Skip to main content

Official Python SDK for Chaser

Project description

chaser-sdk

Official Python SDK for Chaser.

This package is the Python SDK for the core public Chaser surface:

  • sessions
  • workspaces
  • exec
  • command lifecycle
  • files
  • runtime self-tests and preview URLs
  • browser CDP helpers
  • accounts and organizations
  • service accounts and keys
  • billing
  • lifecycle webhooks
  • audit
  • jobs

Installation

pip install chaser-sdk

Optional CDP websocket support:

pip install 'chaser-sdk[cdp]'

Quickstart

from chaser_sdk import ChaserClient

client = ChaserClient(api_key="sk_...", account="personal")

workspace = client.workspaces.create(
    {
        "name": "frontend-app",
        "session_type": "sandbox",
        "image": "ghcr.io/example/dev:latest",
    }
)

session = client.sessions.create(
    {
        "workspace": workspace["name"],
        "session_type": "sandbox",
    }
)

client.sessions.wait_until_ready(session["id"])
result = client.exec.in_session(
    session["id"],
    {
        "command": "node -v && pwd",
        "cwd": "/workspace",
    },
)

print(result.get("output"))

Stateless exec

result = client.exec.run(
    {
        "ephemeral": True,
        "image": "node:20-bookworm",
        "command": "python3 -c 'print(42)'",
    }
)

Files and previews

client.files.upload_text(session["id"], "/workspace/hello.txt", "hello from sdk")
text = client.files.download_text(session["id"], "/workspace/hello.txt")
preview = client.sessions.forward_url(session["id"], 3000)

Runtime self-test

diagnostics = client.sessions.self_test(session["id"])
print(diagnostics["runtime"]["tools"].get("node"))

Network controls

session = client.sessions.create(
    {
        "ephemeral": True,
        "session_type": "sandbox",
        "network": {
            "mode": "proxy",
            "proxy": {
                "url": "socks5h://proxy.example.com:1080",
                "username": "svc-user",
                "password": "svc-pass",
            },
        },
    }
)

Browser CDP helper

browser = client.sessions.create({"session_type": "browser", "ephemeral": True})
ws_url = client.browser.cdp_websocket_url(browser["id"])
print(ws_url)

If you install the optional cdp extra, you can also open a lightweight websocket client:

cdp = client.browser.connect(browser["id"])
print(cdp.send("Browser.getVersion"))
cdp.close()

Organization automation

org_client = client.with_account("Acme Engineering")
service_account = org_client.accounts.service_accounts.create("ci-bot")
key = org_client.accounts.service_accounts.keys.create(
    service_account["id"],
    name="ci-key",
    scopes=["sessions.read", "workspaces.write", "exec.write", "files.read", "webhooks.write"],
)
print(key["key"])

Project details


Download files

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

Source Distribution

chaser_sdk-0.1.8.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

chaser_sdk-0.1.8-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file chaser_sdk-0.1.8.tar.gz.

File metadata

  • Download URL: chaser_sdk-0.1.8.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for chaser_sdk-0.1.8.tar.gz
Algorithm Hash digest
SHA256 89cb2403541e04d7cd56b91e9daf4c7853a6b55373e18590615f056ca5aa3dd2
MD5 ddee5806c79eab0c1b2cc68734f2924f
BLAKE2b-256 067a21290fcde4c051ebd38ee8af6240762abcaa1aa30a4c49fc9eae31bf2bc6

See more details on using hashes here.

File details

Details for the file chaser_sdk-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: chaser_sdk-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for chaser_sdk-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 58bb23d3275bdd6e85452464e8e118d0c5ff9f89a327509d0f38714485bb474c
MD5 b182010e75339a1c01360cccaf07d8c6
BLAKE2b-256 a43ca5f3068c0b1927b1df1b3fd7e528e77c88cd97f4b024b02c3c8d90af50e4

See more details on using hashes here.

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