Skip to main content

playdirector 0.4 — maintained Remote Play engine

Local PS4/PS5 control with a headless-first API, based on pyremoteplay.

from playdirector import ConsoleController, pair_console

credentials = await pair_console("192.168.1.50", "123456789", "12345678")
# Persist credentials using your application configuration storage.
controller = ConsoleController(credentials)
try:
    await controller.wake()
    # Wait until controller.status() reports status-code 200 before input.
    await controller.button("CROSS")
    await controller.go_home()
finally:
    await controller.close()

Install playdirector, not the separate pyremoteplay distribution. Importing playdirector uses the included pyremoteplay protocol engine. No GUI or media receiver is needed. Pairing accepts a decimal or Base64 PSN account ID and console PIN; cloud NPSSO authentication is owned by your application.

0.4 changes the public API and adopts the upstream GPL-3.0-only license. See PUBLISHING.md for migration, provenance, tests and publication.

The upstream documentation below describes the engine API and optional GUI.


pyremoteplay

PyPi Build Status Documentation Status

Python PlayStation Remote Play API

Documentation

About

This project provides an API to programmatically connect to and control Remote Play hosts (PS4 and PS5). The low-level networking internals is written using the Asyncio framework. In addition it includes an optional GUI, allowing to view the live stream and control the host through keyboard/mouse input. This library is based on the C/C++ project Chiaki.

Features

  • API to programatically control host and expose live audio/video stream
  • Registering client for Remote Play on the host
  • Interface for controlling the host, which emulates a DualShock controller
  • Ability to power off/on the host if standby is enabled
  • GUI which displays the live stream and supports keyboard/mouse input
  • Support for controllers

Requirements

  • Python 3.11+

  • OS: Linux, Windows 10

  • Note: Untested on MacOS

Network Requirements

This project will only work with local devices; devices on the same local network. You may be able to connect with devices on different subnets, but this is not guaranteed.

GUI Dependencies

The GUI requires dependencies that may be complex to install. Below is a list of such dependencies.

  • pyav (May require FFMPEG to be installed)
  • PySide6

uvloop is supported for the GUI and will be used if installed.

Installation

It is recommended to install in a virtual environment.

  python3 -m venv .
  source bin/activate

From pip

To install core package run:

pip install playdirector

To install with optional GUI run:

pip install playdirector[gui]

From Source

To Install from source, clone this repo and navigate to the top level directory.

  pip install -r requirements.txt
  python setup.py install

To Install GUI dependencies run:

  pip install -r requirements-gui.txt

Setup

There are some steps that must be completed to use this library from a user standpoint.

  • Registering a PSN Account
  • Linking PSN Account and client to the Remote Play Host

Configuration files are saved in the .pyremoteplay folder in the users home directory. Both the CLI and GUI utilize the same files.

CLI Setup

Registering and linking can be completed through the cli by following the prompts after using the below command:

pyremoteplay {host IP Address} --register

Replace {host IP Address} with the IP Address of the Remote Play host.

GUI Setup

Registering and linking can be performed in the options screen.

Usage

To run the terminal only CLI use the following command: pyremoteplay {host IP Address}

To run the GUI use the following command: pyremoteplay-gui

Notes

  • Video decoding is performed by the CPU by default. Hardware Decoding can be enabled in the options screen in the GUI.
  • You may have to install ffmpeg with hardware decoding enabled and then install pyav with the following command to allow for hardware decoding: pip install av --no-binary av

Baseline measurements

The CLI instance runs at 5-10% CPU usage with around 50Mb memory usage according to top on this author's machine: ODroid N2.

Known Issues/To Do

  • Text sending functions
  • Add support for HDR
  • Audio stutters

Metadata

Release files for playdirector 0.4.0

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

Source distribution (sdist)

Source distribution for playdirector 0.4.0
File Size Uploaded Provenance
playdirector-0.4.0.tar.gz 176.2 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for playdirector 0.4.0
File Interpreter ABI Platform
playdirector-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 336.0 kB

Release files / playdirector-0.4.0.tar.gz

Download URL playdirector-0.4.0.tar.gz
Size 176.2 kB
Tags Source
SHA-256 checksum
How to use checksums
61cd1b2a3052a509bdda938ac34a47cfe7b8e3aa86542771010d5dc4ce0692d2
BLAKE2b-256 checksum
How to use checksums
a18f757a3dd66538936a2295d0ead2e7c84379fb959d02af534628045164b3ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 24, 2026.

Transparency log

Release files / playdirector-0.4.0-py3-none-any.whl

Download URL playdirector-0.4.0-py3-none-any.whl
Size 159.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a0e5b21f2cd4ab3e39b2908d5db596fa8af7ff23aea44246c3100e8e17e4fe2
BLAKE2b-256 checksum
How to use checksums
739bc3f02c00f4ae2a0630ab36628c18179204419e6cb530176c989f1aeb4f96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 24, 2026.

Transparency log

Security for playdirector 0.4.0

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 playdirector-0.4.0.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 Oct 24, 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