{"_id":"@ambicuity/systeminspector","_rev":"3-70ac64b4681b5e7648efc38da628b7fe","name":"@ambicuity/systeminspector","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@ambicuity/systeminspector","version":"1.0.0","keywords":["system information","sysinfo","monitor","monitoring","os","linux","osx","windows","freebsd","openbsd","netbsd","cpu","cpuload","physical cores","logical cores","processor","cores","threads","socket type","memory","file system","fsstats","diskio","block devices","netstats","network","network interfaces","network connections","network stats","iface","printer","processes","users","internet","battery","docker","docker stats","docker processes","graphics","graphic card","graphic controller","gpu","display","smart","disk layout","usb","audio","bluetooth","wifi","wifinetworks","virtual box","virtualbox","vm","backend","hardware","BIOS","chassis"],"author":{"name":"Ritesh Rana"},"license":"MIT","_id":"@ambicuity/systeminspector@1.0.0","maintainers":[{"name":"ambicuity","email":"riteshrana36@gmail.com"}],"homepage":"https://github.com/ambicuity/systeminspector#readme","bugs":{"url":"https://github.com/ambicuity/systeminspector/issues"},"os":["darwin","linux","win32","freebsd","openbsd","netbsd","sunos","android"],"bin":{"systeminspector":"dist/cli.js"},"dist":{"shasum":"c6a79b94f9af7cd6619cca435af520b555182d17","tarball":"https://registry.npmjs.org/@ambicuity/systeminspector/-/systeminspector-1.0.0.tgz","fileCount":99,"integrity":"sha512-NryDl4igHJzvYHF6ThvSGoIn/F0KMwP3EPVwSiWrd4TvpRTFp7u2issWF7OJtz6BfEkCf7WvoWfSjEARP4qHog==","signatures":[{"sig":"MEYCIQCW909bfsEsQzcqRr1xyRi63o+kMTJtd1brCDvk7fmnKAIhAOpaNIK32AWqPBdaoVbfPAn2A0FFmSbeQfdvipY8LARB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ambicuity%2fsysteminspector@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1728280},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"funding":{"url":"https://buymeacoffee.com/ritesh.rana","type":"buymeacoffee"},"gitHead":"9858a7ae3a1e86bbd6382842ffe76fc27e10a35f","scripts":{"lint":"biome lint src/ test/","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tgz","format":"biome format --write src/ test/","test:ci":"tsx ./test/ci.ts","docs:dev":"vitepress dev docs","postbuild":"chmod +x dist/cli.js","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:vitest":"vitest run","docs:preview":"vitepress preview docs","release:check":"npm run verify:release","test:fixtures":"vitest run --passWithNoTests","typecheck:test":"tsc -p tsconfig.test.json","verify:release":"tsx scripts/verify-release.ts","verify:website":"tsx scripts/verify-website.ts","verify:terminal":"tsx scripts/verify-terminal.ts","test:interactive":"tsx ./test/test.ts"},"_npmUser":{"name":"ambicuity","email":"riteshrana36@gmail.com"},"repository":{"url":"git+https://github.com/ambicuity/systeminspector.git","type":"git"},"_npmVersion":"10.9.7","description":"Lightweight, zero-dependency system and OS inspection library for Node.js. Retrieve detailed hardware, CPU, memory, storage, network, process, Docker, and peripheral information across Linux, macOS, and Windows.","directories":{"doc":"docs","lib":"src","test":"test"},"_nodeVersion":"22.22.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.33","vitest":"^4.1.5","vitepress":"^1.6.4","typescript":"^6.0.3","@types/node":"^25.6.0","@biomejs/biome":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/systeminspector_1.0.0_1777332920230_0.48788102962729174","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ambicuity/systeminspector","version":"1.0.1","keywords":["system information","sysinfo","monitor","monitoring","os","linux","osx","windows","freebsd","openbsd","netbsd","cpu","cpuload","physical cores","logical cores","processor","cores","threads","socket type","memory","file system","fsstats","diskio","block devices","netstats","network","network interfaces","network connections","network stats","iface","printer","processes","users","internet","battery","docker","docker stats","docker processes","graphics","graphic card","graphic controller","gpu","display","smart","disk layout","usb","audio","bluetooth","wifi","wifinetworks","virtual box","virtualbox","vm","backend","hardware","BIOS","chassis"],"author":{"name":"Ritesh Rana"},"license":"MIT","_id":"@ambicuity/systeminspector@1.0.1","maintainers":[{"name":"ambicuity","email":"riteshrana36@gmail.com"}],"homepage":"https://systeminspector.riteshrana.engineer/gettingstarted.html","bugs":{"url":"https://github.com/ambicuity/systeminspector/issues"},"os":["darwin","linux","win32","freebsd","openbsd","netbsd","sunos","android"],"bin":{"systeminspector":"dist/cli.js"},"dist":{"shasum":"0e56da5a3bda7f29ae5ac69dfa44e1e249e160fa","tarball":"https://registry.npmjs.org/@ambicuity/systeminspector/-/systeminspector-1.0.1.tgz","fileCount":103,"integrity":"sha512-8yrDkwf2HCGGBNHXq96phwyuEQXKraez1RD3RutylnEnTnzMlVa7z7tWICIhaF4QsRtjAn+R+mmzXJqWQaWkBA==","signatures":[{"sig":"MEQCIB7fp3+xLHUZPWoIVV/homP/HwtgefIuK3x7n92LPrnKAiBkjaJDaFkIdMpXDXSmFQmRewThbh2ZPkraSpaBvbB06Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ambicuity%2fsysteminspector@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1766768},"main":"./dist/index.js","type":"commonjs","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"funding":{"url":"https://buymeacoffee.com/ritesh.rana","type":"buymeacoffee"},"gitHead":"63cee33537feaa9c4f0153d51f63b47bb18fb8b2","scripts":{"lint":"biome lint src/ test/","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tgz","format":"biome format --write src/ test/","test:ci":"tsx ./test/ci.ts","docs:dev":"vitepress dev docs","postbuild":"chmod +x dist/cli.js","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:vitest":"vitest run","docs:preview":"vitepress preview docs","release:check":"npm run verify:release","test:fixtures":"vitest run --passWithNoTests","typecheck:test":"tsc -p tsconfig.test.json","verify:release":"tsx scripts/verify-release.ts","verify:website":"tsx scripts/verify-website.ts","verify:terminal":"tsx scripts/verify-terminal.ts","test:interactive":"tsx ./test/test.ts"},"_npmUser":{"name":"ambicuity","email":"riteshrana36@gmail.com"},"repository":{"url":"git+https://github.com/ambicuity/systeminspector.git","type":"git"},"_npmVersion":"10.9.7","description":"Lightweight, zero-dependency system and OS inspection library for Node.js. Retrieve detailed hardware, CPU, memory, storage, network, process, Docker, and peripheral information across Linux, macOS, and Windows.","directories":{"doc":"docs","lib":"src","test":"test"},"_nodeVersion":"22.22.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.33","vitest":"^4.1.5","vitepress":"^1.6.4","typescript":"^6.0.3","@types/node":"^25.6.0","@biomejs/biome":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/systeminspector_1.0.1_1777339851988_0.8275556207432644","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ambicuity/systeminspector","version":"1.1.0","description":"Lightweight, zero-dependency system and OS inspection library for Node.js. Retrieve detailed hardware, CPU, memory, storage, network, process, Docker, and peripheral information across Linux, macOS, and Windows.","license":"MIT","author":{"name":"Ritesh Rana"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","type":"commonjs","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js","default":"./dist/cjs/index.js"}},"bin":{"systeminspector":"dist/cjs/cli.js"},"types":"./dist/cjs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/ambicuity/systeminspector.git"},"bugs":{"url":"https://github.com/ambicuity/systeminspector/issues"},"homepage":"https://systeminspector.riteshrana.engineer/gettingstarted.html","funding":{"type":"buymeacoffee","url":"https://buymeacoffee.com/ritesh.rana"},"scripts":{"clean":"rm -rf dist *.tgz","prebuild":"node scripts/write-version.js && npm run codegen:api","codegen:api":"tsx scripts/codegen-public-api.ts","codegen:api:check":"tsx scripts/codegen-public-api.ts --check","codegen:bluetooth-vendors":"tsx scripts/generate-bluetooth-vendors.ts","codegen:bluetooth-vendors:check":"tsx scripts/generate-bluetooth-vendors.ts --check","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -p tsconfig.json && chmod +x dist/cjs/cli.js","build:esm":"tsc -p tsconfig.esm.json && node scripts/finalize-esm.js","typecheck":"tsc --noEmit","typecheck:test":"tsc -p tsconfig.test.json","lint":"biome lint src/ test/","lint:check":"tsx scripts/check-lint-baseline.ts","lint:baseline":"tsx scripts/check-lint-baseline.ts --update","format":"biome format --write src/ test/","test":"vitest run","test:interactive":"tsx ./test/test.ts","test:ci":"tsx ./test/ci.ts","test:fixtures":"vitest run --passWithNoTests","test:vitest":"vitest run","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","verify:release":"tsx scripts/verify-release.ts","verify:terminal":"tsx scripts/verify-terminal.ts","verify:website":"tsx scripts/verify-website.ts","release:check":"npm run verify:release"},"keywords":["system information","sysinfo","monitor","monitoring","os","linux","osx","windows","freebsd","openbsd","netbsd","cpu","cpuload","physical cores","logical cores","processor","cores","threads","socket type","memory","file system","fsstats","diskio","block devices","netstats","network","network interfaces","network connections","network stats","iface","printer","processes","users","internet","battery","docker","docker stats","docker processes","graphics","graphic card","graphic controller","gpu","display","smart","disk layout","usb","audio","bluetooth","wifi","wifinetworks","virtual box","virtualbox","vm","backend","hardware","BIOS","chassis"],"os":["darwin","linux","win32","freebsd","openbsd","netbsd","sunos","android"],"engines":{"node":">=18.0.0"},"directories":{"doc":"docs","lib":"src","test":"test"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"devDependencies":{"@biomejs/biome":"^2.3.1","@types/node":"^25.6.0","tsx":"^4.21.0","typescript":"^6.0.3","vitepress":"^1.6.4","vitest":"^4.1.5","vue":"^3.5.33"},"_id":"@ambicuity/systeminspector@1.1.0","gitHead":"0d2adc5ac287f4859f71bbbee80b276236f388be","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-cg+1oaoCgzWoW/54nhPBGFMH7Y3u21il5ACbhYznN4NvZAQ7Pl3pU6TAjPi5bFJ4oG/gj1EnuYf/eRckEKZDsA==","shasum":"a378f296c06aea368e7edcba51be16fe123ac3f7","tarball":"https://registry.npmjs.org/@ambicuity/systeminspector/-/systeminspector-1.1.0.tgz","fileCount":164,"unpackedSize":3105574,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ambicuity%2fsysteminspector@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDOZ+JuyZC2Hr6VHhzDDNoIphpUnB2pOAB974V/EnYXBAiAzDepODMX+dzHBPIej/CcfjEk6dofACZUF2NqcRkorkQ=="}]},"_npmUser":{"name":"ambicuity","email":"riteshrana36@gmail.com"},"maintainers":[{"name":"ambicuity","email":"riteshrana36@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/systeminspector_1.1.0_1777997668611_0.8540582471844635"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-27T23:35:20.111Z","modified":"2026-05-05T16:14:29.083Z","1.0.0":"2026-04-27T23:35:20.465Z","1.0.1":"2026-04-28T01:30:52.167Z","1.1.0":"2026-05-05T16:14:28.819Z"},"bugs":{"url":"https://github.com/ambicuity/systeminspector/issues"},"author":{"name":"Ritesh Rana"},"license":"MIT","homepage":"https://systeminspector.riteshrana.engineer/gettingstarted.html","keywords":["system information","sysinfo","monitor","monitoring","os","linux","osx","windows","freebsd","openbsd","netbsd","cpu","cpuload","physical cores","logical cores","processor","cores","threads","socket type","memory","file system","fsstats","diskio","block devices","netstats","network","network interfaces","network connections","network stats","iface","printer","processes","users","internet","battery","docker","docker stats","docker processes","graphics","graphic card","graphic controller","gpu","display","smart","disk layout","usb","audio","bluetooth","wifi","wifinetworks","virtual box","virtualbox","vm","backend","hardware","BIOS","chassis"],"repository":{"type":"git","url":"git+https://github.com/ambicuity/systeminspector.git"},"description":"Lightweight, zero-dependency system and OS inspection library for Node.js. Retrieve detailed hardware, CPU, memory, storage, network, process, Docker, and peripheral information across Linux, macOS, and Windows.","maintainers":[{"name":"ambicuity","email":"riteshrana36@gmail.com"}],"readme":"# SystemInspector\n\n> Lightweight, zero-dependency system and OS inspection library for Node.js.\n\n[![npm version](https://img.shields.io/npm/v/%40ambicuity%2Fsysteminspector.svg)](https://www.npmjs.com/package/@ambicuity/systeminspector)\n[![npm downloads](https://img.shields.io/npm/dm/%40ambicuity%2Fsysteminspector.svg)](https://www.npmjs.com/package/@ambicuity/systeminspector)\n[![GitHub issues](https://img.shields.io/github/issues/ambicuity/systeminspector.svg)](https://github.com/ambicuity/systeminspector/issues)\n[![GitHub closed issues](https://img.shields.io/github/issues-closed/ambicuity/systeminspector.svg)](https://github.com/ambicuity/systeminspector/issues?q=is%3Aissue+is%3Aclosed)\n[![license](https://img.shields.io/npm/l/%40ambicuity%2Fsysteminspector.svg)](https://github.com/ambicuity/systeminspector/blob/main/LICENSE)\n[![CI](https://github.com/ambicuity/systeminspector/actions/workflows/ci.yml/badge.svg)](https://github.com/ambicuity/systeminspector/actions/workflows/ci.yml)\n[![Zero Dependencies](https://img.shields.io/badge/dependencies-0-brightgreen.svg)](https://www.npmjs.com/package/@ambicuity/systeminspector)\n[![Buy Me a Coffee](https://img.shields.io/badge/sponsor-Buy%20Me%20a%20Coffee-orange.svg)](https://buymeacoffee.com/ritesh.rana)\n\n---\n\n## What It Does\n\nSystemInspector provides **58+ asynchronous functions** for retrieving hardware, operating system, runtime, storage, network, process, service, and peripheral information. It is written in strict TypeScript, compiles to CommonJS, and has **zero npm runtime dependencies**.\n\nSupported platforms: **Linux**, **macOS**, **Windows**, **FreeBSD**, **OpenBSD**, **NetBSD**, **SunOS**, **Android**.\n\n---\n\n## Installation\n\n```bash\nnpm install @ambicuity/systeminspector\n```\n\nRequires **Node.js ≥ 18.0.0**.\n\n---\n\n## Quick Start\n\n### ESM (Vite, Next.js, Bun, modern Node ESM)\n\n```js\nimport * as si from '@ambicuity/systeminspector';\n\nconst cpu = await si.cpu();\nconst os = await si.osInfo();\nconsole.log(cpu, os);\n```\n\n### CommonJS\n\n```js\nconst si = require('@ambicuity/systeminspector');\n\nasync function main() {\n  const cpu = await si.cpu();\n  const os = await si.osInfo();\n  console.log(cpu, os);\n}\n\nmain();\n```\n\n### Callback Style (deprecated, removed in v2.0)\n\n```js\nconst si = require('@ambicuity/systeminspector');\n\nsi.cpu((data) => {\n  console.log(data);\n});\n```\n\n> **Tip:** the modern call form is `await si.cpu({ timeoutMs, signal, redact, envelope })`. Callback overloads still work but carry an `@deprecated` JSDoc tag and will be removed in v2.0. See [docs/general.md](docs/general.md) for the full options surface.\n\n---\n\n## CLI\n\nSystemInspector includes a CLI for quick terminal inspection.\n\n```bash\n# Readable system report\nnpx @ambicuity/systeminspector info\n\n# Full static data as JSON (useful for scripts and pipes)\nnpx @ambicuity/systeminspector\n\n# Interactive terminal inspector\nnpx @ambicuity/systeminspector interactive\n\n# Check support, tools, permissions, and diagnostics\nnpx @ambicuity/systeminspector doctor\n\n# Inspect capability metadata\nnpx @ambicuity/systeminspector capabilities --json\n\n# Select APIs and print JSON\nnpx @ambicuity/systeminspector get cpu,mem,osInfo --pretty\n\n# Print schema metadata\nnpx @ambicuity/systeminspector schema CpuData\n\n# Redact sensitive values from readable reports\nnpx @ambicuity/systeminspector info --redact\n\n# Help\nnpx @ambicuity/systeminspector --help\n```\n\n---\n\n## API Reference\n\nAll functions (except `version()` and `time()`) return Promises and accept an optional callback.\n\n### General\n\n| Function | Returns | Description |\n|---|---|---|\n| `version()` | `string` | Library version |\n| `time()` | `TimeData` | Current time, uptime, timezone |\n\n### System Hardware\n\n| Function | Returns |\n|---|---|\n| `system()` | `SystemData` |\n| `bios()` | `BiosData` |\n| `baseboard()` | `BaseboardData` |\n| `chassis()` | `ChassisData` |\n\n### CPU & Load\n\n| Function | Returns |\n|---|---|\n| `cpu()` | `CpuData` |\n| `cpuFlags()` | `string` |\n| `cpuCache()` | `CpuCacheData` |\n| `cpuCurrentSpeed()` | `CpuCurrentSpeedData` |\n| `cpuTemperature()` | `CpuTemperatureData` |\n| `currentLoad()` | `CurrentLoadData` |\n| `fullLoad()` | `number` |\n\n### Memory & Battery\n\n| Function | Returns |\n|---|---|\n| `mem()` | `MemData` |\n| `memLayout()` | `MemLayoutData[]` |\n| `battery()` | `BatteryData` |\n\n### Graphics & Peripherals\n\n| Function | Returns |\n|---|---|\n| `graphics()` | `GraphicsData` |\n| `usb()` | `UsbData[]` |\n| `printer()` | `PrinterData[]` |\n| `audio()` | `AudioData[]` |\n| `bluetoothDevices()` | `BluetoothDeviceData[]` |\n\n### Operating System\n\n| Function | Returns |\n|---|---|\n| `osInfo()` | `OsData` |\n| `versions()` | `VersionData` |\n| `shell()` | `string` |\n| `uuid()` | `UuidData` |\n| `users()` | `UserData[]` |\n\n### File System & Disks\n\n| Function | Returns |\n|---|---|\n| `fsSize()` | `FsSizeData[]` |\n| `fsOpenFiles()` | `FsOpenFilesData` |\n| `blockDevices()` | `BlockDevicesData[]` |\n| `fsStats()` | `FsStatsData` |\n| `disksIO()` | `DisksIoData` |\n| `diskLayout()` | `DiskLayoutData[]` |\n\n### Network & Wi-Fi\n\n| Function | Returns |\n|---|---|\n| `networkInterfaces()` | `NetworkInterfacesData[]` |\n| `networkInterfaceDefault()` | `string` |\n| `networkGatewayDefault()` | `string` |\n| `networkStats()` | `NetworkStatsData[]` |\n| `networkConnections()` | `NetworkConnectionsData[]` |\n| `wifiNetworks()` | `WifiNetworkData[]` |\n| `wifiInterfaces()` | `WifiInterfaceData[]` |\n| `wifiConnections()` | `WifiConnectionData[]` |\n\n### Processes & Services\n\n| Function | Returns |\n|---|---|\n| `processes()` | `ProcessesData` |\n| `processLoad()` | `ProcessesProcessLoadData[]` |\n| `services()` | `ServicesData[]` |\n\n### Internet\n\n| Function | Returns |\n|---|---|\n| `inetChecksite()` | `InetChecksiteData` |\n| `inetLatency()` | `number \\| null` |\n\n### Docker & VirtualBox\n\n| Function | Returns |\n|---|---|\n| `dockerInfo()` | `DockerInfoData` |\n| `dockerImages()` | `DockerImageData[]` |\n| `dockerContainers()` | `DockerContainerData[]` |\n| `dockerContainerStats()` | `DockerContainerStatsData[]` |\n| `dockerContainerProcesses()` | `DockerContainerProcessData[]` |\n| `dockerVolumes()` | `DockerVolumeData[]` |\n| `dockerAll()` | `any[]` |\n| `vboxInfo()` | `VboxInfoData[]` |\n\n### Aggregate Helpers\n\n| Function | Returns | Description |\n|---|---|---|\n| `getStaticData()` | `StaticData` | All static hardware/OS data in one call |\n| `getDynamicData()` | `DynamicData` | All dynamic/runtime data in one call |\n| `getAllData()` | `AllData` | Combined static + dynamic data |\n| `get(valueObject)` | `object` | Selective data retrieval with field filtering |\n| `observe(valueObject, interval, cb)` | `ObserveHandle` | Periodic observation with change detection |\n\n### Diagnostics\n\n| Function | Returns | Description |\n|---|---|---|\n| `diagnostics()` | `DiagnosticData[]` | Non-breaking diagnostic records |\n| `diagnostics({ sinceLastCall: true })` | `DiagnosticData[]` | Drain diagnostics recorded since the previous call |\n| `clearDiagnostics()` | `void` | Clear diagnostic buffer |\n| `onDiagnostic(cb)` | `() => void` | Subscribe to diagnostic records |\n\n```js\nawait si.diskLayout();\nconsole.log(si.diagnostics()); // check for missing tools, permission issues, etc.\nsi.clearDiagnostics();\n```\n\n### Capabilities\n\nUse capabilities before collecting data when you need to explain missing values or build support UIs.\n\n```js\nconst all = await si.capabilities();\nconst docker = await si.capability('dockerContainers');\n```\n\nCapability records include the function name, platform, required tools, detected tools, permission hints, support status, and confidence.\n\n### Options, Envelopes, and Redaction\n\nExisting return shapes remain unchanged. Newer APIs can opt into metadata with an options object while keeping callbacks last.\n\n```js\nconst cpu = await si.cpu({ timeoutMs: 3000 });\n\nconst detailed = await si.cpu({\n  envelope: true,\n  timeoutMs: 3000,\n  redact: true\n});\n\nconsole.log(detailed.data);\nconsole.log(detailed.diagnostics);\n```\n\nRedaction can hide serial numbers, MAC addresses, usernames, IP addresses, UUIDs, and process arguments when supported by the call path.\n\n### Watch and Schemas\n\n```js\nfor await (const snapshot of si.watch({ cpuCurrentSpeed: '*', mem: '*' }, { intervalMs: 1000 })) {\n  console.log(snapshot);\n}\n\nconsole.log(si.schemaVersion());\nconsole.log(si.getSchema('CpuData'));\n```\n\n---\n\n## Architecture\n\n```\nsysteminspector/\n├── src/                    # TypeScript source (24 modules)\n│   ├── index.ts            # Public API — exports all 58+ functions\n│   ├── cli.ts              # CLI entry point (bin: systeminspector)\n│   ├── types.ts            # Shared type definitions\n│   ├── util.ts             # Internal utilities (exec, parsing, caching)\n│   ├── cpu.ts              # CPU inspection\n│   ├── memory.ts           # Memory inspection\n│   ├── osinfo.ts           # OS information\n│   ├── network.ts          # Network interfaces and stats\n│   ├── filesystem.ts       # Filesystem and disk inspection\n│   ├── processes.ts        # Process and service inspection\n│   ├── docker.ts           # Docker container inspection\n│   ├── graphics.ts         # GPU and display inspection\n│   ├── wifi.ts             # Wi-Fi network inspection\n│   ├── system.ts           # System/BIOS/baseboard/chassis\n│   ├── battery.ts          # Battery status\n│   ├── bluetooth.ts        # Bluetooth device discovery\n│   ├── audio.ts            # Audio device inspection\n│   ├── printer.ts          # Printer inspection\n│   ├── usb.ts              # USB device inspection\n│   ├── internet.ts         # Internet connectivity checks\n│   ├── users.ts            # User session inspection\n│   ├── virtualbox.ts       # VirtualBox VM inspection\n│   ├── dockerSocket.ts     # Docker socket communication\n│   └── bluetoothVendors.ts # Bluetooth vendor OUI database\n├── dist/                   # Compiled output (CommonJS + declarations)\n├── test/                   # Tests\n│   ├── index.test.ts       # Vitest unit tests\n│   ├── ci.ts               # CI smoke tests (runs against built dist)\n│   ├── test.ts             # Interactive test runner\n│   └── si.ts               # Test helper\n├── docs/                   # VitePress documentation site\n├── scripts/                # Build and verification scripts\n├── biome.json              # Biome linter/formatter configuration\n├── tsconfig.json           # TypeScript compiler configuration\n├── tsconfig.test.json      # TypeScript config for test files\n└── vitest.config.ts        # Vitest test configuration\n```\n\n---\n\n## Development\n\n### Build\n\n```bash\nnpm run build\n```\n\nCompiles TypeScript from `src/` to `dist/` using `tsc`.\n\n### Typecheck\n\n```bash\nnpm run typecheck          # source only\nnpm run typecheck:test     # source + tests\n```\n\n### Lint\n\n```bash\nnpm run lint               # check with Biome\nnpm run format             # auto-format with Biome\n```\n\n### Test\n\n```bash\nnpm test                   # Vitest unit tests\nnpm run test:ci            # CI smoke tests (requires built dist)\n```\n\n### Verify Release\n\n```bash\nnpm run verify:release     # full release verification suite\nnpm run verify:terminal    # terminal API smoke test\n```\n\n---\n\n## CI/CD\n\nGitHub Actions workflows:\n\n| Workflow | Trigger | Purpose |\n|---|---|---|\n| **CI** (`ci.yml`) | Push/PR to `main` | Lint, typecheck, build, test across Ubuntu/macOS/Windows × Node.js 20/22, plus a Node.js 18 packaged runtime smoke test |\n| **npm Publish** (`npm-publish.yml`) | GitHub Release/manual | Build, test, publish to npmjs with provenance and mirror to GitHub Packages |\n| **CodeQL** (`codeql.yml`) | Push/PR + weekly | Security analysis for JavaScript/TypeScript |\n| **Deploy Docs** (`deploy.yml`) | Push to `main` | Build and deploy VitePress site to GitHub Pages |\n\nGitHub Pages must be configured with **Source: GitHub Actions** in repository settings before the docs deployment can publish.\n\n---\n\n## Release Process\n\n1. Update version in `package.json`.\n2. Update `CHANGELOG.md`.\n3. Commit: `git commit -m \"chore: prepare vX.Y.Z release\"`.\n4. Tag: `git tag vX.Y.Z`.\n5. Push: `git push origin main && git push origin vX.Y.Z`.\n6. Create a GitHub Release from the tag — this triggers npm publish automatically.\n\nFor the scoped npm package, publish to the public npm registry. This command pins the registry because some developer machines map the `@ambicuity` scope to GitHub Packages:\n\n```bash\nnpm publish --access public --provenance --registry=https://registry.npmjs.org/\n```\n\nFor release verification, check the tag and package availability first:\n\n```bash\ngit ls-remote --tags origin vX.Y.Z\nnpm view @ambicuity/systeminspector version --@ambicuity:registry=https://registry.npmjs.org/\n```\n\n### Dependency Audit\n\nThe published package has zero runtime dependencies. The documentation toolchain currently inherits a moderate dev-server advisory through VitePress/Vite/esbuild; npm does not provide an automatic fix for the current VitePress line. Do not run the VitePress development server on an untrusted network, and revisit this when VitePress publishes a compatible fixed release.\n\n---\n\n## Notes\n\n`fsStats()`, `disksIO()`, and `networkStats()` calculate per-second values from\nthe difference between calls. The first call returns `null` for transfer-rate\nfields; subsequent calls return rates based on elapsed time.\n\n```js\nconst si = require('@ambicuity/systeminspector');\n\nsetInterval(() => {\n  si.networkStats().then((data) => console.log(data));\n}, 1000);\n```\n\nSome APIs depend on platform tools such as PowerShell, `sensors`, Docker,\nVirtualBox, or `smartmontools`. Unsupported values may be returned as `null`,\nempty strings, or empty collections.\n\n### Platform Support Matrix\n\n| Function | Linux | macOS | Windows | BSD | SunOS | Android |\n|---|---:|---:|---:|---:|---:|---:|\n| `cpu`, `mem`, `osInfo`, `time`, `currentLoad` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `cpuTemperature` | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ |\n| `system`, `bios`, `baseboard`, `chassis` | ⚠️ | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ |\n| `fsSize`, `blockDevices`, `diskLayout` | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ |\n| `fsStats`, `disksIO` | ✅ | ✅ | ❌ | ⚠️ | ❌ | ✅ |\n| `networkInterfaces`, `networkStats` | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ |\n| `wifiNetworks`, `wifiInterfaces`, `wifiConnections` | ⚠️ | ⚠️ | ⚠️ | ❌ | ❌ | ⚠️ |\n| `docker*` | ⚠️ | ⚠️ | ⚠️ | ❌ | ❌ | ❌ |\n| `vboxInfo` | ⚠️ | ⚠️ | ⚠️ | ❌ | ❌ | ❌ |\n| `usb`, `audio`, `bluetoothDevices`, `printer`, `graphics` | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ |\n\nLegend: ✅ supported, ⚠️ partial or requires platform tools/permissions, ❌ unsupported or not currently implemented.\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n---\n\n## Security\n\nSee [SECURITY.md](SECURITY.md) for vulnerability reporting guidance.\n\n---\n\n## Sponsorship\n\nIf SystemInspector is useful to you, consider supporting the project:\n\n<a href=\"https://buymeacoffee.com/ritesh.rana\" target=\"_blank\"><img src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" height=\"50\"></a>\n\n---\n\n## License\n\n[MIT](LICENSE) — Copyright © 2026 Ritesh Rana.\n\n---\n\n## Maintainer\n\n**Ritesh Rana** — [GitHub](https://github.com/ambicuity)\n","readmeFilename":"README.md"}