LICENSEWARE Collector Logo

LICENSEWARE Collector

Product Overview

What is LICENSEWARE Collector?
A free lightweight agent that collects system and software inventory data from your servers and securely transmits it to the LICENSEWARE ™ platform for software license compliance analysis.

Operating System Compatibility

Linux

  • x86_64 (64-bit) only
  • systemd required
  • RHEL, Ubuntu, Debian, etc.

Windows

  • x86_64 (64-bit) only
  • Windows 7 SP1+ (Desktop)
  • Windows Server 2012 R2+

macOS

  • Intel & Apple Silicon
  • macOS 10.15+
  • launchd service

Network Requirements

  • api.licenseware.ioHTTPS 443
    Primary API for data ingestion and configuration
  • cdn.licenseware-collector.comHTTPS 443
    Fetches static assets and updates
  • github.comHTTPS 443
    Downloads dependencies (installation only)

System Requirements

  • Architecture
    64-bit only (32-bit not supported)
  • Disk Space
    ~100 MB for binaries and temp files
  • Memory
    Minimal (~50 MB during operation)

Direct Downloads

Download the installer package for your operating system and architecture. Packages never contain an enrollment token — you supply it at install time.

Windows

Download .msi

x64 (64-bit)

Linux

Debian / Ubuntu · RHEL / Fedora / SUSE

macOS

Download .pkg

Intel & Apple Silicon

uninstall.command

The /d/latest/ links above always resolve to the current release. To pin a specific version, replace latest with the release tag, e.g. https://cdn.licenseware-collector.com/d/v1.2.3/…

Installation Guide

1

Get Your Token

  1. Go to LICENSEWARE and sign in or create a free account
  2. Navigate to LC App and go to API Keys tab
  3. Click Create Key, configure it, and copy the token
2

Download and Install

Linux (.deb / .rpm)

⚠️ Requires root privileges

  1. Download the package for your architecture
    curl -fsSLO https://cdn.licenseware-collector.com/d/latest/licenseware-collector_amd64.deb
  2. Install the package
    sudo apt install ./licenseware-collector_amd64.deb

    On RHEL / Fedora / SUSE use sudo dnf install ./licenseware-collector_amd64.rpm. Installing stages the service but does not start it — the next step does.

  3. Enroll the machine and start the service
    sudo TOKEN=<enrollment-token> licenseware-collector register

Full Command Reference

For environments with a proxy or custom CA certificate, export the variables and pass them through to register with sudo -E:

export HTTPS_PROXY="http://proxy.corp.com:8080" # optional
export NO_PROXY="localhost,127.0.0.1" # optional
export CA_CERT_PATH=/etc/ssl/certs/corp-ca.pem # optional
sudo -E TOKEN=<enrollment-token> licenseware-collector register

Or pass the CA certificate as an explicit flag:

sudo TOKEN=<enrollment-token> licenseware-collector register \
  --ca-cert /etc/ssl/certs/corp-ca.pem
Flag / VariableRequiredDescription
TOKENYesEnrollment token from the Licenseware platform, passed on the register command line. The aliases LICENSEWARE_ENROLL_TOKEN and ENROLL_TOKEN are also accepted.
--ca-cert / CA_CERT_PATHNoPath to PEM file with custom CA certificates (for on-prem / TLS inspection)
--env-fileNoPath to a file with environment variables to load
HTTPS_PROXYNoHTTP(S) proxy for outbound traffic. Automatically saved to the service config.
NO_PROXYNoComma-separated list of hosts to bypass the proxy

macOS (.pkg)

⚠️ Requires root privileges

  1. Install the package
    sudo installer -pkg LicensewareCollector.pkg -target /
  2. Enroll the machine and start the service
    sudo TOKEN=<enrollment-token> \
      /usr/local/licenseware-collector/seed/licenseware-collector register

Windows

⚠️ Requires Administrator privileges

  1. Download the installer
    Invoke-WebRequest -Uri https://cdn.licenseware-collector.com/d/latest/LicensewareCollector.msi `
      -OutFile LicensewareCollector.msi
  2. Install, passing the enrollment token
    msiexec /i LicensewareCollector.msi TOKEN=<enrollment-token>
    The token is marked as a secure property, so it is never written to the MSI log. Run the same command with a newer .msi to upgrade in place.

Full Command Reference

When enrolling manually (a tokenless MSI install), the token is supplied through the environment and the remaining options as flags:

$env:TOKEN = "<enrollment-token>"
& "$env:ProgramFiles\Licenseware\LicensewareCollector.exe" register `
  --ca-cert <PATH> --env-file <PATH>
FlagEnv VariableRequiredDescription
TOKEN= (MSI property)TOKENYesEnrollment token from the Licenseware platform. Pass TOKEN= to msiexec, or set TOKEN before running register manually. The older ENROLLTOKEN= property is still accepted.
--ca-certCA_CERT_PATHNoPath to PEM file with custom CA certificates (for on-prem / TLS inspection)
--env-file, -eNoPath to a file with environment variables to load
HTTPS_PROXYNoHTTP(S) proxy for outbound traffic. Automatically saved to the service config.
NO_PROXYNoComma-separated list of hosts to bypass the proxy

Full Example with Proxy and Custom CA

$env:HTTPS_PROXY = "http://proxy.corp.com:8080"
$env:NO_PROXY = "localhost,127.0.0.1"
$env:TOKEN = "<enrollment-token>"
& "$env:ProgramFiles\Licenseware\LicensewareCollector.exe" register `
  --ca-cert "C:\certs\internal-ca.pem"

