tauri-plugin-hwinfo

Crates.iotauri-plugin-hwinfo
lib.rstauri-plugin-hwinfo
version0.2.3
created_at2025-04-22 23:10:04.97937+00
updated_at2025-06-21 13:45:04.941655+00
descriptionA cross-platform Tauri plugin to fetch CPU, RAM, GPU, and OS info.
homepagehttps://github.com/nikolchaa/tauri-plugin-hwinfo
repositoryhttps://github.com/nikolchaa/tauri-plugin-hwinfo
max_upload_size
id1644795
size155,220
Nikola Ranđelović (nikolchaa)

documentation

https://github.com/nikolchaa/tauri-plugin-hwinfo

README

🧠 tauri-plugin-hwinfo

License Crates.io Crates.io Downloads npm npm Downloads

A cross-platform Tauri plugin to fetch detailed system hardware information from the user's device, including CPU, RAM, GPU, and OS metadata β€” all accessible through both Rust and JavaScript/TypeScript APIs.

⚠️ Platform Support: Desktop-only. Mobile returns placeholder values.

⚠️ Testing: Only Windows is tested and confirmed working so far.

πŸ”§ Features

  • βœ… CPU Info (manufacturer, model, threads, max frequency)
  • βœ… RAM Info (total memory in MB)
  • βœ… GPU Info (model, manufacturer, VRAM in MB, CUDA support, Vulkan support)
  • βœ… OS Info (OS name and version)
  • βœ… Full Tauri v2 permissions support
  • βœ… JS/TS bindings via @tauri-apps/api/core::invoke

πŸ“¦ Installation

From Crates.io (Rust)

cargo add tauri-plugin-hwinfo

From GitHub (bleeding edge)

[dependencies]
tauri-plugin-hwinfo = { git = "https://github.com/nikolchaa/tauri-plugin-hwinfo" }

πŸ› οΈ Usage (Rust Backend)

Option 1: Auto-bind commands via invoke_handler (if calling from JS/TS manually)

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_hwinfo::init())
        .invoke_handler(tauri::generate_handler![
            tauri_plugin_hwinfo::get_cpu_info,
            tauri_plugin_hwinfo::get_gpu_info,
            tauri_plugin_hwinfo::get_ram_info,
            tauri_plugin_hwinfo::get_os_info
        ])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

Option 2: Plugin-only setup (if using only the frontend API)

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_hwinfo::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

Use Option 1 if you want to manually expose commands to JS via invoke().

Use Option 2 if you're only using tauri-plugin-hwinfo's built-in TS API.

Add this to your src-tauri/capabilities/default.json:

{
  "permissions": [
    "hwinfo:allow-cpu-info",
    "hwinfo:allow-gpu-info",
    "hwinfo:allow-ram-info",
    "hwinfo:allow-os-info"
  ]
}

πŸ“œ Output Format

// CPU Info:
{
  "manufacturer": "AuthenticAMD",
  "model": "AMD Ryzen 9 5900X 12-Core Processor",
  "maxFrequency": 3701,
  "threads": 24
}

// RAM Info:
{
  "sizeMb": 32686
}

// GPU Info:
{
  "manufacturer": "Advanced Micro Devices, Inc.",
  "model": "AMD Radeon RX 6950 XT",
  "vramMb": 16311,
  "supportsCuda": false,
  "supportsVulkan": true
}

// OS Info:
{
  "name": "Windows",
  "version": "10.0.26100"
}

πŸ“Œ Frontend API (JS/TS)

Install:

npm i tauri-plugin-hwinfo

Usage:

import {
  getCpuInfo,
  getRamInfo,
  getGpuInfo,
  getOsInfo,
} from "tauri-plugin-hwinfo";

async function logSystemInfo() {
  const cpu = await getCpuInfo();
  const ram = await getRamInfo();
  const gpu = await getGpuInfo();
  const os = await getOsInfo();

  console.log("CPU Info:", cpu);
  console.log("RAM Info:", ram);
  console.log("GPU Info:", gpu);
  console.log("OS Info:", os);
}
Commit count: 28

cargo fmt