Agentero
에이전트를 연결해 로컬 Vault에 연구 컨텍스트를 보관·Zotero에서 무결점 이동·읽고 이해·재활용
Silt는 macOS용 빠르고 실시간 디스크 공간 탐색기입니다
Silt is a fast, live disk-space explorer for macOS. It scans in seconds, stays current as files change, and helps you clear space without deleting the wrong thing. Free and open source.
생산성Swift · CGitHub @jonnyasmar온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A fast, live disk-space explorer for macOS
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗usesilt.app · Download for Mac
A fast, live disk-space explorer for macOS. It's a drillable file tree in the spirit of WinDirStat: it fills in while it scans and stays current as files change.
scripts/build-app.sh # build/Silt.app
scripts/build-app.sh --install # also copy to /Applications and launch
swift test # engine tests
Requires macOS 15+ and Xcode 26. You can also launch the binary with a folder
to scan it straight away (Silt.app/Contents/MacOS/Silt ~/dev), or drop a
folder on the window or the Dock icon.
For a complete picture, give Silt Full Disk Access (System Settings → Privacy & Security). Without it, Silt skips other apps' containers rather than trigger a privacy prompt for each one, and marks them as locked.
Releases are cut by GitHub Actions (.github/workflows/release.yml), on
GitHub's free hosted runners for public repositories. To release, bump
CFBundleShortVersionString in Resources/Info.plist and push to main. A
push whose version has no published release yet runs the tests, then
scripts/release.sh, which builds a universal (arm64 + x86_64) app signed with
Developer ID and the hardened runtime, inside a signed drag-to-install disk
image, and notarizes and staples both. It then publishes a GitHub release
v<version> with the disk image. A run that fails publishes nothing. Pull
requests run the tests (ci.yml).
The workflow signs and notarizes with secrets kept in a release environment
that only main can deploy to, set once with
scripts/setup-release-secrets.sh path/to/DeveloperID.p12 (the Developer ID
Application identity exported from Keychain Access, plus an Apple ID and an
app-specific password; each is checked before it's uploaded).
To build a release locally instead:
xcrun notarytool store-credentials silt-notary --apple-id <Apple ID email> --team-id Z4PL6853AL
NOTARY_PROFILE=silt-notary scripts/release.sh
That needs a clean working tree. An App Store Connect API key works too
(NOTARY_KEY_P8, NOTARY_KEY_ID, NOTARY_ISSUER_ID), and
SILT_RELEASE_IDENTITY picks another Developer ID identity. Without
credentials the image is signed but not notarized: Gatekeeper blocks it on
other Macs, so don't hand it out. The background comes from
swift scripts/make-dmg-background.swift, and the window layout from
scripts/dmg/layout.json.
| Show in Finder | ⌘R, double-click a file, or the hover button |
| Focus into a folder / open a file | ⌘↓ |
| Enclosing folder | ⌘↑ |
| Quick Look | Space |
| Copy path | ⌥⌘C |
| Mark for Cleanup | M (or the hover button) |
| Review & clean up | ⌘↩ |
| Move to Trash | ⌘⌫ |
| Delete immediately | ⌥⌘⌫ (asks first) |
| Files · Largest · Duplicates · Reclaim · Types | ⌘1 – ⌘5 (or the toolbar) |
| Rescan in place | ⇧⌘R |
| Rescan from scratch | ⌥⇧⌘R |
Other features:
Cleanup basket. Mark anything with M, from Reclaim ("Mark All Safe"), or from Duplicates ("Mark All Extras"). A bar above the status line keeps a running, deduplicated total, and the capacity meter shows the marked share hatched. The review sheet gives every item a safety verdict (and warns about anything Silt would keep), can pull in everything Safe to clear, and lets you choose between Trash and deleting now. Only Trash is on the Return key. A mark remembers the exact file it was made on: if that file is replaced by another with the same name, the mark is dropped, not carried over. Marks survive a relaunch. Silt never deletes system or home folder locations, or a volume mounted inside the scan.
Undo and follow-through. "Moved to the Trash" toasts have Undo, which puts everything back. The status bar remembers what's still waiting in the Trash and offers to empty it.
Where the space is. Click the capacity meter for the volume's ledger:
A file a snapshot holds frees nothing until that snapshot goes. Silt measures each removal against the volume's snapshots before anything goes. Confirmations and results say how much comes back right away (at least) and how much stays held (at most). Silt tracks held space until its last snapshot is gone, and nothing counts as freed until it has been.
What changed. Silt compares against the last scan (or the moment this one finished) and shows the folders that grew or shrank most: a status-bar chip ("+2.8 GB since yesterday") opens the list, and changed folders carry a "+1.2 GB" tag in the tree.
Guidance. Rows for known things get a tag (Dependencies, Build output, Cache, Installer…). The inspector explains what the selection is, whether it's safe to remove, the exact reinstall command its lockfile implies, and how long its project has sat untouched.
Duplicates finds files with identical contents. It compares size, then a sampled hash, then a full SHA-256, and skips dependency and build folders unless you ask. Results stream in, largest first. APFS clones already share their blocks, so they aren't counted as waste. Before anything is marked, every copy is re-checked against the exact file that was compared. Cleanup never removes the last copy: a marked copy goes only while another copy stays, unchanged since the search, and a copy edited since is left alone.
getattrlistbulk across a pool of
threads. Each listing is one syscall pass plus one short critical section
that appends the entries and pushes size deltas up the ancestor chain. So
every folder's total is correct-so-far at every instant, and the UI shows it
live.~/dev that is about 2.5× slower than a full
scan, for under one core on average. Each class's priority and limit can
change mid-scan: that's the speed setting. Listing never updates access
times.~/Library/Caches/com.jonnyasmar.silt/Snapshots, when the scan settles, at
quit, and at most every 30 minutes. Loading streams straight into the tree.
Reopening the same
location shows it immediately, then FSEvents replays everything that changed
since, so only those folders are re-listed. A replay that drops events (on
a busy disk, long ones do) can't be trusted, so Silt stops it and checks
everything again in the background instead. Removable and network volumes
always rescan, and ⇧⌘R forces a fresh scan.~/dev) is shown
from that scan, instantly, rather than scanned again. If the smaller one
was scanned first, it folds into the bigger one when that finishes; marks
and open folders carry over. Each view keeps its own place.Measured on ~/dev (1.3M items) on an M3 Max, with other work loading the
machine (load average 24–92). This is the release app, launched hidden, in
the same session as the build before the performance round:
| Before | Now | |
|---|---|---|
| Full scan: CPU time | 101 s | 29 s |
| Full scan: wall time | 11.3 s | 8.9 s |
| Settled memory | 215 MB | 172 MB |
| Settled CPU on a changing disk | 1.9 s a minute | 0.1 s a minute |
| Settled CPU on a quiet folder | 1.8 % of a core | ~0.03 % |
| Threads when settled | 32–35 | 4–7 |
For comparison, two back-to-back runs on 2026-10-05 on the same folder (by
then 1.1M items, warm cache, heavily loaded machine): Silt's engine took 9.0
and 10.8 s, du -sk 26.8 and 40.8 s.
Sizes are bytes on disk, counted once. Blocks shared by several hard links
or APFS clones are split between the files sharing them. Full clones count
size ÷ clone count; a partial clone counts its own blocks plus half of what
it shares. On a volume full of cloned cargo target folders, Silt reports
1,143 GB against 1,157 GB used according to df (the rest is APFS metadata and
snapshots). The inspector shows a clone's full size alongside its share.
For whole volumes, the difference between what the volume says is in use and what the scan found appears as System & hidden space. Expand it (or select it) to see what it's made of: purgeable space (local Time Machine snapshots and caches macOS frees by itself), the other volumes sharing the disk (swap, Preboot, Recovery), and data only macOS can read.
Silt is free and open source. If it got you some space back, you can buy me a coffee.
MIT. See LICENSE.
Reclaim finds known caches, build output (node_modules, Rust target
folders wherever they live, SwiftPM .build, DerivedData…), orphaned build
output whose project is gone, installers, model weights, and large files
untouched for a year. Build output in projects you haven't touched for
three months gets its own group at the top. It works from the scan, with no
extra disk reads.
File Types breaks space down by kind and extension.
Largest Files folds copies (same name and size in several places) into one row, so duplicates stand out.
Search matches names anywhere in the scan, largest first.
Scan speed (status bar, File menu, or Settings). Automatic runs scans you start at full speed and keeps up with changes in the background, easing off on battery, in Low Power Mode or when the Mac runs hot. Fast puts everything at full priority, catching up included. Gentle keeps to the efficiency cores with slower disk access, so it takes several times longer. Paused stops Silt's own work, while scans you start still run.
Busy folders. A folder that never stops changing (agent logs, build output) is updated less and less often, down to every 30 s. A folder you have open still updates every couple of seconds. The status bar lists busy folders.
Folder rules. Right-click a folder and choose Updates: Live (every change), Slowly (once a minute), Paused (only when you open it or choose Update Now), or Don't Scan (left out entirely). A rule covers everything inside the folder, and Settings lists them all.
~/Library/Caches/com.jonnyasmar.silt/Parked exactly as it is and frees
it: Storage (7.6M items) goes from ~520 MB to ~26 MB, and comes back in
about half a second when shown again, then catches up on what changed.
While parked it only notes which folders change (watching a whole disk
live costs next to nothing; replaying hours of history doesn't), and waking
re-lists just those. Marks, open folders, Reclaim results and duplicates
survive.NSOutlineView whose rows are created lazily. Open folders
re-sort only when something inside them changed, and a re-listed folder's
rows are updated in place rather than reloaded.