Proxy Configuration

If your network requires an HTTP proxy for outbound connections, the collector natively supports standard proxy environment variables for all egress traffic.

VariableDescriptionExample
HTTPS_PROXYProxy for HTTPS traffic (used for all collector communication)http://proxy.corp.com:8080
HTTP_PROXYProxy for plain HTTP traffichttp://proxy.corp.com:8080
NO_PROXYComma-separated list of hosts to bypass the proxylocalhost,127.0.0.1,.internal.corp

Authenticated proxies are supported using the format http://user:password@proxy.corp.com:8080.

Setup

Add the proxy variables to the collector environment file on the target machine. Each line uses KEY=value format.

Linux
HTTPS_PROXY=http://proxy.corp.com:8080
NO_PROXY=localhost,127.0.0.1
File: /etc/default/licenseware-collector
macOS
HTTPS_PROXY=http://proxy.corp.com:8080
NO_PROXY=localhost,127.0.0.1
File: /usr/local/etc/licenseware-collector
Windows
HTTPS_PROXY=http://proxy.corp.com:8080
NO_PROXY=localhost,127.0.0.1
File: C:\ProgramData\Licenseware\collector.env

Applying Changes

After modifying the environment file, restart the collector service for changes to take effect:

Linux
sudo systemctl restart licenseware-collector
macOS
sudo launchctl kickstart -k system/io.licenseware.licenseware-collector
Windows (Administrator PowerShell)
Restart-Service licenseware-collector

Custom CA Certificates

Corporate proxies that perform TLS inspection inject their own CA certificate into the chain. The collector must be configured to trust these certificates, otherwise all HTTPS connections will fail.

OptionDescriptionExample
CA_CERT_PATHEnvironment variable pointing to a PEM file with additional CA certificates/etc/ssl/corp-ca.pem
--ca-certCLI flag (overrides CA_CERT_PATH when set)--ca-cert /etc/ssl/corp-ca.pem

Custom certificates are appended to the system certificate pool, not replacing it. All standard system CAs remain trusted.

Setup

Add the CA_CERT_PATH variable to the collector environment file, pointing to the PEM file containing your corporate CA certificate(s).

Linux
CA_CERT_PATH=/etc/ssl/certs/corp-ca.pem
File: /etc/default/licenseware-collector
macOS
CA_CERT_PATH=/usr/local/etc/ssl/corp-ca.pem
File: /usr/local/etc/licenseware-collector
Windows
CA_CERT_PATH=C:\ProgramData\Licenseware\corp-ca.pem
File: C:\ProgramData\Licenseware\collector.env

Applying Changes

After modifying the environment file, restart the collector service for changes to take effect:

Linux
sudo systemctl restart licenseware-collector
macOS
sudo launchctl kickstart -k system/io.licenseware.licenseware-collector
Windows (Administrator PowerShell)
Restart-Service licenseware-collector

Uninstall Guide

Linux

  1. Debian / Ubuntu
    sudo apt remove licenseware-collector
  2. RHEL / Fedora / SUSE
    sudo dnf remove licenseware-collector

Removing the package stops the service and runs the uninstaller for you. Do not call licenseware-collector uninstall directly on a package-managed host — it refuses and points you back at the package manager.

macOS

Download uninstall.command from the Downloads section and double-click it, or run it from Terminal:

sudo LICENSEWARE_UNINSTALL_FROM_PACKAGE=1 \
  /usr/local/libexec/licenseware-collector/licenseware-collector uninstall --force
sudo rm -rf /usr/local/licenseware-collector
sudo pkgutil --forget io.licenseware.collector

Windows (Administrator PowerShell)

  1. Uninstall the package
    msiexec /x LicensewareCollector.msi
  2. Or remove it from the UI:
    Settings > Apps > Installed apps
Uninstalling stops the service, removes it, and deletes the collector's runtime files and enrollment token from the machine. To keep collected state on disk, add --preserve-state; to also remove the bundled osquery, add --remove-osquery.

API Endpoints

All communication uses HTTPS with Bearer token authentication.

MethodEndpointPurposeFrequency
POST/agent/registerRegister agentOnce
GET/agent/configsFetch configsEvery 30m
GET/agent/catalogsGet catalogsEvery 30m
POST/agent/ingestUpload dataCyclical

Data Collection Process

What You Do

Download
Collector
Register
Collector
✓ Done!

What the Collector Does

Fetch Query
Catalogs
Execute
Queries
Upload to
LICENSEWARE ™

Data Collection Catalogs

