diff --git a/docs/deployment/adapter.md b/docs/deployment/adapter.md
index b3d91c31..6fa118dc 100644
--- a/docs/deployment/adapter.md
+++ b/docs/deployment/adapter.md
@@ -226,14 +226,49 @@ The macOS build and its unit + in-process operation suites are enforced in CI, b
-WinFsp mounts drive letters natively, which is the usual choice:
+The mountpoint is the **first argument** to `clio_cte_fuse`, exactly as on Linux — only the form differs. WinFsp accepts two:
+
+**A drive letter** (the usual choice — WinFsp mounts these natively):
```powershell
$env:CLIO_WITH_RUNTIME = "0"
+
+# Mount at exactly Z:
clio_cte_fuse Z: -f
```
-A host directory also works in place of `Z:`. Pick a drive letter that is actually free — `Get-PSDrive -PSProvider FileSystem` lists the ones in use.
+Pick a letter that is actually free; mounting onto a letter already in use fails. List the ones taken:
+
+```powershell
+Get-PSDrive -PSProvider FileSystem | Select-Object -ExpandProperty Name
+```
+
+To choose the first free letter programmatically instead of hard-coding one — this is what the CI smoke test does:
+
+```powershell
+$used = (Get-PSDrive -PSProvider FileSystem).Name
+$mount = @('X','Y','W','V','U') | Where-Object { $used -notcontains $_ } | Select-Object -First 1
+if (-not $mount) { throw "no free drive letter" }
+$mount = "${mount}:"
+
+$env:CLIO_WITH_RUNTIME = "0"
+clio_cte_fuse $mount -f
+```
+
+**A directory path**, if you would rather have the mount appear inside an existing tree than as a new drive:
+
+```powershell
+$env:CLIO_WITH_RUNTIME = "0"
+clio_cte_fuse C:\iowarp\cte -f
+```
+
+The parent (`C:\iowarp`) must exist. Drive-letter mounting is the form CI exercises end to end, so prefer it if either will do.
+
+Confirm the mount came up before using it — the daemon needs a moment, and CI polls for up to 20 seconds:
+
+```powershell
+Test-Path Z:\
+```
@@ -251,11 +286,15 @@ Set `CLIO_WITH_RUNTIME=0` so the FUSE daemon attaches to the runtime you already
### 3. Use it
-Any application can read and write files on the mount point with standard tools:
+Any application can read and write files on the mount point with standard tools — nothing is IOWarp-specific, which is the whole point of the adapter. Each tab uses the mountpoint from the matching mount step above.
+
+
+
```bash
# Write
echo "Hello, IOWarp!" > /mnt/cte/greeting.txt
+mkdir -p /mnt/cte/data
cp dataset.csv /mnt/cte/data/dataset.csv
# Read
@@ -263,12 +302,69 @@ cat /mnt/cte/greeting.txt
md5sum /mnt/cte/data/dataset.csv
# List
-ls /mnt/cte/
+ls -l /mnt/cte/
# Delete
rm /mnt/cte/greeting.txt
```
+
+
+
+Identical to Linux apart from the mountpoint and the checksum tool — macOS ships `md5`, not `md5sum`. Use `/Volumes/cte-mnt` instead of `~/cte-mnt` if you mounted with the FSKit backend.
+
+```bash
+# Write
+echo "Hello, IOWarp!" > ~/cte-mnt/greeting.txt
+mkdir -p ~/cte-mnt/data
+cp dataset.csv ~/cte-mnt/data/dataset.csv
+
+# Read
+cat ~/cte-mnt/greeting.txt
+md5 ~/cte-mnt/data/dataset.csv
+
+# List
+ls -l ~/cte-mnt/
+
+# Delete
+rm ~/cte-mnt/greeting.txt
+```
+
+
+
+
+Substitute the drive letter or directory you mounted at — `Z:` below matches the mount example above.
+
+```powershell
+# Write
+Set-Content -Path Z:\greeting.txt -Value "Hello, IOWarp!"
+New-Item -ItemType Directory -Path Z:\data -Force | Out-Null
+Copy-Item dataset.csv Z:\data\dataset.csv
+
+# Read
+Get-Content Z:\greeting.txt
+Get-FileHash Z:\data\dataset.csv -Algorithm MD5
+
+# List
+Get-ChildItem Z:\
+
+# Delete
+Remove-Item Z:\greeting.txt
+```
+
+The mount is an ordinary volume, so Explorer, `cmd.exe`, and any application that takes a path work against it too:
+
+```bat
+echo Hello, IOWarp! > Z:\greeting.txt
+type Z:\greeting.txt
+dir Z:\
+```
+
+If you mounted a directory rather than a drive letter, use that path instead — e.g. `C:\iowarp\cte\greeting.txt`.
+
+
+
+
### 4. Unmount