Pulse

Usage analytics for CLI tools and AI agents. Tracks commands, machine fingerprints, and version adoption without collecting PII.

Install

bash
npm install @fingerprintiq/pulse

Quick start

typescript
import { Pulse } from '@fingerprintiq/pulse';const pulse = new Pulse({ apiKey: 'fiq_live_...', tool: 'my-cli', version: '1.0.0',});await pulse.track('deploy', { target: 'production', durationMs: 3400 });await pulse.shutdown();

Python

Install the Python SDK:

bash
pip install fingerprintiq

Use it from any Python CLI:

python
from fingerprintiq.pulse import Pulsepulse = Pulse(api_key="fiq_live_...", tool="my-cli", version="1.2.3")pulse.track("deploy", metadata={"duration_ms": 1234, "success": True})pulse.shutdown() # or let atexit handle it on process exit

Honors DO_NOT_TRACK=1 and FINGERPRINTIQ_OPTOUT=1 by default. Set respect_opt_out=False to override.

Machine fingerprints are byte-compatible with the Node SDK — users who run both a Node and a Python CLI on the same machine show up as a single entity in Pulse.

Privacy

Pulse respects DO_NOT_TRACK=1 and FINGERPRINTIQ_OPTOUT=1. All hardware identifiers (hostname, MAC addresses) are SHA-256 hashed before leaving the machine. The SDK never blocks your CLI or keeps the process alive.

What you get

  • Unique machine counts (by hardware fingerprint, not IP)
  • Command frequency, error rates, durations
  • Environment breakdown (CI vs local vs container)
  • Version adoption curves
  • Machine retention (7d/30d return rates)

Live demo

Try it at pulse-demo.fingerprintiq.com