diff --git a/packages/kapowarr/default.nix b/packages/kapowarr/default.nix
index 0e142c2a..ac60a161 100644
--- a/packages/kapowarr/default.nix
+++ b/packages/kapowarr/default.nix
@@ -6,9 +6,8 @@
   pyPkgs = python3Packages.override {
     overrides = pyFinal: pyPrev: {
       bencoding = pyFinal.callPackage ./bencoding {};
-      tenacity = pyFinal.callPackage ./tenacity {};
       typing-extensions = pyFinal.callPackage ./typing-extensions {};
     };
   };
 in
-  pyPkgs.callPackage ./main {}
+  pyPkgs.callPackage ./kapowarr {}
diff --git a/packages/kapowarr/main/default.nix b/packages/kapowarr/kapowarr/default.nix
similarity index 94%
rename from packages/kapowarr/main/default.nix
rename to packages/kapowarr/kapowarr/default.nix
index 9923cbc7..342e6f96 100644
--- a/packages/kapowarr/main/default.nix
+++ b/packages/kapowarr/kapowarr/default.nix
@@ -10,21 +10,20 @@
   aiohttp,
   beautifulsoup4,
   bencoding, # from overrides
+  cryptography,
   flask,
   flask-socketio,
-  pycryptodome,
   requests,
   setuptools,
-  simplejson,
-  tenacity, # from overrides
   typing-extensions, # from overrides
   waitress,
+  websocket-client,
   ...
 }: let
   inherit (lib) getExe;
 
   pname = "kapowarr";
-  version = "1.1.1";
+  version = "1.1.1+pkG4o8O";
 in
   buildPythonApplication {
     inherit pname version;
@@ -33,12 +32,10 @@ in
     src = fetchFromGitHub {
       owner = "Casvt";
       repo = "Kapowarr";
-      rev = "V${version}";
-      hash = "sha256-EeDzgi37f0cA86lQ1Z6hzLgpE3ORfz0YPoMWp5R4uPs=";
+      rev = "a97f907555bf02d5e737812bfa5c189d8cc639ba";
+      hash = "sha256-pkG4o8OfLu02M50JSnbrBDNiwnbYEJNutoutwBcLFwU=";
     };
 
-    patches = [./raise-errors.patch];
-
     postPatch = ''
       # FIXME: THIS DOESN'T WORK
       substituteInPlace ./backend/implementations/converters.py \
@@ -82,12 +79,11 @@ in
       beautifulsoup4
       flask
       waitress
-      pycryptodome
-      tenacity
+      cryptography
       bencoding
-      simplejson
       aiohttp
       flask-socketio
+      websocket-client
     ];
 
     preBuild = ''
@@ -116,6 +112,7 @@ in
           "backend.base",
           "backend.features",
           "backend.implementations",
+          "backend.implementations.direct_clients",
           "backend.implementations.torrent_clients",
           "backend.internals",
           "backend.lib",
diff --git a/packages/kapowarr/main/raise-errors.patch b/packages/kapowarr/main/raise-errors.patch
deleted file mode 100644
index 4c5e76e9..00000000
--- a/packages/kapowarr/main/raise-errors.patch
+++ /dev/null
@@ -1,26 +0,0 @@
- Kapowarr.py | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/Kapowarr.py b/Kapowarr.py
-index 0e9da56..306976c 100644
---- a/Kapowarr.py
-+++ b/Kapowarr.py
-@@ -185,8 +185,13 @@ if __name__ == "__main__":
-                 db_folder=db_folder
-             )
-
--        except ValueError:
--            parser.error("The value for -d/--DatabaseFolder is not a folder")
-+        except ValueError as e:
-+            if e.args and e.args[0] == 'Database location is not a folder':
-+                parser.error(
-+                    "The value for -d/--DatabaseFolder is not a folder"
-+                )
-+            else:
-+                raise e
-
-     else:
-         rc = Kapowarr()
---
-2.48.1
-
diff --git a/packages/kapowarr/tenacity/default.nix b/packages/kapowarr/tenacity/default.nix
deleted file mode 100644
index a3f0a2d3..00000000
--- a/packages/kapowarr/tenacity/default.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  # nix build inputs
-  lib,
-  buildPythonPackage,
-  fetchPypi,
-  # deps
-  pbr,
-  pytest-asyncio,
-  pytestCheckHook,
-  pythonOlder,
-  setuptools-scm,
-  tornado,
-  typeguard,
-  ...
-}: let
-  pname = "tenacity";
-  version = "8.2.3";
-in
-  buildPythonPackage {
-    inherit pname version;
-    format = "pyproject";
-
-    disabled = pythonOlder "3.6";
-
-    src = fetchPypi {
-      inherit pname version;
-      hash = "sha256-U5jvDXjmP0AAfB+0wL/5bhkROU0vqNGU93YZwF/2zIo=";
-    };
-
-    nativeBuildInputs = [
-      pbr
-      setuptools-scm
-    ];
-
-    nativeCheckInputs = [
-      pytest-asyncio
-      pytestCheckHook
-      tornado
-      typeguard
-    ];
-
-    pythonImportsCheck = [pname];
-
-    meta = {
-      homepage = "https://github.com/jd/tenacity";
-      description = "Retrying library for Python";
-      license = lib.licenses.asl20;
-    };
-  }