Skip to main content

🌈 signalrgb-python

CI License PyPI version Python

A Python client library and CLI for controlling SignalRGB Pro

Features • Installation • Usage • API Reference • Development • Contributing • License

🌟 Features

  • List available lighting effects, presets, and layouts
  • Apply effects, presets, and layouts to your devices
  • Control canvas brightness and enabled state
  • Synchronous client for scripts and tools
  • Asynchronous client (httpx) for asyncio apps and Home Assistant integrations
  • Rich-powered CLI with intuitive subcommands (effect, preset, layout, canvas)
  • Effect caching and robust exception types for connection, API, and not-found errors

💎 Installation

# with uv (recommended)
uv add signalrgb

# or with pip
pip install signalrgb

Prerequisites

This library uses the SignalRGB REST API, which is only available in SignalRGB Pro.

🎯 Usage

Command-line interface

The CLI is a Rich + Typer app with category subcommands for effects, presets, layouts, and canvas control.

# Effects
signalrgb effect list
signalrgb effect "Psychedelic Dream"
signalrgb effect apply "Rave Visualizer"
signalrgb effect random
signalrgb effect search "ocean"

# Presets
signalrgb preset list
signalrgb preset apply "My Fancy Preset"

# Layouts
signalrgb layout list
signalrgb layout set "My Gaming Layout"

# Canvas
signalrgb canvas                     # show state + brightness
signalrgb canvas brightness 75       # set brightness
signalrgb canvas brightness          # read brightness
signalrgb canvas enable
signalrgb canvas disable
signalrgb canvas toggle

Point at a remote SignalRGB instance:

signalrgb --host hyperia.home --port 16038 effect list

Full help:

signalrgb --help

Synchronous client

from signalrgb import SignalRGBClient

client = SignalRGBClient(host="hyperia.home", port=16038)

# List effects
for effect in client.get_effects():
    print(effect.attributes.name)

# Apply an effect and a preset
client.apply_effect_by_name("Rain")
current = client.get_current_effect()
client.apply_effect_preset(current.id, "Cool Preset")

# Canvas control
client.brightness = 50
client.enabled = True

Asynchronous client

For async apps and Home Assistant integrations, use AsyncSignalRGBClient as an async context manager:

import asyncio
from signalrgb import AsyncSignalRGBClient

async def main() -> None:
    async with AsyncSignalRGBClient(host="hyperia.home", port=16038) as client:
        for effect in await client.get_effects():
            print(effect.attributes.name)

        await client.apply_effect_by_name("Rain")
        await client.set_brightness(75)
        await client.set_enabled(True)

        current = await client.get_current_effect()
        print(f"Current effect: {current.attributes.name}")

asyncio.run(main())

See the Async Client reference for the full async guide.

Error handling

from signalrgb import SignalRGBClient, ConnectionError, APIError, NotFoundError

client = SignalRGBClient()

try:
    client.apply_effect_by_name("Non-existent Effect")
except ConnectionError as e:
    print(f"Connection failed: {e}")
except NotFoundError as e:
    print(f"Effect not found: {e}")
except APIError as e:
    print(f"API error: {e}")

The same pattern works with the async client.

🔮 API Reference

Full API docs are published at https://hyperb1iss.github.io/signalrgb-python/.

🧪 Development

The project uses the Astral stack: uv for packaging, ruff for lint + format, ty for type checking, and pytest for tests. All common tasks are wired up in the justfile.

# Clone and set up
git clone https://github.com/hyperb1iss/signalrgb-python.git
cd signalrgb-python

# Install everything (runtime + dev + docs)
just install

# Run the full check suite (lint, format, typecheck, tests)
just verify

# Or the fast loop (auto-fix then test)
just check

# Other common tasks
just test              # pytest with coverage
just lint-fix          # ruff check --fix
just fmt               # ruff format
just typecheck         # ty check
just docs-serve        # mkdocs on :8000
just run effect list   # run the CLI
just --list            # see everything

See the Development Guide for the full workflow.

🦋 Contributing

Contributions are welcome. Fork, branch, and open a PR:

  1. Fork the repository
  2. Create a branch: git checkout -b my-feature
  3. just verify should pass before you push
  4. Open a pull request

Please include tests for new functionality and follow the existing code style (ruff + ty will tell you if anything's off).

📄 License

Apache License 2.0 — see LICENSE.


💜 Acknowledgements

This project is not officially associated with SignalRGB. It is an independent community client — please do not report client issues to the SignalRGB team.


Created by Stefanie Jane

If you find this project useful, consider buying me a Monster Ultra Violet.

Metadata

Release files for signalrgb 1.0.2

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

Source distribution (sdist)

Source distribution for signalrgb 1.0.2
File Size Uploaded
signalrgb-1.0.2.tar.gz 39.2 kB Details

Built distribution (wheel)

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

Total release size: 64.7 kB

Release files / signalrgb-1.0.2.tar.gz

Download URL signalrgb-1.0.2.tar.gz
Size 39.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c6400978c89a189e161258ff4c194a586ed78e6dcbc46768b25f846202345a3d
BLAKE2b-256 checksum
How to use checksums
a7950bbbf7e851823d1381bf5738aea78b3c79544557624bdb4a687fd436002b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Apr 5, 2026.

Transparency log

Release files / signalrgb-1.0.2-py3-none-any.whl

Download URL signalrgb-1.0.2-py3-none-any.whl
Size 25.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb749aa7771f27e7eb1734aaf09558657ae882bcba362fa8c1705ba1ddb4abf1
BLAKE2b-256 checksum
How to use checksums
e174fa818cbf37466a654204185b7b1d289793762e4e26aec4288da8db54c134
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Apr 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9.8

2 release files

0.9.7

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.0

2 release files

0.8.4

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.5.0

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release 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