Skip to main content

Fast local web viewer for pydantic-ai traces (list[ModelMessage] JSON dumps)

Project description

pydantic-ai-trace

Use pydantic-ai-trace when you need to inspect an agent run from a JSON dump. Give it a pydantic-ai list[ModelMessage] dump and it opens the run in a browser view.

It is a lightweight local tool. Point it at a trace or a directory of traces and it reads the files from disk, reloads them when they change, and exports individual traces as self-contained HTML files. Your traces stay on disk, with no hosted service or account.

Screenshot of a trace open in pydantic-ai-trace

What you can inspect

  • The full request and response sequence, including prompts, text, thinking, tool calls, tool results, and unknown parts
  • Tool calls paired with their results, including results in later messages
  • Model, provider, timing, and token usage
  • A searchable directory tree for .json and .jsonl traces
  • Collapsible large values, rendered Markdown, and keyboard navigation

Run from a checkout

This project uses pixi. Build the bundled frontend once, then run paitrace with a trace file or directory.

pixi run build-frontend
pixi run paitrace trace.json

Usage

# View one trace
pixi run paitrace trace.json

# Browse a directory tree of traces
pixi run paitrace ./my-traces/

# Write one trace to a standalone HTML file
pixi run paitrace export trace.json -o trace.html

# Choose a trace line when exporting a multi-trace JSONL file
pixi run paitrace export runs.jsonl --line 2

The viewer binds to 127.0.0.1:1205 and opens your browser. Pass --port, --host, or --no-open to change that behavior.

Trace files

The viewer reads the JSON emitted by ModelMessagesTypeAdapter.dump_json(messages):

  • .json: one bare JSON array of ModelMessage objects
  • .jsonl: one such array per line

When you open a directory, each line in a multi-trace .jsonl file is available as a separate trace.

Development

Run the API and frontend in separate terminals while working on the viewer.

pixi run dev-api ./trace.json  # API with reload on port 1205
pixi run dev-web               # Vite with HMR, proxying /api
pixi run test        # pytest and vitest
pixi run lint        # ruff, prettier, and eslint
pixi run typecheck   # pyright and TypeScript
pixi run build       # bundled frontend plus sdist and wheel

Releasing

Push a vX.Y.Z tag. The package version is derived from that tag, so no source file needs a version bump. GitHub Actions runs the full check suite, builds the frontend into the wheel and source distribution, publishes both to PyPI using trusted publishing, and creates a GitHub release. Configure a pypi environment in GitHub and add this repository as a trusted publisher for the pydantic-ai-trace project on PyPI before the first release.

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

pydantic_ai_trace-0.1.1.tar.gz (171.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_ai_trace-0.1.1-py3-none-any.whl (71.7 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_ai_trace-0.1.1.tar.gz.

File metadata

  • Download URL: pydantic_ai_trace-0.1.1.tar.gz
  • Upload date:
  • Size: 171.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pydantic_ai_trace-0.1.1.tar.gz
Algorithm Hash digest
SHA256 866399385bc82976d6377272ca37064b599cd4ceba9515210d118b315170f48e
MD5 c224ce5a96a0e45f9bb57db30eb3c510
BLAKE2b-256 d11b7683b41ddd3784272e6eb62c1d80c97f3d0ad8386d8e32841abd204a6a96

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_ai_trace-0.1.1.tar.gz:

Publisher: release.yml on moritzwilksch/pydantic-ai-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pydantic_ai_trace-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_ai_trace-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 559fab318c87da50dd35c0e4c1ba56ad0136f34871dc9d56207e84414ebb43a7
MD5 f4602fc1c913a69c2696013ebda16c4a
BLAKE2b-256 fd80f0e2f9bf0aee1bdd01e1b6aa846729cde443743f161d7bd974a96b8aa09c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_ai_trace-0.1.1-py3-none-any.whl:

Publisher: release.yml on moritzwilksch/pydantic-ai-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page