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.5.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.5.0-py3-none-any.whl (31.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: reactor_sdk-0.5.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.5.0.tar.gz
Algorithm Hash digest
SHA256 2f0f310291ec44b0f29cfd53ea03b37b18e4612b383002d7a6254182b32ce5ca
MD5 80a48ebc9ae93770e58a79ef0cdff6b1
BLAKE2b-256 1c6b8a18df0981eb60b8afc57ce180c8ba1acc2b2e153fa577353d56f4581204

See more details on using hashes here.

Provenance

The following attestation bundles were made for reactor_sdk-0.5.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.5.0-py3-none-any.whl.

File metadata

  • Download URL: reactor_sdk-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 31.0 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac1a41196367517f83f16bc2deecdff677fb1e06ef4642503c20bf235b070bab
MD5 8ef0e12917dbafed095fc6ef0a1551cf
BLAKE2b-256 cc76aa38db831b073e7175f64d55b0aa658979e30f93cf28aa29a60164d5bd2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for reactor_sdk-0.5.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