pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
Translation pending
See your disk usage as an interactive sunburst chart, compare scans over time and free up space safely. Free and open source.
DataSwift · ShellGitHub @brokoskokoliOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Free, open-source disk space analyzer for macOS with an interactive sunburst chart, snapshot compare and safe Trash-based cleanup.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Free, open-source disk space analyzer for macOS with an interactive sunburst chart.
See at a glance what fills your Mac, compare scans over time, and free up space safely.
DiskRings scans a volume or folder and draws its disk usage as a sunburst: every ring is one folder level, every segment is as wide as its share of the storage. Click into any folder to zoom, go back with a swipe, and clean up right from the chart. It is a native SwiftUI app for Apple Silicon and Intel Macs, and a macOS alternative to tools like WinDirStat, TreeSize, SpaceSniffer or Scanner on Windows.Read the full README ↗DiskRings scans a volume or folder and draws its disk usage as a sunburst: every ring is one folder level, every segment is as wide as its share of the storage. Click into any folder to zoom, go back with a swipe, and clean up right from the chart. It is a native SwiftUI app for Apple Silicon and Intel Macs, and a macOS alternative to tools like WinDirStat, TreeSize, SpaceSniffer or Scanner on Windows.
Languages: English, German, French, Spanish, Italian, Portuguese (Brazil), Dutch, Polish, Russian, Japanese, Chinese (Simplified), Korean, Turkish and Swedish. DiskRings follows your system language automatically; you can also pick a language in Settings or per app in System Settings → General → Language & Region → Applications. See Translations to improve or add one.
getattrlistbulk. DiskRings counts the space actually allocated on disk: hard links only once, sparse and compressed files with their real size, the APFS Data volume firmlinks without double counting, and iCloud files without downloading them.diskrings-cli for scans, top folders, snapshots and diffs (handy for scripts).Every ring is a folder level. Hover for details, click to zoom in, and the list on the right follows along.
Pick an earlier snapshot and DiskRings shows only what changed. In the growth view, segment size is the growth since the snapshot, and the list ranks the largest changes.
The delta coloring keeps the normal layout and paints growth orange and shrinkage blue (distinguishable with red-green color blindness; with “Differentiate without color” shrunk segments are also hatched and marked ±). New items get a dot, removed items appear as dashed outlines.
The same actions in the chart, the list and the menu bar. Protected items explain why they can't be trashed.
Pick a volume, choose a folder, or drop one onto the window.
There are good disk usage tools for the Mac already. Each has its own focus:
| DiskRings | DaisyDisk | GrandPerspective | OmniDiskSweeper | |
|---|---|---|---|---|
| Visualization | Sunburst + list | Sunburst | Treemap | Sorted list |
| Compare scans over time | Yes (snapshots) | No | No | No |
| Shows space outside folders (system data, purgeable, free) | Yes | Yes (as hidden space) | No | No |
| Delete | Trash only, with undo | Yes | Yes | Yes |
| Price | Free, open source (MIT) | Paid | Free, open source | Free |
What makes DiskRings different:
du -sk needs 65 s for the same folder). Comparing two snapshots with 2 million entries each takes about 0.3 s. Details are in dev/PERFORMANCE.md.Requirements: macOS 14 (Sonoma) or later, Apple Silicon or Intel.
Planned.
Without Full Disk Access, DiskRings still works, but macOS hides folders like ~/Library/Mail, ~/Library/Messages, Safari data and other apps' containers. They show up as unreadable, and their space is counted as "Unreadable System Data". To grant access:
DiskRings only reads file sizes and metadata. It never opens or uploads your files.
DiskRings is a Swift package without an Xcode project. The Command Line Tools with Swift 6 are enough (xcode-select --install); Xcode is optional.
git clone https://github.com/brokoskokoli/diskrings.git
cd diskrings
scripts/check.sh # build and run all tests
DISKRINGS_ADHOC=1 scripts/make-app.sh # build/DiskRings.app (release, universal, ad-hoc signed)
open build/DiskRings.app
Command-line tool:
swift run -c release diskrings-cli scan ~ --top 10 --depth 2
swift run -c release diskrings-cli scan / --json
swift run -c release diskrings-cli volumes
UI previews and Mac App Store screenshots (demo data only, nothing is scanned):
swift run DiskRings --render-snapshots build/snapshots # PNGs of many views, light and dark
swift run DiskRings --store-screenshots build/store --language en --appearance dark # 2880×1800
Releases are built, signed with the Developer ID, notarized by Apple and published by the GitHub Actions workflow release.yml when a v* tag is pushed. The version lives in VERSION and uses semantic versioning.
# 1. Bump the version on main (CI must be green)
echo 0.2.0 > VERSION
git commit -am "Version 0.2.0"
git push origin main
# 2. Tag it; the tag must match VERSION
git tag -a v0.2.0 -m "DiskRings 0.2.0"
git push origin v0.2.0
release → Approve and deploy (the release environment requires a maintainer's approval).appcast.xml and SHA256SUMS appears under Releases, with release notes generated from the commits. Installed copies newer than 0.2.1 find the update through appcast.xml (Sparkle); the ZIP is the signed update archive, the DMG is for first installs. Users of 0.2.1 or older have to download the new version once by hand.Before a release you can do a dry run that builds, signs and notarizes without publishing: gh workflow run release.yml -f dry_run=true. Only repository admins can create v* tags. A local release without CI is possible with scripts/release.sh --publish. The Mac App Store build is uploaded separately: run Actions → App Store Upload on the tag with dry_run unchecked, approve it, then select the build in App Store Connect and submit it for review, or check submit_for_review to let the workflow submit it via the App Store Connect API using the release notes in dev/release-notes/ (details in dev/APPSTORE.md, German). Automatic updates need a one-time EdDSA key: scripts/setup-release-secrets.sh --sparkle stores the private key as the secret SPARKLE_ED_PRIVATE_KEY and writes the public key to Resources/sparkle-public-ed-key.txt (commit it); without both, a real release stops in the preflight check. One-time setup, secrets, troubleshooting and security trade-offs: dev/RELEASING.md (German).
The Finder usually shows the logical file size (the number of bytes in the file). DiskRings shows the space allocated on disk, like du. They differ for compressed and sparse files, many small files (block size), and hard links, which DiskRings counts only once. APFS clones share blocks, but macOS has no public API to detect that, so cloned files can make a folder total look larger than the space it really uses.
When you scan a whole volume, DiskRings splits the space that appears in no folder (used space minus the scan sum):
/private/var/db, APFS metadata and – without Full Disk Access – the folders DiskRings wasn't allowed to read.Local APFS and Time Machine snapshots can't be measured separately without administrator rights; depending on their state they count as Purgeable or Unreadable System Data. Older versions showed all of this as one grey "Unassigned" segment.
DiskRings never deletes permanently. "Move to Trash" uses the system Trash, asks for confirmation with name, size and file count, and can be undone with ⌘Z. The root of a volume, your home folder as a whole, ~/Library as a whole, system locations such as /System and /usr, and the app itself are protected and cannot be trashed. Undo checks that the item in the Trash is still the same one before restoring it.
Yes. Any mounted volume or folder you can read can be scanned. Network volumes are slower because every directory listing goes over the network.
DiskRings contains no telemetry, analytics or crash reporting. Scan results and snapshots stay on your Mac (~/Library/Application Support/DiskRings).
~; other folder and file names are passed on unchanged.appcast.xml of the latest release) when you choose Check for Updates… and, if you allow it, about once a day. No information about you, your Mac or your files is sent, and no system profile. DiskRings asks before checking automatically; turn it off in Settings → General → Automatically check for updates. Updates are only installed if their EdDSA signature matches. Full policy: privacy.html.Issues and pull requests are welcome, especially translations, bug reports with steps to reproduce, and performance measurements on other Macs.
scripts/check.sh before submitting. It must pass without warnings.Sources/DiskRingsCore and is covered by tests in Tests/DiskRingsCoreTests. The SwiftUI app in Sources/DiskRings stays thin.The translations were created with machine assistance and reviewed for Apple's macOS terminology, but not yet by native speakers of every language. Corrections are very welcome.
Sources/DiskRingsCore/Resources/<language>.lproj/: Localizable.strings (UI texts), Localizable.stringsdict (plural forms) and InfoPlist.strings (the privacy texts macOS shows). English (en.lproj) is the source.%@, %1$@, %2$@, …) unchanged; you may reorder positional placeholders.en.lproj to <code>.lproj (e.g. cs.lproj), translate it, provide the plural categories your language needs in the .stringsdict, and add the code and the language's own name to L10n.supportedLanguages and L10n.nativeName(of:) in Sources/DiskRingsCore/Localization/L10n.swift.scripts/check.sh runs tests that catch missing or extra keys, mismatched placeholders and missing plural forms.swift run DiskRings --render-snapshots build/snapshots/fr --language fr.DiskRings is released under the MIT License. Copyright © 2026 Stefan Richter.