Skip to main content

Python SDK for Reactor - Real-time AI video streaming

Project description

Reactor Python SDK

PyPI version PyPI downloads build license

Python SDK for Reactor — real-time AI video streaming platform.

For full documentation, see the Python SDK Guide.

Installation

pip install reactor-sdk

Quick Start

import asyncio
from reactor_sdk import Reactor, ReactorStatus, video

async def main():
    reactor = Reactor(
        model_name="my-model",
        api_key="REACTOR_API_KEY",
        receive=[video("main_video")],
    )

    @reactor.on_frame
    def handle_frame(frame):
        print(f"Received frame: {frame.shape}")

    @reactor.on_status(ReactorStatus.READY)
    def handle_ready(status):
        print("Connected and ready!")

    await reactor.connect()
    await reactor.send_command("setParameter", {"value": 0.5})

    try:
        while reactor.get_status() == ReactorStatus.READY:
            await asyncio.sleep(0.1)
    finally:
        await reactor.disconnect()

if __name__ == "__main__":
    asyncio.run(main())

Features

  • WebRTC video streaming via aiortc
  • Multi-track support — named video and audio tracks with video() / audio() helpers
  • Event-driven API matching the JavaScript SDK
  • Frame callbacks for single-frame access (numpy arrays)
  • Video input support for sending video to models
  • Local development mode for testing without auth
  • Full type hints for IDE support
  • Async context managerasync with Reactor(...) as r:

API Overview

Constructor

from reactor_sdk import Reactor, video, audio

reactor = Reactor(
    model_name="my-model",
    api_key="REACTOR_API_KEY",
    receive=[video("main_video")],
    send=[video("webcam")],
)

For local development, pass local=True instead of api_key.

Key Methods

  • await reactor.connect() — Connect to the model (auto-fetches JWT from API key)
  • await reactor.disconnect(recoverable=False) — Disconnect
  • await reactor.reconnect() — Reconnect to an existing session
  • await reactor.send_command(command, data) — Send a command
  • await reactor.publish_track(name, track) — Publish a named media track
  • await reactor.unpublish_track(name) — Unpublish a named track
  • reactor.get_status() — Current ReactorStatus
  • reactor.get_state()ReactorState(status, last_error)
  • reactor.get_session_id() — Session ID
  • reactor.get_remote_tracks() — Dict of received tracks by name
  • reactor.set_frame_callback(callback) — Set frame callback

Decorators

@reactor.on_frame
def handle_frame(frame): ...

@reactor.on_track("main_video")
def handle_video(track): ...

@reactor.on_message
def handle_message(message): ...

@reactor.on_status(ReactorStatus.READY)
def handle_ready(status): ...

@reactor.on_error
def handle_error(error): ...

See the full documentation for the complete API reference, event list, and usage patterns.

Examples

See the examples/ directory for complete examples:

  • pygame_app/ — Pygame application with dynamic UI controls
  • rtmp_app/ — Stream Reactor video to RTMP servers (Twitch, YouTube, etc.)

License

MIT License — Copyright (c) 2026 Reactor Technologies, Inc.

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

reactor_sdk-0.8.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

reactor_sdk-0.8.0-py3-none-any.whl (55.4 kB view details)

Uploaded Python 3

File details

Details for the file reactor_sdk-0.8.0.tar.gz.

File metadata

  • Download URL: reactor_sdk-0.8.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for reactor_sdk-0.8.0.tar.gz
Algorithm Hash digest
SHA256 e804ff9fe7f3777c578e090a7aa967d64b0431e55e19c888f27a2a7cdf32a3c5
MD5 683bc230e252aa1a41876f1ce25ed0ee
BLAKE2b-256 e06d67b37a54c71099e0b26595dac360def82093605fbf3bb9209d8dae2ff0f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for reactor_sdk-0.8.0.tar.gz:

Publisher: publish.yml on reactor-team/py-sdk

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

File details

Details for the file reactor_sdk-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: reactor_sdk-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 55.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for reactor_sdk-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be8e973a6d122f96ed4c884361e71f2c709836d637ff285a298b770e919cc31d
MD5 d10b19e100931b5539a0096d09709a15
BLAKE2b-256 625d717e8da1f118e31b26136271eddf337e8e8eebe874b9185a99ff5597ce20

See more details on using hashes here.

Provenance

The following attestation bundles were made for reactor_sdk-0.8.0-py3-none-any.whl:

Publisher: publish.yml on reactor-team/py-sdk

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