Skip to main content

🗺️ 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

CI PyPI PyPI downloads per month Python 3.6+

ds shows what it is reading while it starts, lists every storage root on a cluster with its usage, quota and file count, opens /software and counts its folders as you watch, goes four levels deep and climbs back out, then explains one scratch directory with ds why.

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)

Source distribution for dirscape 0.2.0
File Size Uploaded
dirscape-0.2.0.tar.gz 626.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dirscape 0.2.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page