Skip to main content

Passive LLM endpoint identity and stability instrumentation

Project description

llmwho

Passive LLM endpoint identity and stability instrumentation for Python.

pip install llmwho
import llmwho

handle = llmwho.init()

Direct Anthropic Messages API calls need no LLMWho-specific wrapper:

import llmwho
from anthropic import Anthropic

llmwho.init()
client = Anthropic()
client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=64,
    messages=[{"role": "user", "content": "Hello"}],
)

One call instruments installed HTTPX (sync and async) and requests clients for recognized LLM routes. It writes content-free observations to ~/.llmwho/events.jsonl; it never sends active traffic. Calls are idempotent, streaming responses are not consumed, and handle.shutdown() safely restores only LLMWho-owned patches.

Send the same observations to a self-hosted Collector without changing request sites:

handle = llmwho.init(
    collector_url="http://127.0.0.1:7734",
    collector_token="…",
)

The remote queue is bounded, non-blocking, and fail-open. Native and OTLP modes are available; no Collector URL keeps the local JSONL default. Run the service with llmwho collector; deployment and security details are in the Collector guide.

The CLI also accepts content-free Claude Code and Codex lifecycle events: llmwho hook claude-code|codex --event EVENT. Project configuration and privacy details are in the agent hook guide.

Run an explicit OpenAI-compatible compatibility canary:

report = llmwho.probe(
    base_url="https://api.openai.com/v1",
    api_key="…",
    model="gpt-4o-mini",
)

Compare explicitly supplied output corpora without network or persistence:

report = llmwho.science.output_affinity_matrix({
    "reference": ["reference answer"],
    "endpoint": ["endpoint answer"],
})
print(report["evidence"]["matrix"][0][1])

The symmetric character-trigram distance measures surface style only. It does not prove model identity, distillation, or capability transfer. Full method and limits: Output-affinity matrix.

Inspect local history:

llmwho summary
llmwho dashboard

Version 0.4 records the response body's declared model field only as a provider declaration. It never turns that declaration into model identity or confidence. Identity remains unknown unless an independent calibrated detector supplies evidence. Undocumented model response headers are ignored; the smoke suite measures capability and does not uniquely identify arbitrary model weights. Raw prompts, responses, headers, query strings, and credentials are never stored.

Full documentation, research review, and source: github.com/tcztzy/llmwho.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llmwho-0.4.0.tar.gz (37.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llmwho-0.4.0-py3-none-any.whl (46.8 kB view details)

Uploaded Python 3

File details

Details for the file llmwho-0.4.0.tar.gz.

File metadata

  • Download URL: llmwho-0.4.0.tar.gz
  • Upload date:
  • Size: 37.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for llmwho-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6e117163f650288c146503d4bbb1ff8cc3866310394b10f7b19cbfc4bfb722aa
MD5 2d55255dfdc2c00bc4467aa2c00de1c1
BLAKE2b-256 d9d656f8cdd61cc908e00fc0e95d58a690dc84ccaf9d9e44d5d09c1a69d6bd2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for llmwho-0.4.0.tar.gz:

Publisher: release.yml on tcztzy/llmwho

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llmwho-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: llmwho-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 46.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for llmwho-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4e8faf54b1d335d72ea351d5d3de2026f139531abf967c52b301ac391e33c5bd
MD5 f8911d5a25c38d38d5dcdbac4ce9c8a6
BLAKE2b-256 1ff87beaee0da4233a0fbf18645ce7a51e3e0c339aabe8f97662880489b62b95

See more details on using hashes here.

Provenance

The following attestation bundles were made for llmwho-0.4.0-py3-none-any.whl:

Publisher: release.yml on tcztzy/llmwho

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page