Git-native behavioral diff and shadow deployment for LLM agents.
Project description
shadow
Catch AI-agent regressions before they hit production.
Shadow is a PR-native diff tool for LLM agents — it records your agent's calls, replays them under a new config, and tells you what changed across nine behavioural dimensions.
Install
pip install shadow
# With Anthropic support:
pip install 'shadow[anthropic]'
# With OpenAI support:
pip install 'shadow[openai]'
# With both + embeddings:
pip install 'shadow[anthropic,openai,embeddings]'
Requires Python 3.11 or newer.
Quickstart
from shadow.sdk import Session
with Session(output_path="trace.agentlog"):
# Your existing Anthropic / OpenAI code — unchanged.
client.messages.create(model="claude-sonnet-4-6", messages=[...])
Shadow automatically patches the Anthropic and OpenAI SDKs to capture every request/response. Secrets are redacted by default.
Then in CI:
shadow replay new-config.yaml --baseline trace.agentlog
shadow diff trace.agentlog candidate.agentlog
shadow bisect old-config.yaml new-config.yaml --traces trace.agentlog
Full docs
The canonical README, examples, the .agentlog spec, and the project
roadmap live at https://github.com/manav8498/Shadow.
License
Dual-licensed under MIT OR Apache-2.0. See LICENSE-MIT and
LICENSE-APACHE in this distribution, or the project repository.
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 Distributions
Built Distributions
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 shadow_diff-0.6.0-cp311-abi3-win_amd64.whl.
File metadata
- Download URL: shadow_diff-0.6.0-cp311-abi3-win_amd64.whl
- Upload date:
- Size: 603.2 kB
- Tags: CPython 3.11+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7f21428cd25aeb9ddfa450b96bffe2608bfbb20ad33f37cdc703e7caa6a32c4
|
|
| MD5 |
5ad01e16553317f2d0f552039badd4b0
|
|
| BLAKE2b-256 |
08d45459fd91a1f112accb17fec80ccdd676dd423666fec42b666c3867b659d6
|
Provenance
The following attestation bundles were made for shadow_diff-0.6.0-cp311-abi3-win_amd64.whl:
Publisher:
release.yml on manav8498/Shadow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shadow_diff-0.6.0-cp311-abi3-win_amd64.whl -
Subject digest:
e7f21428cd25aeb9ddfa450b96bffe2608bfbb20ad33f37cdc703e7caa6a32c4 - Sigstore transparency entry: 1367370065
- Sigstore integration time:
-
Permalink:
manav8498/Shadow@214d26a8244336e1cf57d1ac6e30ce8920e241dc -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/manav8498
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@214d26a8244336e1cf57d1ac6e30ce8920e241dc -
Trigger Event:
push
-
Statement type:
File details
Details for the file shadow_diff-0.6.0-cp311-abi3-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: shadow_diff-0.6.0-cp311-abi3-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 736.4 kB
- Tags: CPython 3.11+, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5933cff9978a6dc5b1124b6162c931d1b443a85f6a96b549b2b1a7be99864e75
|
|
| MD5 |
d15918b46b7d547f06485a1a1c980c7b
|
|
| BLAKE2b-256 |
68c10679661be4efb4d46882b0f0b45e8380d2bcd177ba10375c299911bf22e6
|
Provenance
The following attestation bundles were made for shadow_diff-0.6.0-cp311-abi3-manylinux_2_34_x86_64.whl:
Publisher:
release.yml on manav8498/Shadow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shadow_diff-0.6.0-cp311-abi3-manylinux_2_34_x86_64.whl -
Subject digest:
5933cff9978a6dc5b1124b6162c931d1b443a85f6a96b549b2b1a7be99864e75 - Sigstore transparency entry: 1367370028
- Sigstore integration time:
-
Permalink:
manav8498/Shadow@214d26a8244336e1cf57d1ac6e30ce8920e241dc -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/manav8498
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@214d26a8244336e1cf57d1ac6e30ce8920e241dc -
Trigger Event:
push
-
Statement type:
File details
Details for the file shadow_diff-0.6.0-cp311-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: shadow_diff-0.6.0-cp311-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 671.1 kB
- Tags: CPython 3.11+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bd70aa6ef22987d0e1d82f8ded94d3af6314c22b179c12cb7da5ae2d5408ca5
|
|
| MD5 |
337622ef15c106b2cbe72efa1fd20598
|
|
| BLAKE2b-256 |
5599e3f4167013f6584a05dc0c21825d94acb05748a75eb29649581f269d5b26
|
Provenance
The following attestation bundles were made for shadow_diff-0.6.0-cp311-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on manav8498/Shadow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shadow_diff-0.6.0-cp311-abi3-macosx_11_0_arm64.whl -
Subject digest:
8bd70aa6ef22987d0e1d82f8ded94d3af6314c22b179c12cb7da5ae2d5408ca5 - Sigstore transparency entry: 1367370004
- Sigstore integration time:
-
Permalink:
manav8498/Shadow@214d26a8244336e1cf57d1ac6e30ce8920e241dc -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/manav8498
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@214d26a8244336e1cf57d1ac6e30ce8920e241dc -
Trigger Event:
push
-
Statement type: