Skip to main content

SynapseCTRL

PyPI License Python Windows Ko-fi

Programmatic control for Razer Synapse 4 software profiles on Windows.

SynapseCTRL discovers connected devices, lists their software profiles, reports the active profile, and switches profiles through Synapse itself — without UI automation or fake clicks.

The source project is developed, dependency-managed, and built with uv. It is intentionally uv-first while still publishing as a normal Python package and command-line tool.

Important: SynapseCTRL requires its Synapse inspector hook before device/profile control will work. Start with the Getting Started guide.

Install

SynapseCTRL is published on PyPI. Installing it exposes the SynapseCTRL CLI as a terminal command, so normal usage does not require cloning the repository or running the project through Python manually.

For the CLI, an isolated uv tool install is recommended:

uv tool install synapsectrl
SynapseCTRL hook install

Standard pip installation also works:

python -m pip install synapsectrl
SynapseCTRL hook install

After either install, commands are available directly from the terminal:

SynapseCTRL --version
SynapseCTRL devices

Windows will request administrator elevation for the hook installer. Fully exit and reopen Razer Synapse afterward.

Python projects can add the SDK with:

uv add synapsectrl

What it can do

SynapseCTRL devices
SynapseCTRL profiles "Naga"
SynapseCTRL resolve device "Naga"
SynapseCTRL resolve profile "Naga" "Siege"
SynapseCTRL switch "Naga" "Siege"

The resolver commands accept either names or stable IDs and return the resolved object, making name ↔ ID lookup explicit for scripts and integrations.

For other programs, every one-shot command also supports machine-readable JSON:

SynapseCTRL devices --json
SynapseCTRL resolve profile "Naga" "Siege" --json

Python applications can use SynapseClient directly instead of spawning the CLI.

For high-frequency local integrations, SynapseCTRL also includes a persistent NDJSON stdio bridge:

SynapseCTRL bridge --stdio

The bridge keeps one Synapse connection/state watcher alive and can emit profile/device/Synapse availability events. It is intended for applications that own the bridge as a child process, such as Stream Deck plugins.

Optional HTTP / REST API

A conventional REST API is available as an optional dependency, so bridge-only users do not need to install a web stack.

Install it with:

uv tool install "SynapseCTRL[http]"

or:

python -m pip install "SynapseCTRL[http]"

Then run:

SynapseCTRL serve

The default API listens only on:

http://127.0.0.1:8765

It uses Starlette + Uvicorn and reuses the same persistent SynapseService core as bridge mode. See the HTTP / REST API guide for endpoints and security guidance.

Documentation

  • Getting Started — install the package and required hook, verify SynapseCTRL works, and make your first switch
  • Documentation home — find setup, CLI, SDK, bridge, HTTP, architecture, troubleshooting, and developer references
  • CLI & JSON — terminal use and one-shot scripting
  • Persistent Bridge — long-lived stdio protocol and events
  • HTTP / REST API — optional Starlette/Uvicorn server and endpoints
  • Python SDK — use SynapseCTRL directly from Python
  • API reference — models, errors, selectors, and exact behavior
  • Troubleshooting — doctor, update repair, and diagnostics

Quick Python example

from synapsectrl import SynapseClient

with SynapseClient() as synapse:
    device = synapse.resolve_device("Naga")
    profile = synapse.resolve_profile(device.id, "Siege")
    print(device.name, device.id)
    print(profile.name, profile.id)

    synapse.switch_profile(device.id, profile.id)

Use stable device IDs and profile GUIDs for unattended automation. Human-readable names are convenience selectors.

Attribution and license

SynapseCTRL is licensed under the Apache License 2.0 and ships with a NOTICE file so downstream distributions preserve project attribution as required by the license.

When integrating SynapseCTRL, it is also appreciated if your source or documentation mentions that Razer Synapse device/profile discovery and control is handled by SynapseCTRL. See Attribution.

Project status

SynapseCTRL targets Razer Synapse 4 on Windows and relies on private Synapse/Electron interfaces discovered at runtime. Synapse updates can change those interfaces, so compatibility is capability-checked rather than tied to one fixed Synapse version.

This is an independent community project and is not affiliated with or endorsed by Razer.

Release files for SynapseCTRL 0.3.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 SynapseCTRL 0.3.1
File Size Uploaded
synapsectrl-0.3.1.tar.gz 112.3 kB Details

Built distribution (wheel)

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

Total release size: 168.3 kB

Release files / synapsectrl-0.3.1.tar.gz

Download URL synapsectrl-0.3.1.tar.gz
Size 112.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7d4da09266d4104e5e99f6a1d6d09cb4857c0e039111a76acb4fde9f7c5e98d2
BLAKE2b-256 checksum
How to use checksums
3203121792e0047630b6e64fc59147139fe125aee0f42fb65b6e29bb63972b03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

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 Sep 11, 2026.

Transparency log

Release files / synapsectrl-0.3.1-py3-none-any.whl

Download URL synapsectrl-0.3.1-py3-none-any.whl
Size 56.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be8beed982d1d60f2784b48a396253af51c9ea9ed1b82c55e3a5f58a5573bcf9
BLAKE2b-256 checksum
How to use checksums
fb0cbe0bd6093eaba95f0d581479b3712bf1b8ccedb53cc1a7eb7294fcaec17b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

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 Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.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