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 lists every storage root on a cluster with its usage, quota and file count, opens /software 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 a row, esc goes 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.
❓ ? 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.1.1

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.1.1
File Size Uploaded
dirscape-0.1.1.tar.gz 522.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dirscape 0.1.1
File Interpreter ABI Platform
dirscape-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 862.5 kB

Release files / dirscape-0.1.1.tar.gz

Download URL dirscape-0.1.1.tar.gz
Size 522.1 kB
Tags Source
SHA-256 checksum
How to use checksums
921550e53ed828b667979805fd6297f6ba51bf7972818b0fc8b615146255df56
BLAKE2b-256 checksum
How to use checksums
7e13f5df8e06f283fd89d5aab4e0a102e3b273b58586e1bce5485a99f2bfbb23
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 24, 2026.

Transparency log

Release files / dirscape-0.1.1-py3-none-any.whl

Download URL dirscape-0.1.1-py3-none-any.whl
Size 340.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c88f1fc3eff7b1900b5b350a1aaa9f9dabb7c0a5aec5088df7f5561fe63b93ed
BLAKE2b-256 checksum
How to use checksums
f932e2154e00c3a18c2d9bcd1903b0ee1666fe8cb038d575b63778d98dd32ca2
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 24, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.1 This release

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