--- id: py-machineid version: "1.0.0" license: MIT license_treatment: permissive maintenance: aging --- # py-machineid — Get the unique machine ID of any host (without admin privileges) License: permissive · Maintenance: aging · Downloads: 851.8K/mo ## What it is and what it does py-machineid is a lightweight Python library that retrieves a unique identifier for the host machine without requiring administrator privileges. It provides two main functions: id() returns the raw machine GUID, and hashed_id() returns a cryptographic hash of that identifier, optionally scoped to a specific application. On Windows, the library can query the registry to construct the identifier; this behavior can be disabled via a kwarg for security-conscious deployments. The package is typically used for device licensing, telemetry, or machine fingerprinting in applications that need to identify or track individual hosts. It has one runtime dependency (winregistry) and installs as a pure Python wheel with low friction. The maintenance status is aging—the last commit was 2025-12-02—so updates and bug fixes may come slowly, but the repository remains active and has not been archived. Use it for: - Implement per-device licensing checks in software distribution systems to bind licenses to specific machines. - Generate stable, anonymized device identifiers for telemetry or analytics without exposing raw hardware details. - Build machine fingerprinting for security audits or compliance logging without requiring elevated privileges. - Scope application-specific identifiers to ensure the same device gets a unique ID per application. - Disable registry queries on Windows to prevent machine fingerprints from being manually modified by users. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Retrieves the unique machine ID of a host without requiring admin privileges, with options for raw GUID or hashed anonymized identifiers. Yes, if you need a simple, low-friction way to retrieve machine identifiers for licensing or telemetry. The MIT license is permissive, install friction is minimal, and there are no known vulnerabilities. However, aging maintenance means you should verify that the library's behavior on your target platforms matches your security and accuracy requirements before relying on it in production. ## Install pip install py-machineid uv add py-machineid poetry add py-machineid ## Installing py-machineid Before you install: Low install friction with a single runtime dependency (winregistry). Maintenance status is aging—last commit was 2025-12-02—so expect slower response to issues, though the repository remains active and not archived. License in practice: MIT license permits free use, modification, and distribution with minimal restrictions, making it suitable for both open-source and commercial projects. Quickstart: pip install py-machineid import machineid print(machineid.id()) print(machineid.hashed_id('myappid')) Verify before relying: - Exact behavior and platform coverage across Windows, macOS, and Linux—documentation does not specify which platforms are supported or how fallback logic works. - Whether the hashed_id() function is cryptographically suitable for security-sensitive use cases or licensing enforcement. - Performance characteristics and any potential side effects of querying Windows registry when winregistry=True. ## Package facts - License: MIT (permissive) - Python support: unspecified - Install friction: low - Maintenance: aging - Downloads: 851.8K/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags machine id detection, unique device identifier, hardware fingerprint, system uuid retrieval, device identification, machine guid lookup, host identifier, device-identification, licensing [View on SkillFed](https://skillfed.io/packages/py-machineid) · [View on PyPI](https://pypi.org/project/py-machineid/)