use-cli.com
Windows Package Automation

Professional software deployment for Windows infrastructure

use-cli.com provides a stable REST API, manifest-driven install and uninstall actions, and a CLI client for automated package workflows in enterprise environments.

Manifest-Driven Actions

Each package supports deterministic install and uninstall command execution paths.

CLI + API

Use the REST API directly or run the packaged client for scripted workstation automation.

Ansible Ready

Integrates with an Ansible module for repeatable and traceable deployments.

Security: how and why it works

use-cli.com does not redistribute installer files. The server stores only metadata — JSON manifests with instructions. All downloading and execution happens locally, on your Windows machine.

No installer redistribution

When you request a manifest, the API returns a URL pointing directly to the vendor's official download server (e.g. 7-zip.org, github.com/…). use-cli.com never downloads, modifies, or hosts executable files. The client fetches installers straight from the original source.

curl https://use-cli.com/api/v1/packages/7zip/install-manifest
# →
{
  "download_url": "https://www.7-zip.org/a/7z2407-x64.exe",
  "sha256_hash": "a1b2c3d4e5f6..."
}

SHA-256 verification before every execution

Every manifest includes the SHA-256 hash of the original installer, recorded when the package was added. After downloading, the client computes the hash locally and compares it against the manifest. A mismatch immediately aborts the installation and deletes the file — catching both tampered files and corrupted downloads.

# Client flow (pseudocode)
1. GET /api/v1/packages/7zip/install-manifest
2. Download installer → %TEMP%\7z2407-x64.exe
3. sha256(%TEMP%\7z2407-x64.exe) == manifest.sha256_hash?
   YES → run setup.exe /S
   NO  → ABORT, delete file, report error

Manifests are pure JSON — no executable code from the server

The API responds exclusively with structured JSON: URL, hash, install switches, registry keys for uninstall. The server never sends a script, PowerShell code, or binary file. All execution decisions are made by the client running locally.

Open-source and auditable

Both the API server and the CLI client are fully open-source. Anyone can inspect exactly which URL is called, how the hash is verified, and what gets written to the log. No need to take our word for it — the code is available for review.

Local audit log for every run

The client and Ansible module log every installation: timestamp, hostname, user, package, version, result, and any error message. Logs stay on your machine or in your Ansible Tower/AWX database — use-cli.com does not collect data about your installations.

# Example log entry
{
  "timestamp": "2026-05-16T10:42:00Z",
  "hostname": "workstation-01",
  "package": "7zip",
  "version": "24.07",
  "status": "success",
  "requested_by": "ansible"
}

Enterprise: internal mirror under your control

For organisations with air-gapped networks, manifests support an optional cached_url field — a URL pointing to your internal server (Nexus, Artifactory, internal share). use-cli.com never populates this field; your team sets it when standing up an internal repository. Installers never leave your network.

Quick Start

Validate service availability, inspect package data, and retrieve manifests in under a minute.

1. Check service health

curl https://use-cli.com/health

2. List packages

curl https://use-cli.com/api/v1/packages

3. Inspect a package

curl https://use-cli.com/api/v1/packages/7zip

4. Retrieve manifests

curl https://use-cli.com/api/v1/packages/7zip/install-manifest
curl https://use-cli.com/api/v1/packages/7zip/uninstall-manifest

5. Download client

curl -LO https://use-cli.com/downloads/clinstall.exe

6. Download Ansible module

curl -LO https://use-cli.com/downloads/ansible/windows_package_installer.ps1

API Documentation

REST endpoints for package metadata, manifests, categories, and service statistics.

GET /packages

List all available packages.

curl https://use-cli.com/api/v1/packages

GET /packages/{name}

Return package details for one package key.

curl https://use-cli.com/api/v1/packages/7zip

GET /packages/{name}/install-manifest

Return command, switches, and metadata required for installation.

curl https://use-cli.com/api/v1/packages/7zip/install-manifest

GET /packages/{name}/uninstall-manifest

Return command, switches, and metadata required for removal.

curl https://use-cli.com/api/v1/packages/7zip/uninstall-manifest

GET /categories

List all package categories.

curl https://use-cli.com/api/v1/categories

GET /stats

Return package and installation statistics.

curl https://use-cli.com/api/v1/stats

Example response

{
  "success": true,
  "data": {
    "name": "7zip",
    "display_name": "7-Zip",
    "description": "Open source file archiver",
    "category": "Utilities",
    "official_url": "https://www.7-zip.org"
  }
}

Error response

{
  "success": false,
  "error": "Package not found"
}

Ansible Integration

Recommended method for orchestrated server fleets and repeatable setup pipelines.

Install Ansible

pip install ansible

Download module into a dedicated Ansible modules folder

mkdir -p ./modules
curl -L -o ./modules/windows_package_installer.ps1 \
    https://use-cli.com/downloads/ansible/windows_package_installer.ps1

Direct module link: /downloads/ansible/windows_package_installer.ps1

Tip: Run playbook with -M ./modules so Ansible uses this module copy.

Create inventory file

[windows]
server1 ansible_host=192.168.1.100 ansible_user=Administrator
server2 ansible_host=192.168.1.101 ansible_user=Administrator

Example playbook

---
- name: Install software packages
  hosts: windows
  vars:
    api_url: "https://use-cli.com/api/v1"
  tasks:
    - name: Install 7-Zip
      windows_package_installer:
        api_url: "{{ api_url }}"
        package_name: "7zip"
        state: "present"

Run deployment

ansible-playbook -i hosts.ini deploy.yml -M ./modules

If -vvv output shows module path in .../site-packages/ansible/modules/, your custom module directory is not being used.

System Status

Current service snapshot for operations and deployment teams.

API Status: Online and operational
Database: PostgreSQL 18.3
Environment: Production-ready
Ansible Module: Available and tested