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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e117163f650288c146503d4bbb1ff8cc3866310394b10f7b19cbfc4bfb722aa
|
|
| MD5 |
2d55255dfdc2c00bc4467aa2c00de1c1
|
|
| BLAKE2b-256 |
d9d656f8cdd61cc908e00fc0e95d58a690dc84ccaf9d9e44d5d09c1a69d6bd2a
|
Provenance
The following attestation bundles were made for llmwho-0.4.0.tar.gz:
Publisher:
release.yml on tcztzy/llmwho
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmwho-0.4.0.tar.gz -
Subject digest:
6e117163f650288c146503d4bbb1ff8cc3866310394b10f7b19cbfc4bfb722aa - Sigstore transparency entry: 2243834221
- Sigstore integration time:
-
Permalink:
tcztzy/llmwho@304764e0b5c6bb85b0ff9b7db5cbe273a8295c96 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/tcztzy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@304764e0b5c6bb85b0ff9b7db5cbe273a8295c96 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e8faf54b1d335d72ea351d5d3de2026f139531abf967c52b301ac391e33c5bd
|
|
| MD5 |
f8911d5a25c38d38d5dcdbac4ce9c8a6
|
|
| BLAKE2b-256 |
1ff87beaee0da4233a0fbf18645ce7a51e3e0c339aabe8f97662880489b62b95
|
Provenance
The following attestation bundles were made for llmwho-0.4.0-py3-none-any.whl:
Publisher:
release.yml on tcztzy/llmwho
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmwho-0.4.0-py3-none-any.whl -
Subject digest:
4e8faf54b1d335d72ea351d5d3de2026f139531abf967c52b301ac391e33c5bd - Sigstore transparency entry: 2243834539
- Sigstore integration time:
-
Permalink:
tcztzy/llmwho@304764e0b5c6bb85b0ff9b7db5cbe273a8295c96 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/tcztzy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@304764e0b5c6bb85b0ff9b7db5cbe273a8295c96 -
Trigger Event:
push
-
Statement type: