A fast, cross-platform (Windows / macOS / Linux) desktop process manager built with Tauri v2 + Rust backend and Svelte 5 frontend.
/ focus search, Del terminate, F5 refresh, Esc clear/deselect# Ubuntu/Debian
sudo apt install libwebkit2gtk-4.1-dev libxdo-dev libayatana-appindicator3-dev librsvg2-dev build-essential curl file libssl-dev libgtk-3-dev
# Fedora
sudo dnf install webkit2gtk4.1-devel libxdo-devel libayatana-appindicator-gtk3-devel librsvg2-devel openssl-devel
xcode-select --install
# Install frontend dependencies
npm install
# Start development server (Tauri + Vite HMR)
npm run tauri dev
The Tauri window opens automatically. Hot-module reload works for the Svelte frontend. Rust changes require a full restart.
# Production build (creates platform bundle in src-tauri/target/release/bundle/)
npm run tauri build
Output locations:
.deb, .rpm, .AppImage.dmg, .app.msi, .exe (NSIS)# Rust unit tests
cd src-tauri && cargo test
# Frontend type check
npm run check
| Key | Action |
|---|---|
/ |
Focus search bar |
F5 |
Force refresh process list |
Esc |
Clear search / deselect process |
Del |
Terminate selected process (with confirmation) |
Enter |
Confirm modal |
Esc (modal) |
Cancel modal |
| Setting | Default | Description |
|---|---|---|
| Refresh interval | 1000 ms | Configurable via dropdown: 500 ms – 5 s |
RUST_LOG env var |
info |
Set to debug or trace for verbose backend logs |
Processes owned by SYSTEM or elevated services require admin rights. Run Process Manager as Administrator.
UAC prompt: Right-click the executable → "Run as administrator".
macOS SIP prevents even root from killing certain system processes. For user processes you may need Full Disk Access in System Settings → Privacy & Security.
Some distributions restrict signal delivery to processes owned by other users. Run with sudo or configure polkit to allow your user.
# Quick test with sudo
sudo RUST_LOG=info ./process-manager
process-manager/
├── src-tauri/src/
│ ├── main.rs Entry point
│ ├── lib.rs Tauri builder, plugin registration
│ ├── state.rs Shared AppState (Arc<Mutex<T>>)
│ ├── error.rs AppError enum
│ ├── models/process.rs ProcessDto, filter/sort helpers + unit tests
│ ├── collector/ sysinfo-based process collector
│ ├── updater/ Background refresh loop, event emitter
│ └── commands/ Tauri command handlers (list, kill, open)
└── src/
├── routes/+page.svelte Main application page
├── lib/api/ Typed invoke/listen wrappers
├── lib/stores/ Svelte 5 rune-based reactive stores
├── lib/components/ UI components (table, filters, modals)
└── lib/utils/ Formatting helpers
Pre-built binaries for all supported platforms are attached to each GitHub Release.
| Platform | Architecture | Installer formats |
|---|---|---|
| Linux | x86_64 | .deb, .rpm, .AppImage |
| Linux | aarch64 | .deb, .rpm, .AppImage |
| Windows | x86_64 | .msi, .exe (NSIS) |
| Windows | aarch64 | .msi, .exe (NSIS) |
| macOS | Apple Silicon (aarch64) | .dmg, .app |
macOS Intel (x86_64) is not supported. The
macos-13GitHub Actions runner (the last Intel runner) is EOL and is no longer available.
# Tag the commit you want to release
git tag v0.2.0
git push origin v0.2.0
The release workflow triggers automatically, builds all platform bundles in parallel, and creates a draft GitHub Release with the compiled installers attached as assets.
Once all platform jobs finish, open the draft release on GitHub, review the assets, edit the release notes if needed, and click Publish release.
See .ai-factory/ARCHITECTURE.md for the full v1 / v1.1 plan.