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 rpc → from 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).

Metadata

Release files for scrypted-sdk 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scrypted-sdk 0.1.1
File Size Uploaded Provenance Actions
scrypted_sdk-0.1.1.tar.gz 49.1 kB With provenance Details for scrypted_sdk-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for scrypted-sdk 0.1.1
File Interpreter ABI Platform Actions
scrypted_sdk-0.1.1-py3-none-any.whl Python 3 none any Details for scrypted_sdk-0.1.1-py3-none-any.whl

Total release size: 99.5 kB

Release files / scrypted_sdk-0.1.1.tar.gz

Download URL scrypted_sdk-0.1.1.tar.gz
Size 49.1 kB
Tags Source
SHA-256 checksum
How to use checksums
e115a863900d0acd55eb8febc381d50a9c7ec7adbf9db93fb0edbd63b68392f0
BLAKE2b-256 checksum
How to use checksums
945622a507640f8fcfc0406e85354a43bf26c21132f969d44435f92a10d6bc65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Release files / scrypted_sdk-0.1.1-py3-none-any.whl

Download URL scrypted_sdk-0.1.1-py3-none-any.whl
Size 50.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dcb85569fd8933e6da55c26542dbf4bc80a57287529e270eb2c6dd7689e31a20
BLAKE2b-256 checksum
How to use checksums
5240974beaebb0fdbb15a5f7bb2ba3370af8053d64c833cc130075e23d74ffb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Security for scrypted-sdk 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for scrypted_sdk-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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