Skip to main content

agentcanvas logo

agentcanvas

See exactly how your AI agent works.
Turn Pydantic AI runs logged to Logfire into a polished, animated diagram of the whole workflow — every model call, tool, nested sub-agent, token and dollar.

Features · Quick start · How it works · Architecture · Contributing

Stepping through an agent workflow

Model call inspector
Click any node for a full inspector — tokens, exact cost, reasoning, the tools the model could call.
Conversation transcript
The full multi-turn conversation, with tool calls and reasoning.
Tool inspector
Per-tool input, output and timing.
Guided tour
A guided tour (auto or manual) narrates each step for client demos.

Python 3.12+ Pydantic AI Logfire License: MIT Made by Vstorm


Why

Clients rarely understand what an "AI agent" actually does. They see a prompt and an answer — not the reasoning, the tool calls, the sub-agents, or the cost. agentcanvas reads the trace your agent already sends to Logfire and renders it as a clear, interactive block diagram you can put on screen in a meeting: this is the question, here is what the model decided, these are the tools it ran, this is what each step cost, and here is the answer.


✨ What it shows

🧩 Block diagram The full run as a flow: User → Agent → model call → tools → model call → answer, on a pan / zoom / drag canvas.
🪆 Nested agents When a tool is itself another agent (with its own tools), it is drawn as a nested frame — recursively, to any depth. The diagram grows with the system.
💬 Full conversation Every turn is its own frame, connected in sequence. A side panel shows the complete user → assistant → user → assistant transcript.
🧠 Reasoning The model's "thinking" summary and reasoning-token counts, shown on each model call and in the transcript.
💰 Exact cost Per model call and for the whole run, computed from tokens via genai-prices.
🔢 Token usage Input / output / reasoning tokens, per step and aggregated.
🔎 Deep detail Provider, finish reason, response id, the tools available to the model (with descriptions), output mode and thinking config — in a click-through, resizable inspector.
🎬 Guided tour An auto walkthrough and a manual step mode (Space / click / arrows, with back), each with plain-language narration for client demos.
📦 Self-contained The output is a single HTML file — no server, no build, works offline, easy to send.

🚀 Quick start

pip install agentcanvas

Set LOGFIRE_READ_TOKEN in your environment (or a .env file), then build the report from your latest agent run:

agentcanvas                       # latest run → agent_flow.html (opens in browser)
agentcanvas --list                # list recent runs
agentcanvas --trace-id <id>       # a specific run
agentcanvas -o report.html --no-open

Or use it as a library:

from agentcanvas import LogfireClient, parse_run, render_html

client = LogfireClient()                       # reads LOGFIRE_READ_TOKEN
trace_id = client.latest_trace_id()
report = parse_run(client.fetch_trace(trace_id), trace_id)
open("report.html", "w").write(render_html(report))
Variable Used for
LOGFIRE_READ_TOKEN reading traces via the Logfire Query API (required)
LOGFIRE_BASE_URL optional region override (default US; EU: https://logfire-eu.pydantic.dev)
LOGFIRE_WRITE_TOKEN the example agent sending telemetry to Logfire
OPENROUTER_API_KEY the example agent (model via OpenRouter)

Try the example agent

The repo ships a runnable example (assets/scripts/main.py) — a thinking agent with five tools, a nested sub-agent and a multi-turn conversation. From a checkout:

uv sync --all-extras --prerelease=allow              # installs the `demo` extra
uv run --prerelease=allow python assets/scripts/main.py   # generates a sample trace in Logfire
agentcanvas                                       # visualize it

🔍 How it works

Logfire (OpenTelemetry GenAI spans)  ──query──►  parser  ──►  payload  ──render──►  agent_flow.html

Pydantic AI's instrumentation emits OpenTelemetry GenAI spans (invoke_agent, chat, execute_tool). agentcanvas reads them through the Logfire Query API (SQL + a read token), rebuilds the span tree into a recursive workflow (turns → rounds → tools → nested agents), prices it with genai-prices, and renders a single self-contained HTML report.


🏗️ Architecture

Module Role
logfire_client.py Logfire Query API client (SQL → rows)
parser.py span tree → recursive payload (turns, rounds, tools, nested agents)
pricing.py exact cost from tokens via genai-prices
render.py payload → embedded HTML / CSS / JS report
viz.py CLI entry point
assets/scripts/main.py demo agent: thinking, five tools, a nested sub-agent, a multi-turn conversation
assets/scripts/make_demo.py · make_screenshots.py record the demo video / capture doc screenshots

Development

git clone https://github.com/vstorm-co/agentcanvas.git
cd agentcanvas
make install      # uv sync (incl. dev tools)
make all          # ruff + mypy + pytest

The library is fully typed and tested; make all must pass before a PR. See CONTRIBUTING.md for details.


Changelog

See CHANGELOG.md.

License

MIT — see LICENSE.


Need help shipping AI agents in production?

We're Vstorm — an Applied Agentic AI Engineering Consultancy
with 30+ production agent implementations.

Talk to us



Made with care by Vstorm.co

Metadata

Release files for agentcanvas 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentcanvas 0.1.1
File Size Uploaded
agentcanvas-0.1.1.tar.gz 28.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agentcanvas 0.1.1
File Interpreter ABI Platform
agentcanvas-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 59.0 kB

Release files / agentcanvas-0.1.1.tar.gz

Download URL agentcanvas-0.1.1.tar.gz
Size 28.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1a709dfcb1faf77a43beba6cb7bc16d30c373284de2566411175bd1927c8b809
BLAKE2b-256 checksum
How to use checksums
d3eb24b97803f6806a0fa94e07816f7153a32a61bcf08dc8245352a18b4dc88e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.

Transparency log

Release files / agentcanvas-0.1.1-py3-none-any.whl

Download URL agentcanvas-0.1.1-py3-none-any.whl
Size 30.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
964bf5f9703bb9205aa20f678705f7face47eeddda348b29c9b120066a109e5f
BLAKE2b-256 checksum
How to use checksums
7aa2dc4b475b1e42122f4a36666ac5b105084a05341081deff6903201d08e541
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page