Skip to main content

respan-instrumentation-skyvern

Trace Skyvern browser agents in Respan. Each Skyvern run becomes one trace:

agent.skyvern_task                 Skyvern.run_task (or run_workflow / login / download_files)
├── task  (skyvern.step)           one per agent step: page URL, actions + results, screenshot
│   ├── llm.<model>                extract-actions: the model call that chose the actions
│   ├── tool.click                 one per browser action (click, input_text, select_option, ...)
│   └── tool.input_text
├── llm.<model>                    check-user-goal, the speculative next-step plan, extraction
└── tool.complete                  the action that finished the run

page.act / page.extract / page.validate / page.ai_* calls on a Skyvern browser page are traced the same way, one agent.<ai_action> trace per call.

Install

pip install respan-ai respan-instrumentation-skyvern
pip install "skyvern[local]"         # the in-process engine, for Skyvern.local()
python -m playwright install chromium

Use

from respan import Respan
from respan_instrumentation_skyvern import SkyvernInstrumentor

respan = Respan(api_key="...", instrumentations=[SkyvernInstrumentor()])

from skyvern import Skyvern

skyvern = Skyvern.local()
result = await skyvern.run_task(
    prompt="Find the top post on Hacker News", url="https://news.ycombinator.com",
    wait_for_completion=True,
)

Skyvern's model can go through the Respan gateway (OpenAI-compatible), so one key covers the model and the traces:

from skyvern.schemas.llm import LLMConfig

skyvern = Skyvern.local(llm_config=LLMConfig(
    model_name="openai/gpt-4.1-mini", required_env_vars=[], supports_vision=True,
    add_assistant_prefix=False,
    litellm_params={"api_base": "https://api.respan.ai/api", "api_key": RESPAN_API_KEY},
))

A full runnable example with live checks is in python-sdks/examples/skyvern.

What is captured

Span From Carries
agent.skyvern_task / _workflow / _login / _download_files Skyvern.run_task, run_workflow, login, download_files prompt, URL, engine, schema, max_steps in; status, output, failure_reason, step count, recording URL out. A failed / terminated / timed-out run is an error span with Skyvern's reason
agent.<ai_action> page.act, page.extract, page.validate, page.ai_* (run_sdk_action) the action and its result
task (skyvern.step) each agent step step number, page URL, every action with its results, the screenshot the model saw (JPEG), token counts and cost Skyvern recorded
task (skyvern.block.<type>) each workflow block block label and type, status, output, failure reason
tool.<action> each browser action the action (element, text, reasoning); a failed action is an error span with Skyvern's exception
llm.<model> every model call Skyvern makes (all of its prompt handlers end in litellm) Skyvern's prompt name (skyvern.llm.prompt_name), messages with screenshots, completion, prompt / completion / cached tokens
  • Local and cloud. With Skyvern.local() the whole tree is captured. Against Skyvern Cloud (Skyvern(api_key=...)) the engine runs remotely, so you get the run span with its status, output and recording link.
  • Grouping. Thread, session and trace group default to the Skyvern run id, so a run's spans group together; values you set with propagate_attributes win.
  • Secrets. Values Skyvern resolves as secrets during a run (credential and secret workflow parameters, one-time codes) are replaced by <secret>name</secret> in every span.
  • Content off. SkyvernInstrumentor(capture_content=False) (or Respan's content-tracing switch) keeps the tree, ids, statuses and token counts and drops prompts, outputs, URLs and screenshots. capture_screenshots=False drops only the images.
  • No double logging. Skyvern's model calls go through litellm; while a Skyvern chat span is open, the LiteLLM and OpenAI instrumentations are suppressed.

Skyvern's own OpenTelemetry spans (tracer skyvern) are not exported; Respan spans are parented to each other across them. See docs/GAPS.md for known limitations.

Tests

tests/test_baseline.py drives Skyvern's real engine and a headless Chromium on a local page with a scripted model, and checks every exported span (needs tests/requirements.txt and python -m playwright install chromium):

pip install -e . -r tests/requirements.txt pytest pytest-asyncio
python -m pytest tests -q

Metadata

Release files for respan-instrumentation-skyvern 0.1.0

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

Source distribution (sdist)

Source distribution for respan-instrumentation-skyvern 0.1.0
File Size Uploaded
respan_instrumentation_skyvern-0.1.0.tar.gz 14.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for respan-instrumentation-skyvern 0.1.0
File Interpreter ABI Platform
respan_instrumentation_skyvern-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 30.2 kB

Release files / respan_instrumentation_skyvern-0.1.0.tar.gz

Download URL respan_instrumentation_skyvern-0.1.0.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1ca44cf8225747722efa7bed11b014b3a60c5d5eb515ceab32831c485c13c689
BLAKE2b-256 checksum
How to use checksums
ffde87bc72851c412b82f5f32326695a55a1af4696a39948b7e41ac0a1130d7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 17, 2026.

Transparency log

Release files / respan_instrumentation_skyvern-0.1.0-py3-none-any.whl

Download URL respan_instrumentation_skyvern-0.1.0-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
54342ff1ec932a62d3d2feae44910307fd24d22c3db4e75ac9ac6973b2c11085
BLAKE2b-256 checksum
How to use checksums
4af0ff170354e4d00e80f3227560dde7c822ceaa50b4e319b583b37bc86ab815
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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