Installation¶
whatifd is on PyPI as of v0.3.0. The brand and CLI command stay whatifd; the PyPI distribution name is whatifd (the bare whatifd slot was already taken on PyPI).
From PyPI¶
The runner and the four adapters publish as separate distributions so you only install the integrations you use. The line below installs everything:
uv pip install whatifd whatifd-langfuse whatifd-inspect-ai whatifd-phoenix whatifd-datadog
pip install whatifd whatifd-langfuse whatifd-inspect-ai whatifd-phoenix whatifd-datadog
pipx install whatifd
pipx inject whatifd whatifd-langfuse whatifd-inspect-ai
The CLI command is whatifd, even though the distribution is whatifd:
whatifd --help
whatifd fork --help
From source¶
git clone https://github.com/victoralfred/whatifd
cd whatifd
uv sync --all-extras --dev --group workspace
uv run whatifd --help
The --group workspace flag installs all four packages from the uv workspace as editable, so changes in packages/whatifd-langfuse/, packages/whatifd-phoenix/, and packages/whatifd-inspect-ai/ are picked up live.
Pick only what you need¶
The adapters are independent — install just the ones you use:
Distribution |
Why install it |
Optional? |
|---|---|---|
|
The runner core, the CLI, the report types, the schema |
required |
|
Langfuse |
only if you ingest from Langfuse |
|
Arize Phoenix / OpenInference |
only if you ingest from Phoenix |
|
Datadog LLM Observability |
only if you ingest from / report to Datadog (v0.3; |
|
Inspect AI |
only if you score with Inspect AI |
You can also write your own adapter against the whatifd.adapters.protocols interfaces and skip the adapter packages. The synthetic whatifd.adapters.stub.StubTraceSource / StubScorer ship with the core for tests and adapter authors.
All packages ship a py.typed marker (PEP 561) — your type checker / IDE sees their inline types when you import them.
Verify the install¶
Verify each installed distribution reports the same version:
python -c "import whatifd; print('whatifd', whatifd.__version__)"
python -c "import whatifd_langfuse; print('whatifd-langfuse', whatifd_langfuse.__version__)"
python -c "import whatifd_phoenix; print('whatifd-phoenix', whatifd_phoenix.__version__)"
python -c "import whatifd_inspect_ai; print('whatifd-inspect-ai', whatifd_inspect_ai.__version__)"
All four should report the same version (e.g., 0.2.0). The four packages release together; a version mismatch indicates a partial install.
Supported Python versions¶
Python |
Support |
|---|---|
3.11 |
✅ |
3.12 |
✅ |
3.13 |
✅ |
3.10 |
❌ (use 3.11+) |
CI runs the test suite against all three supported versions on every PR.