TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Real system activity. One quiet place. An open-source desktop monitor for macOS, Windows and Linux.
ProductivityTypeScript · GoGitHub @rickyshin93Latest connection check failedOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗RockshinOps is a free, open-source desktop system monitor for macOS, Windows and Linux, built with Go, MyGo and TypeScript. Monitor CPU, memory, disk, network, processes and connections. Keep useful metrics in the menu bar, inspect live activity, and see what takes up disk space.
Website · 简体中文 · Download · Project status
Live pages reuse DOM nodes, large process/connection tables render visible rows, history updates transfer only new samples, and slow inspection reads stay independent of live metrics. Native collection remains independent of rendering. See performance design and measurements.
| Package | Architecture | Monitoring status |
|---|---|---|
| macOS | Apple Silicon / arm64 | Native collectors; interactive desktop acceptance on Apple Silicon |
| macOS | Intel / x86_64 | Same macOS collectors; CI build and automated tests |
| Windows | x86_64 / amd64 | Native CPU, memory, disk, network, process and connection collectors; CI sampling checks |
| Linux | x86_64 / amd64 | Native CPU, memory, disk, network, process and connection collectors; CI sampling checks |
All four targets run real collector smoke tests in CI. Interactive desktop acceptance has been performed on macOS Apple Silicon; Windows/Linux desktop interaction and hardware-specific telemetry need device coverage. Platform collection contract.
CPU temperature and per-app watt measurements are not implemented. GPU and system power availability depends on hardware and drivers. Windows supports NVIDIA telemetry through an installed nvidia-smi; Linux supports AMD sysfs counters and NVIDIA SMI. The GPU panel shows one device. Linux battery details cover the first system battery in sysfs; Windows uses aggregate system battery status.
Download the package for your architecture from Releases.
.dmg and drag the app to Applications. Packages are ad-hoc signed, not notarized. If macOS blocks the downloaded app, follow Apple's instructions for opening an app from an unidentified developer.RockshinOps Setup … amd64.exe installer. It installs for the current user and requires WebView2. Packages are unsigned, so Windows may display a publisher warning..deb with sudo apt install ./rockshinops_…_amd64.deb; the package declares its GTK/WebKitGTK dependencies. A desktop tray implementation is needed to expose the tray menu..tar.gz and run ./rockshinops from the extracted directory. Install GTK 3, WebKitGTK 4.1 and an AppIndicator-compatible tray through your distribution. The archive does not include an installation script.Each release includes SHA256SUMS.txt. Starting with v0.2.1, RockshinOps checks GitHub Releases after launch and daily while running. Use Settings → Check for Updates…, the app menu or the tray menu to check manually. The update window shows release notes, downloads with progress, verifies the signature and lets you choose when to relaunch. Installation requires confirmation unless you explicitly opt into automatic installation.
Install v0.2.1 manually once if you currently use v0.2.0. Updates require a writable install location; Linux system packages must be upgraded with the package manager. On macOS, Settings → Use system proxy for updates uses the system network proxy after saving; PAC scripts and authenticated proxies are not supported. GitHub must be reachable. Update signing does not change the OS signing/notarization status above.
Requirements: Go 1.27.3, Bun 1.4.2, and macOS Command Line Tools for macOS builds. Windows and Linux builds use pure Go; macOS collectors use C/Objective-C system APIs.
bun install --frozen-lockfile
bun run generate
bun run dev
Scripts prefer .tools/go/bin/go when present, otherwise the Go on PATH. The toolchain is not a runtime dependency.
bun run dev:web starts a browser preview. Live native data is available only inside the MyGo desktop app; the ordinary browser preview explicitly reports this limitation.
bun run test:go
bun run test:web
bun run typecheck
bun run build
Build on the target OS; macOS builds require that architecture's native C toolchain. Packages are written under build/<os>-<arch>/.
# Examples, each on its matching runner/host
sh scripts/mygo.sh build -platform darwin/arm64
sh scripts/mygo.sh build -platform darwin/amd64
sh scripts/mygo.sh build -platform windows/amd64
sh scripts/mygo.sh build -platform linux/amd64
GitHub Actions runs tests and builds all four targets on pushes to main, pull requests and manual dispatches. Download per-platform packages from each run's artifacts.
To publish, update package.json's version, commit it, then push the matching v<version> tag. Add the matching ## <version> entry to CHANGELOG.md. CI checks the tag, builds and tests every target, verifies signed update manifests/archives, and publishes installers, updates and SHA-256 checksums only after all builds pass. The release job uses the repository's GITHUB_TOKEN; tagged builds require the MYGO_UPDATER_PRIVATE_KEY repository secret. Pull requests and untagged builds do not receive the signing key.
The public key and release repository are in mygo.config.ts. Keep the original private key in a secure backup outside Git: replacing it strands existing installations. For a local signed build, supply it through MyGo's MYGO_UPDATER_PRIVATE_KEY credential input; never commit it. Update manifests use the standard releases/latest/download/update-<platform>.json feed, with full archives and no delta patches. See MyGo's update documentation.
rockshinops.json is the single file for the update check interval (updateIntervalSeconds, default 86400 seconds), sampling intervals, history retention, connection/scan timeouts, scan scope and resource limits. It is embedded in the app, so changes require a rebuild. defaultMenuBarItems, defaultLanguage, and defaultUpdateUseSystemProxy define first-run preferences. scanTargets has separate darwin, windows and linux lists; ~/ paths resolve against the current user home.
User settings are stored at os.UserConfigDir()/RockshinOps/preferences.json (on macOS: ~/Library/Application Support/RockshinOps/preferences.json). Existing settings without a language field follow the system. Invalid settings or failed saves report errors; saved preferences are not silently reset.
Data is read locally. No analytics, remote upload, privileged helper or HTTP IPC server is included. Permission restrictions can result in partial data.
| Metric | Meaning |
|---|---|
| CPU | Native counter deltas; system usage is weighted across cores. Process usage uses 100% per logical core and may exceed 100%. |
| Memory | Binary GiB/MiB. macOS uses Mach/sysctl and process phys_footprint. Windows/Linux use total minus OS-available memory and process RSS; shared pages can be counted multiple times. Windows swap means page files. |
| Disk capacity | Space writable by the current user on the home directory's volume, decimal MB/GB/TB. Reclaimable space is excluded; APFS shared volumes are not summed. |
| Disk I/O | macOS block-driver counters, Windows fixed-volume counters, Linux hardware block devices excluding partitions and virtual layers. Disabled or inaccessible counters are unavailable; RockshinOps does not enable them in the registry. |
| Network | 64-bit interface counter deltas. macOS sums en*; Windows uses the hardware-interface flag; Linux uses sysfs hardware device identity. Virtual interfaces remain separate to avoid duplicate traffic. |
| Connections | Processes and connections preload once after the initial view is idle; page entry shows cached connections while refreshing stale data. Failed refreshes retain the previous list with an error. macOS lsof plus two nettop samples (connectionSampleIntervalSeconds, default 1 second); metrics match unique PID/protocol/local/remote tuples. TCP RTT is the OS-reported round-trip time, not a ping probe. New/reset counters have no rate baseline. Windows connection tables and Linux procfs currently provide socket metadata only. No elevation, remote DNS lookup or outgoing probe. |
| Space analysis | Logical file sizes, without following symlinks. Hard links/APFS clones may count more than once; results are not guaranteed reclaimable space. |
website/: bilingual static promotional site, deployed to GitHub Pages by pages.yml. English is the default; /zh/ serves static Chinese HTML. Preview with python3 -m http.server 4177 --directory website and open http://localhost:4177/. Run bun run build:website after editing the website; deployed pages have no CDN or server runtime dependencies.internal/metrics/, internal/storage/: native collection, rates, history and read-only inspection.internal/localization/: shared English/Chinese catalogs and native translations.main.go, preferences.go: lifecycle, native menus, preferences and typed IPC.src/: TypeScript views and React Settings using react-i18next. src/mygo.ts is generated.scripts/, .github/: development, packaging and release automation.Contributions are welcome. See CONTRIBUTING.md. Licensed under MIT; dependency licenses are in THIRD_PARTY_NOTICES.md.
The English website and Chinese website are static HTML and work without JavaScript. Product facts in Markdown and llms.txt provide concise entry points for AI search and agents. They describe the same features and platform limits shown to people.
Run bun run build:website after editing website/index.html or scripts/website-copy.ts; it regenerates metadata, Chinese HTML, Markdown and sitemap.xml. Preview with python3 -m http.server 4177 --directory website. GitHub Pages serves this project below /RockshinOps/; a project-level robots.txt cannot control the host root. The sitemap can be submitted in Google Search Console after ownership verification. These files do not guarantee indexing or AI citations.
New builds use RockshinOps for the app, executable and installer, with application ID dev.rockshinops.desktop. Install the first renamed release manually: older updaters relaunch the former executable path. Existing LocalOps/preferences.json and LocalOps/menu-bar.json are copied to the RockshinOps settings directory only when their destination is absent; originals are retained. macOS permissions may need to be granted to the renamed app again. Published 0.2.4 artifacts retain their original filenames; use the files actually listed on the release page. The update signing key is unchanged.