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.
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
Identity results are probabilistic evidence, not cryptographic attestation.
Version 0.3 uses the response body's declared model field and ignores
undocumented model response headers; its 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
Release history Release notifications | RSS feed
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.3.0.tar.gz.
File metadata
- Download URL: llmwho-0.3.0.tar.gz
- Upload date:
- Size: 24.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7be91fa1bcb439546f88862ca2355b722149e28ad934057c22af42632979d982
|
|
| MD5 |
fc04ddac8f907863815b53a9af3c7190
|
|
| BLAKE2b-256 |
285a4b31ae5d18a5dda356182bdd63fb4499c3218af64cdf8a1b8c01987a6c72
|
Provenance
The following attestation bundles were made for llmwho-0.3.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.3.0.tar.gz -
Subject digest:
7be91fa1bcb439546f88862ca2355b722149e28ad934057c22af42632979d982 - Sigstore transparency entry: 2216576626
- Sigstore integration time:
-
Permalink:
tcztzy/llmwho@50dd1b7e4d6710235a308026b79ece8973a492eb -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/tcztzy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@50dd1b7e4d6710235a308026b79ece8973a492eb -
Trigger Event:
push
-
Statement type:
File details
Details for the file llmwho-0.3.0-py3-none-any.whl.
File metadata
- Download URL: llmwho-0.3.0-py3-none-any.whl
- Upload date:
- Size: 31.9 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 |
c9544b01eef2eb64d0d6efefa1ab72b7666344fea9c9bae96e439d60b21990c4
|
|
| MD5 |
6c8c242ebb41bd26f9d1a879a5c473d7
|
|
| BLAKE2b-256 |
052f9cdd3bf411a3551e6f43493af6e1290ab1656d5a20257e4a9b5838a4b15e
|
Provenance
The following attestation bundles were made for llmwho-0.3.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.3.0-py3-none-any.whl -
Subject digest:
c9544b01eef2eb64d0d6efefa1ab72b7666344fea9c9bae96e439d60b21990c4 - Sigstore transparency entry: 2216576641
- Sigstore integration time:
-
Permalink:
tcztzy/llmwho@50dd1b7e4d6710235a308026b79ece8973a492eb -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/tcztzy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@50dd1b7e4d6710235a308026b79ece8973a492eb -
Trigger Event:
push
-
Statement type: