JellyProxy
A proxy that sits between jellyfin-mpv-shim and mpv to filter and control IPC commands.
What it does
Jellyfin-mpv-shim sometimes overrides your carefully configured mpv settings. JellyProxy prevents this by intercepting commands between JMS and mpv, letting you block unwanted changes while keeping the features you want.
Installation
pip install jellyproxy
Quick Start
-
Generate a config file:
jellyproxy --generate-config > ~/.config/jellyproxy/conf.json
-
Edit the config to block commands you don't want. The example config blocks
set_propertycommands that override your settings. -
Update your JMS config to point to the proxy socket:
{ "mpv_ext": true, "mpv_ext_ipc": "/tmp/mpvSockets/spoof", "mpv_ext_start": false, "mpv_ext_path": null, }
Note,
mpv_ext_ipcshould match yourspoof_socketpath in~/.config/jellyproxy/conf.json, if you've changed it. -
Run it:
jellyproxy
That's it. JellyProxy will start mpv and JMS automatically, and your mpv settings won't get clobbered anymore.
Configuration
The config file uses JSON with two main filtering lists:
blacklist- Commands to blockwhitelist- Commands to explicitly allow (overrides blacklist)
Each rule matches commands using regex patterns:
{
"blacklist": [
{
"#": "Block JMS from changing OSC setting",
"command": ["set_property", "osc", ".*"]
}
],
"whitelist": [
{
"#": "But allow subtitle color changes",
"command": ["set_property", "sub-color", ".*"]
}
]
}
Command Line Options
jellyproxy --help # Show all options
jellyproxy --config myconfig.json # Use custom config
jellyproxy --debug # Enable debug logging
jellyproxy --validate # Check config for errors
Config Reloading
JellyProxy watches your config file and restarts automatically when you make changes. No need to manually restart.
Logging
All IPC traffic gets logged so you can see what commands JMS is sending. Use --debug for extra detail, or edit the logging section in your config.
Socket Paths
By default:
- JMS connects to
/tmp/mpvSockets/spoof(the proxy) - Proxy connects to
/tmp/mpvSockets/real(actual mpv)
Change these in the config if needed.
Troubleshooting
JMS can't connect: Check that the socket paths match between your JMS config and JellyProxy config.
Commands not being filtered: Run with --debug to see the exact commands being sent and whether they match your rules.
Config errors: Use jellyproxy --validate to check for problems.
Multiple JMS instances: The old config reloading had a bug that left processes running. This is fixed now.
Requirements
- Python 3.8+
python-mpv-jsonipc(pip install python-mpv-jsonipc)- A working jellyfin-mpv-shim setup
License
GPL-3.0
Metadata
Release files for jellyproxy 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| jellyproxy-0.1.1.tar.gz | 18.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jellyproxy-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.7 kB
Release files / jellyproxy-0.1.1.tar.gz
| Download URL | jellyproxy-0.1.1.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b73305c5693043beeca726f017420b3d7725d451854e28e6886fbc374378d52
|
|
BLAKE2b-256 checksum How to use checksums |
d0b1d6eebe7c61ddb6fbc61fd585f71ee801bee3a84238ba1c6e34a898d0be10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Release files / jellyproxy-0.1.1-py3-none-any.whl
| Download URL | jellyproxy-0.1.1-py3-none-any.whl |
|---|---|
| Size | 15.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fe6ba3c2f902b3c4ddfec793959237668ff9c7f07ab2aae14ab67508bbc698d3
|
|
BLAKE2b-256 checksum How to use checksums |
2e3f58ed3285c731d0b45f69021bd3b37ea4d76ea2ef70527da7dd26414d82c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Security for jellyproxy 0.1.1
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.