laragems/os-info

Unified OS, CPU, memory, and runtime environment information for PHP applications.

Maintainers

Package info

github.com/laragems/os-info

pkg:composer/laragems/os-info

Transparency log

Statistics

Installs: 11

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.2.2 2026-06-17 09:12 UTC

This package is auto-updated.

Last update: 2026-07-17 09:16:42 UTC


README

laragems/os-info provides unified OS, CPU, memory, and runtime environment information for PHP applications. It is framework-free and has no third-party runtime dependencies.

Installation

composer require laragems/os-info

Quick Start

<?php

require __DIR__ . '/vendor/autoload.php';

use Laragems\OsInfo\OsInfo;
use Laragems\OsInfo\Platform;

$info = OsInfo::detect();

echo $info->name();              // Ubuntu, macOS, Microsoft Windows 11 Pro
echo $info->platform()->value;   // linux, macos, windows
echo $info->architecture();      // x86_64, arm64, x86
echo $info->memory()->totalBytes();
echo $info->cpu()->logicalCores();
echo $info->runtime()->currentUser();

if ($info->platform() === Platform::Linux) {
    echo 'Running on Linux';
}

API Usage

The detector returns an OperatingSystemInfo object with typed value objects for memory, CPU, and runtime environment:

<?php

use Laragems\OsInfo\OsInfo;

$os = OsInfo::detect();

printf(
    "%s %s on %s\n",
    $os->name(),
    $os->versionId() ?? 'unknown',
    $os->architecture(),
);

printf(
    "%d logical cores, %s RAM\n",
    $os->cpu()->logicalCores() ?? 0,
    number_format(($os->memory()->totalBytes() ?? 0) / 1024 / 1024 / 1024, 2) . ' GiB',
);

echo $os->runtime()->virtualizationType()->value;

Example output from a macOS GitHub Actions runner:

macOS 15.7.7 on arm64
3 logical cores, 7.00 GiB RAM
virtual_machine

You can also work with a plain array payload:

<?php

use Laragems\OsInfo\OperatingSystemInfo;
use Laragems\OsInfo\OsInfo;

$payload = OsInfo::detect()->toArray();

echo $payload[OperatingSystemInfo::NAME];       // Ubuntu
echo $payload[OperatingSystemInfo::PLATFORM];   // linux
echo $payload[OperatingSystemInfo::CPU]['model_name'];
echo json_encode($payload, JSON_PRETTY_PRINT);

Use Without Composer

Download or copy this package, then require its bundled autoloader:

<?php

require __DIR__ . '/os-info/src/autoload.php';

use Laragems\OsInfo\OsInfo;
use Laragems\OsInfo\OperatingSystemInfo;

$info = OsInfo::detect();
$payload = $info->toArray();

echo $payload[OperatingSystemInfo::PLATFORM];

CLI

Composer install:

vendor/bin/os-info
vendor/bin/os-info --json

No Composer:

php bin/os-info
php bin/os-info --json

Example output:

Operating System
  Name:              macOS
  Platform:          macos
  Version:           15.7.7
  Version ID:        15.7.7
  Architecture:      arm64
  Raw Architecture:  arm64
  Hostname:          sat12-bq154-dda80348-68c7-4cbc-a98f-b4df31f86538-0EC0A85A70EE.local
  Kernel:            Darwin 24.6.0
  Container:         no
  Uptime:            1m

CPU
  Model:             Apple M1 (Virtual)
  Vendor:            Apple
  Architecture:      arm64
  Logical Cores:     3
  Physical Cores:    3
  Frequency:         n/a
  Flags:             0

Runtime Environment
  Current User:      runner
  Privileged:        no
  Shell:             /bin/bash
  Timezone:          UTC
  Process Count:     412
  Container:         no
  Virtualized:       yes
  Virtualization:    virtual_machine
  PHP Version:       8.1.34
  PHP SAPI:          cli

Memory
  Total:             7.00 GiB
  Available:         3.14 GiB
  Free:              n/a
  Used:              3.86 GiB
  Swap Total:        n/a
  Swap Free:         n/a

Load Average
  1m:                36.66455078125
  5m:                22.47216796875
  15m:               9.47900390625

Available Data

  • OS name, platform, version, hostname, kernel, architecture
  • memory and swap/pagefile totals where available
  • CPU model, vendor, cores, frequency, and flags where available
  • runtime environment: user, privilege status, shell, timezone, process count, container/virtualization context, PHP version, PHP SAPI
  • uptime and load average where the platform exposes them

Top-level array keys are available as constants on OperatingSystemInfo, such as OperatingSystemInfo::PLATFORM, OperatingSystemInfo::MEMORY, OperatingSystemInfo::CPU, and OperatingSystemInfo::RUNTIME.

Target Platforms

  • Linux
  • macOS
  • Windows

Other platforms may still return fallback values. More platforms to be supported soon.

Development

composer dump-autoload --optimize --strict-psr
composer validate --strict
composer test
php bin/os-info --json