Metadata-Version: 2.4
Name: llmwho
Version: 0.1.0
Summary: Passive LLM endpoint identity and stability instrumentation
Project-URL: Homepage, https://github.com/tcztzy/llmwho
Project-URL: Repository, https://github.com/tcztzy/llmwho
Project-URL: Issues, https://github.com/tcztzy/llmwho/issues
Author: LLMWho contributors
License-Expression: MIT
License-File: LICENSE
Keywords: fingerprinting,llm,middleware,observability,stability
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.10
Provides-Extra: test
Requires-Dist: httpx>=0.24; extra == 'test'
Requires-Dist: requests>=2.28; extra == 'test'
Description-Content-Type: text/markdown

# llmwho

Passive LLM endpoint identity and stability instrumentation for Python.

```bash
pip install llmwho
```

```python
import llmwho

handle = llmwho.init()
```

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

Run an explicit OpenAI-compatible compatibility canary:

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

Inspect local history:

```bash
llmwho summary
llmwho dashboard
```

Identity results are probabilistic evidence, not cryptographic attestation.
Version 0.1 uses response model metadata; 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](https://github.com/tcztzy/llmwho).
