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

⚡ No tree walk 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.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.1.0
File Size Uploaded
dirscape-0.1.0.tar.gz 510.5 kB Details

Built distribution (wheel)

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

Total release size: 845.8 kB

Release files / dirscape-0.1.0.tar.gz

Download URL dirscape-0.1.0.tar.gz
Size 510.5 kB
Tags Source
SHA-256 checksum
How to use checksums
58f5ae7a6aa16d93d0d25dea086c72f6748fcbdcafe669f47b0f31178153dcc0
BLAKE2b-256 checksum
How to use checksums
7583838d37250fdacfaf68cb43627a8f65450a8137397d1893c658601adc73a5
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 23, 2026.

Transparency log

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

Download URL dirscape-0.1.0-py3-none-any.whl
Size 335.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
103f982261af758357802c3401f879e2e2da13cbb0ab8056cfd70e8256956c6f
BLAKE2b-256 checksum
How to use checksums
c9e9a56eac28dcdd0e4bec8d69a442ebe75fbe9121b3d9871ba1c7817730d1e9
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 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

2 release files

0.1.1

2 release files

This release

0.1.0 This release

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