diff --git a/docs/tasks/remove-users-orm.qmd b/docs/tasks/remove-users-orm.qmd
index 6440f0476..c91d0eb16 100644
--- a/docs/tasks/remove-users-orm.qmd
+++ b/docs/tasks/remove-users-orm.qmd
@@ -15,19 +15,55 @@ a while. Note that this does not delete the user's storage.
 The script `scripts/delete-unused-users.py` will delete anyone who hasn't
 registered any activity in a given period of time, double checking to make sure
 they aren't active right now. This will require users to log in again the next
-time they use the hub, but that is probably fine.
+time they use the hub.
 
 This should be done before the start of each semester, particularly on hubs
 with a lot of users.
 
-## Run the script
+## Running the script
 
-You can run the script on your own device. The script depends on the
-`jhub_client` python library. This can be installed with
-`pip install jhub_client`.
+```
+./delete-unused-users.py --help
+usage: delete-unused-users.py [-h] [-c CREDENTIALS] [-H HUB_URL] [--dry_run]
+                              [--inactive_since INACTIVE_SINCE] [-v] [-d]
 
-1. You will need to acquire a JupyterHub API token with administrative
-   rights. A hub admin can go to `{hub_url}/hub/token` to create a new
-   one.
-2. Set the environment variable `JUPYTERHUB_API_TOKEN` to the token.
-3. Run `python scripts/delete-unused-users.py --hub_url {hub_url}`
+options:
+  -h, --help            show this help message and exit
+  -c CREDENTIALS, --credentials CREDENTIALS
+                        Path to a json file containing hub url and api keys.
+                        Format is: {"hub1_url": "hub1_key", "hub2_url":, "hub2_key"}
+  -H HUB_URL, --hub_url HUB_URL
+                        Fully qualified URL to the JupyterHub. You must also
+                        set the JUPYTERHUB_API_TOKEN environment variable with
+                        the API key.
+  --dry_run             Dry run without deleting users.
+  --inactive_since INACTIVE_SINCE
+                        Period of inactivity after which users are considered
+                        for deletion (literal string constructor values for
+                        timedelta objects).
+  -v, --verbose         Set info log level.
+  -d, --debug           Set debug log level.
+```
+
+The 'best' way to run this script is to log in to each hub and in the Admin
+page, generate a token.  The URL will be `{hub_url}/hub/token`. You can store
+the tokens in a json-like configuration file on your device with the following
+format:
+
+```
+{
+  "https://a11y.datahub.berkeley.edu": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
+  "https://astro.datahub.berkeley.edu": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
+  "https://biology.datahub.berkeley.edu": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
+  "https://cee.datahub.berkeley.edu": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
+  "https://data8.datahub.berkeley.edu": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
+  "https://data100.datahub.berkeley.edu": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
+  "https://data101.datahub.berkeley.edu": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
+}
+```
+
+Then you can execute the script as such:
+
+```
+./delete-unused-users.py -c ~/.datahub/hub-api-tokens.json -v --inactive_since=days=30
+```