One small binary that inventories Linux, Windows, FreeBSD and macOS into GLPI 10+
— no agent runtime, no Perl, no dependencies.
A Go reimplementation of the FusionInventory/GLPI inventory agent. It collects local hardware and software inventory and sends it to a GLPI 10+ server using the native JSON protocol (with automatic fallback to the legacy OCS/FusionInventory XML), or writes it to a local file.
- 🚀 Single static binary — drop it in and run. No Perl, no modules, no
pkgtree. - 💻 One agent, four OSes — Linux, Windows, FreeBSD and macOS from the same source.
- 🔌 Drop-in for GLPI — reads the same
agent.cfgas the Perl agent and reuses your existing device IDs, so hosts aren't re-created as new assets. - 📦 Native packages —
.deb,.rpm, Arch.pkg.tar.zst, a Windows.zipand.msi(GPO/Intune-ready), a FreeBSD tarball, and a macOS.pkg/.dmg(Apple Silicon) — published on every release. - 🪶 Lightweight & quiet — runs on a schedule (systemd timer / Windows Service / cron), collects in parallel, and stays out of the way.
1. Install (grab a package from Releases):
# Debian / Ubuntu
sudo dpkg -i go-glpi-agent_*_amd64.deb
# RHEL / Rocky / Alma / Fedora / openSUSE
sudo rpm -i go-glpi-agent-*.x86_64.rpm
# Arch
sudo pacman -U go-glpi-agent-*-x86_64.pkg.tar.zstWindows: extract …_windows_amd64.zip and run install.ps1 (elevated), or deploy the …_x64.msi (msiexec /i …_x64.msi /qn SERVER=http://glpi/front/inventory.php — GPO/Intune/SCCM-ready).
FreeBSD: extract …_freebsd_amd64.tar.gz and follow INSTALL.md.
macOS (Apple Silicon): open go-glpi-agent_<version>_arm64.dmg and run the .pkg. (Intel Macs: build from source with make package-macos ARCH=x86_64 on an Intel host.)
2. Point it at your GLPI — edit /opt/go-glpi-agent/agent.cfg:
server = http://glpi.example.com/front/inventory.php
tag = datacenter-13. Schedule it (one inventory per hour):
sudo systemctl enable --now go-glpi-agent.timer # Linux
# Windows: install.ps1 already registered the Windows Service
# FreeBSD: enable the rc.d service or add a cron entry (see INSTALL.md)That's it — a computer asset appears in GLPI on the next run. Want to test first?
go-glpi-agent run --local /tmp/inv writes the inventory as XML without sending anything.
| OS | Arch | Inventory sources |
|---|---|---|
| Linux (16 distros) | amd64 | /sys, /proc, dmidecode, lsblk, lvs, dpkg/rpm/pacman |
| Windows 10/11 / Server | amd64 | WMI (Win32_*) + registry |
| FreeBSD 14 | amd64 | kenv (smbios), pkg, geom, sysctl, usbconfig |
| macOS 13+ | arm64 (Intel from source) | system_profiler, ioreg, sysctl, sw_vers |
Validated against a real GLPI 10 across all four. The full collector matrix, per-OS install details, CLI/config reference, build instructions and architecture live in docs/REFERENCE.md.
An independent .NET 10 Windows-first agent lives under
dotnet-glpi-agent/ (MSI + Windows Service + Vagrant lab).
It does not replace this Go agent; see that README and OpenSpec change
add-dotnet10-windows-agent.
- 📘 Full reference — collectors, install per OS, CLI, config, build, internals
- 📝 Changelog · 🤝 Contributing · 🧪 Test infrastructure
- 🪟 Dotnet Windows agent
License: GPLv2+.
