With normal split tunneling you can normally do something like this anyways, but it can be finicky to configure, and easy for something like DNS, etc to access the internet without your VPN in the middle. And sometimes if your VPN fails to connect, you could be connecting without your VPN.
By using docker with gluetun + qbit (I believe docker images for this setup exist already) you can force it to use only your VPN, and if the connection fails then your bittorrent client can't connect. With gluetun all your bittorrent traffic would flow through your VPN, but there's a way it can be configured to allow only your webui port to be accessed locally on your network
Honestly, what i do is install docker using brew and spin up a saltbox instance on localhost. You can always bring it down by telling docker to stop but it's way better and it's containerized.
I've been using it since Tomato died. Transmission chokes on torrents with lots of trackers that fail to connect. If you go in and remove them, its performance and responsive improves greatly.
Outside of those small things, it's solid and a universal app.
I regularly manually add this list of trackers to torrents, I'd say most of my torrents have 120+ trackers in their list. Never noticed any issues.
The only issue I ever noticed is that sometimes the layout of the filter bar breaks, but you can fix it by just disabling/renabling the filters, so just a cosmetic issue that can be fixed with a double click.
The download page for qbittorrent says that MacOS is "barely supported". Is docker reasonably accessible for Mac? You could use that to get qbittorrent.
Just try it. If "barely suppoted" gets you the current stability, them kudos to the devs. I haven't had a single crash in recent years.
Sure Transmission has a nicer minimalistic UI, but it lacks a lot of qbittorrent's features.
Nah, Transmission just gets kinda buggy when its loaded with hundreds of torrents. Its fine for light use (or perhaps if you have a ton of RAM). But it definitely gets laggy and occasionally unresponsive after running a few days.