🗺️ dirscape
Every place you can put data on a cluster, how full it is, and what changed since last time.
GPFS · Lustre · CephFS · XFS · NFS · anything with a mount table
You land on a new cluster. Where does 2 TB go? What gets purged on Friday? du cannot tell
you, because du needs the path you are missing.
✨ Install
pip install dirscape
ds # or: dscape, dirscape
No dependencies and Python 3.6+, so the system Python on a login node is enough.
🧰 Use
ds # the table: arrows move, enter opens, / searches, esc back, q quits
ds why . # this directory: which quota it bills to, free space, file limit
ds new # what changed since the last run
ds recover results.csv # snapshot copies of a deleted file, and how to restore one
ds stranded # space you hold in filesets you can no longer reach
ds elsewhere # allocations with no path on this node
🤖 For agents
| Command | Gives |
|---|---|
ds paths --json |
Every place, with exact bytes |
ds why <path> --json |
Which place a path bills to, even before it exists |
ds mcp |
The same answers, as MCP tools |
ds paths --writable --kind scratch --min-free 2T # filter the places
claude mcp add --scope user dirscape -- ds mcp # register the MCP server once
Piped, ds prints the table and exits; an agent never gets the browser or moves the ds new
baseline. Exit codes: 0 answered, 1 bad usage, 2 no place covers that path, 3 nothing found.
📌 Good to know
| ⚡ Quota sizes | Sizes come from quotas, so it takes seconds. For du, use rdu. |
| 🚀 Big folders | pip install "dirscape[fast]" adds up opened folders faster. |
| 💾 Opened again | A folder shows its last sizes at once, recounted as they age. |
| 🔎 Search | / finds any name below the folder in view as you type. |
| 🎞️ Motion | Spinners turn only while a count moves; --no-motion stills them. |
❓ ? is not zero |
Nothing could measure it, and --json gives the reason. |
| 🆕 First run | Nothing is "new" until a baseline exists: run it twice. |
| 📁 File limits | Small files can hit the file quota first; ds why shows it. |
| 🗂️ Folded rows | A tree that is all yours is one row; --all lists the rest. |
✍️ read |
Writing was not tested; --probe-write tests it for real. |
| 📸 Snapshots | They are not backups, and on scratch there are often none. |
| 🖥️ Per node | Login and compute nodes see different roots. |
| 🐍 Python 3.6 | Installs the wheel; building a checkout needs 3.8+. |
🛠️ For site administrators
dirscape --site-template > /etc/dirscape/site.conf writes a commented config that gives every
user correct labels, purge warnings and quota backends. It grants nothing: access is measured live.
License
MIT
Release files for dirscape 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dirscape-0.2.0.tar.gz | 626.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dirscape-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / dirscape-0.2.0.tar.gz
| Download URL | dirscape-0.2.0.tar.gz |
|---|---|
| Size | 626.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7042096b8a58ca081577cd5147b69cda3e72b3c4b91d4489e6ac6d57403fbaeb
|
|
BLAKE2b-256 checksum How to use checksums |
10e38f7a8a6524d865eb8284e3ca56c0206d0d1f9f001a93b0535822e1f23c6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / dirscape-0.2.0-py3-none-any.whl
| Download URL | dirscape-0.2.0-py3-none-any.whl |
|---|---|
| Size | 406.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
89b6a8dc42d455507ebdb5ed960557e824c1b205a2e2118662de81496d8ef189
|
|
BLAKE2b-256 checksum How to use checksums |
882137622a0240c0afa8381b15e48aaf2040ef0fe192f9723bf9abf9acf3c4b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log