System Inventory

Every 24 hours

Comprehensive system, hardware, and software inventory collection

Data CollectedLinuxWindowsmacOS
System Info (hostname, CPU, RAM)
Installed Programs

Software Usage

Every 4 hours

Software usage patterns and execution history

Data CollectedLinuxWindowsmacOS
Execution History (Prefetch, BAM, Access Times)

Runtime State

Every 30 minutes

Running processes, services, and active sessions

Data CollectedLinuxWindowsmacOS
Running Processes & Active Users

Installation Paths

Linux

Binary
/usr/libexec/licenseware-collector/licenseware-collector
Service File
/etc/systemd/system/licenseware-collector.service
Environment File
/etc/default/licenseware-collector

Windows

Binary
C:\ProgramData\Licenseware\bin\LicensewareCollector.exe
Environment File
C:\ProgramData\Licenseware\collector.env

macOS

Binary
/usr/local/libexec/licenseware-collector/licenseware-collector
LaunchAgent/LaunchDaemon
/Library/LaunchDaemons/io.licenseware.licenseware-collector.plist
Environment File
/usr/local/etc/licenseware-collector

Quick Reference

Agent Intervals

  • Config Refresh: 30 mins
  • Catalog Check: 30 mins
  • Failed File Cleanup: 6 hours

Service Commands

  • TOKEN=<enrollment-token> licenseware-collector register
  • licenseware-collector status
  • licenseware-collector stop
  • licenseware-collector run-once

Logs & Troubleshooting

The collector writes all logs to standard error. How you access them depends on the operating system and service manager.

Log Level

The verbosity is controlled by the LOG_LEVEL environment variable in the collector environment file. The default is error.

LevelDescription
debugMost verbose — all messages including internal state
infoOperational messages (startup, config reload, ingestion cycles)
warnNon-critical issues that may need attention
errorFailures only (default)
criticalFatal errors that stop the service

Linux

On systemd-based systems, logs are captured by the journal automatically.

Follow logs in real time:
journalctl -u licenseware-collector -f
View logs from the last hour:
journalctl -u licenseware-collector --since "1 hour ago"

macOS

The launchd service writes both stdout and stderr to a single log file.

Follow logs in real time:
tail -f /var/log/licenseware-collector.log
View full log file:
cat /var/log/licenseware-collector.log

Windows

The Windows service itself does not write application logs to a file or to the Windows Event Log. Use the commands below in an Administrator PowerShell to investigate the service: check its state, inspect service start/stop/crash records that Windows itself emits, and capture full application output by running the collector interactively.

1. Check the collector's own service health:
licenseware-collector status
2. Confirm the Windows service is registered and running:
Get-Service licenseware-collector | Format-List Name, Status, StartType, DisplayName
3. Inspect the service binary path, account, and failure recovery configuration:
sc.exe qc licenseware-collector ; sc.exe qfailure licenseware-collector
4. Pull Service Control Manager events (start, stop, crash, recovery) from the System Event Log for the last 24 hours:
Get-WinEvent -FilterHashtable @{
  LogName   = 'System'
  StartTime = (Get-Date).AddDays(-1)
  ProviderName = 'Service Control Manager'
} | Where-Object { $_.Message -match 'licenseware-collector' } |
  Format-List TimeCreated, Id, LevelDisplayName, Message
5. Look for application crash records (Windows Error Reporting / .NET runtime faults) tied to the binary:
Get-WinEvent -FilterHashtable @{
  LogName   = 'Application'
  StartTime = (Get-Date).AddDays(-7)
} | Where-Object { $_.Message -match 'LicensewareCollector' } |
  Format-List TimeCreated, ProviderName, Id, LevelDisplayName, Message
6. Or browse interactively in Event Viewer (Windows Logs → System / Application):
eventvwr.msc
7. Capture the collector's full application output by stopping the service and running a single collection cycle interactively — all logs stream to the console:
Stop-Service licenseware-collector
$env:LOG_LEVEL = 'debug'
licenseware-collector run-once --env-file C:\ProgramData\Licenseware\collector.env *>&1 |
  Tee-Object -FilePath "$env:USERPROFILE\licenseware-collector-debug.log"
Start-Service licenseware-collector
The *>&1 redirection merges every PowerShell stream (stdout, stderr, warnings, verbose, debug) so nothing the collector writes is lost.
8. Read the collector's own service log. It writes to the Windows Event Log under the licenseware-collector provider — stderr is not captured for services, so this is the primary source once the service is running:
Get-WinEvent -ProviderName "licenseware-collector" -MaxEvents 50
9. To debug the installation itself, re-run the MSI with verbose logging and inspect the resulting file. The enrollment token is a secure property and is never written to this log:
msiexec /i LicensewareCollector.msi /l*v install.log
Get-Content install.log -Tail 200
10. If the installer finishes but no service appears, read the installer's own log. It records what the setup helper and register printed, including the reason enrollment failed, and it survives the rollback that removes everything else. The enrollment token is never written to it:
Get-Content C:\ProgramData\Licenseware\setup.log