Skip to main content

python-client

Connect to a Scrypted server from Python and use the same SDK objects (systemManager, deviceManager, mediaManager) that Python plugins see.

The modules in this directory are symlinks into ../../server/python and ../../sdk/types so the client and the plugin runtime share one implementation.

Usage

Installed from PyPI, everything lives under the scrypted_sdk package:

pip install scrypted-sdk
from scrypted_sdk import connect_scrypted_client

From a checkout of this repository, the modules are importable directly:

pip install -r requirements.txt
import asyncio

from scrypted_client import connect_scrypted_client


async def main(loop):
    transport, sdk = await connect_scrypted_client(
        loop, "https://localhost:10443", "username", "password"
    )
    for id in sdk.systemManager.getSystemState():
        print(sdk.systemManager.getDeviceById(id).name)
    await transport.close()


loop = asyncio.new_event_loop()
loop.run_until_complete(main(loop))

test.py is a runnable version of the above; point it at a server with the SCRYPTED_BASE_URL, SCRYPTED_USERNAME, and SCRYPTED_PASSWORD environment variables.

examples/light.py is the Python equivalent of packages/client/examples/light.ts — it turns a named light on and back off:

SCRYPTED_USERNAME=admin SCRYPTED_PASSWORD=swordfish python examples/light.py "Office Dimmer"

It works both with pip install scrypted-sdk and directly from a repo checkout with only requirements.txt installed.

By default the login request and the engine.io connection skip TLS certificate verification, since Scrypted servers use self-signed certificates out of the box. To control TLS (or connection pooling), pass your own login_session and a pre-built EioRpcTransport(loop, http_session=...).

Session ownership: a login_session you pass is only borrowed for the login request and is never closed. An http_session passed to EioRpcTransport becomes owned by the transport — transport.close() closes it along with the engine.io connection and background tasks — so don't share that session with anything else.

Packaging

The scrypted-sdk PyPI package is built from this directory. Because the modules here are flat top-level modules (that is how the plugin runtime loads them), publishing them as-is would install modules named rpc, plugin_remote, etc. into consumers' environments. Instead, a build hook (hatch_build.py) generates a scrypted_sdk package at build time: it copies each module (reading through the symlinks) and mechanically rewrites the flat imports to package-qualified ones (import rpcfrom scrypted_sdk import rpc). Nothing is committed and no runtime code is modified beyond that rewrite.

To build locally:

pip install build && python -m build   # or: uv build

To release: bump version in pyproject.toml and push a python-sdk-v* tag. The Python SDK workflow builds, smoke-tests, and publishes to PyPI via trusted publishing — the PyPI project just needs koush/scrypted + python-sdk.yml registered as a trusted publisher (no API tokens).

Download files

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

Source Distribution

scrypted_sdk-0.1.1.tar.gz (49.1 kB view details)

Uploaded Source

Built Distribution

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

scrypted_sdk-0.1.1-py3-none-any.whl (50.3 kB view details)

Uploaded Python 3

File details

Details for the file scrypted_sdk-0.1.1.tar.gz.

File metadata

  • Download URL: scrypted_sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 49.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for scrypted_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e115a863900d0acd55eb8febc381d50a9c7ec7adbf9db93fb0edbd63b68392f0
MD5 2a6f78544496359d93df4097d32ad8e2
BLAKE2b-256 945622a507640f8fcfc0406e85354a43bf26c21132f969d44435f92a10d6bc65

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrypted_sdk-0.1.1.tar.gz:

Publisher: python-sdk.yml on koush/scrypted

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

File details

Details for the file scrypted_sdk-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: scrypted_sdk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 50.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for scrypted_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dcb85569fd8933e6da55c26542dbf4bc80a57287529e270eb2c6dd7689e31a20
MD5 87edcb4bba1e20182ba55375b2344ae3
BLAKE2b-256 5240974beaebb0fdbb15a5f7bb2ba3370af8053d64c833cc130075e23d74ffb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for scrypted_sdk-0.1.1-py3-none-any.whl:

Publisher: python-sdk.yml on koush/scrypted

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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

0.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page