BatCave Monitor is a local-first resource cockpit for Windows and Linux. It shows the machine underneath the machine: CPU pressure, memory, disk and network movement, process triage, runtime health, and the little permission-shaped holes where the operating system says "not today."
This is a public preview. It is useful now, honest about what it cannot see, and intentionally boring about privacy: BatCave reads local telemetry and keeps it local.
- A live process explorer with CPU, memory, disk, and estimated per-process network columns.
- A system inspector for CPU, memory, disk, and network detail, including logical-core charts and runtime health.
- A selected-process panel with PID, parent PID, CPU, kernel CPU, memory, private bytes, disk totals, thread count, handle count, access state, process path, and network attribution when available.
- Pause/resume, manual refresh, refresh cadence, search, sort, focus modes, chart history length, and theme controls.
- Explicit quality states when data is warming up, partially available, blocked by permissions, or unavailable on the current platform.
BatCave does not pretend. If ETW, eBPF, /proc, /sys, PDH, or process permissions are unavailable, the app keeps running and marks the affected metric honestly instead of painting fake numbers over the crack.
BatCave is ready for source-based testing and local preview builds.
- Windows and Linux native telemetry collectors are implemented.
- The Tauri app can run as a native desktop shell or as a browser-only fixture UI for layout testing.
- Windows bundles currently produce an unsigned executable and NSIS installer.
- Linux builds produce
.deband AppImage bundles. - Installer signing and automatic updater work are still future distribution work.
Install prerequisites first:
- Node.js 24
- A current stable Rust toolchain
- On Linux, the WebKitGTK/GTK/Tauri native packages installed by
scripts/install-linux-deps.sh
From the repository root on Windows:
cd src\BatCave.App
npm install
cd ..\..
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run-dev.ps1Run only the browser UI with deterministic fixture telemetry:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run-dev.ps1 -WebOnlyFrom the repository root on Ubuntu/Debian:
bash scripts/install-linux-deps.sh
cd src/BatCave.App
npm install
cd ../..
bash scripts/run-dev.shRun the Linux browser-only fixture UI:
bash scripts/run-dev.sh --web-onlyRun the full Windows validation workflow:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/validate-tauri.ps1Run the Linux equivalent:
bash scripts/validate-tauri.shFor faster app-level checks from src/BatCave.App:
npm run verify
npm run tauri:dev:windows
npm run tauri:build:windowsOn Linux, use:
npm run verify
npm run tauri:dev:linux
npm run tauri:build:linuxWindows release builds emit the release executable and unsigned NSIS installer under src/BatCave.App/src-tauri/target/release. Linux builds emit .deb and AppImage bundles under src/BatCave.App/src-tauri/target/release/bundle.
BatCave is local-only by design. Do not add outbound tracking, remote logging, hosted collection, or surprise network dependencies.
Runtime state, settings, warm cache, helper snapshots, and logs stay under:
- Windows:
%LOCALAPPDATA%\BatCaveMonitor - Linux:
$XDG_DATA_HOME/BatCaveMonitoror~/.local/share/BatCaveMonitor
Theme preference is stored in browser localStorage under batcave.monitor.theme.
- Windows per-process network attribution uses ETW over the kernel TCP/IP provider. If the kernel logger cannot start or access is denied, BatCave reports the reason and continues.
- Windows admin mode can launch a local elevated helper for richer snapshots. If elevation is denied or unavailable, BatCave falls back to standard access.
- Linux aggregate telemetry uses
/procand/sys. Optional per-process network attribution usesbpftrace/eBPF when the host has the needed permissions or capabilities. - Browser fixture mode is for UI work. It is deterministic on purpose and is not proof of native collector behavior.
Run a headless runtime benchmark:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run-benchmark.ps1 -BenchmarkHost core -Platform x64 -Ticks 120 -SleepMs 1000Capture a reusable benchmark baseline artifact:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/capture-benchmark-baseline.ps1 -BenchmarkHost core -Platform x64Linux equivalents are available at scripts/run-benchmark.sh and scripts/capture-benchmark-baseline.sh.
- App runbook covers native/browser run modes, app scripts, and platform troubleshooting.
- Runtime telemetry covers the Rust runtime store, native collectors, quality states, admin helper behavior, and benchmark surfaces.
Keep the app local, explicit, and boringly reliable. Match the existing Rust/Tauri/Svelte boundaries, preserve the snake_case JSON contracts, and run the narrowest meaningful verification before opening a PR.

