BrowserTrace

Debug Skyvern task and workflow failures locally

Skyvern workflows can fail after several browser decisions. BrowserTrace wraps task and workflow calls so you can inspect inputs, outputs, status, errors, and export a trace for review.

View repo Open exported trace Adapter feedback

Try the trace viewer first

uvx --from "browsertrace[ui] @ git+https://github.com/aaronlab/browsertrace@v0.1.14" browsertrace doctor
uvx --from "browsertrace[ui] @ git+https://github.com/aaronlab/browsertrace@v0.1.14" browsertrace demo
uvx --from "browsertrace[ui] @ git+https://github.com/aaronlab/browsertrace@v0.1.14" browsertrace

Open http://127.0.0.1:3000 and inspect the failed checkout-agent run before wiring a real Skyvern client.

Wrap a Skyvern-shaped client

from skyvern import Skyvern
from browsertrace import Tracer
from browsertrace.integrations.skyvern import wrap_skyvern

tracer = Tracer()
skyvern = wrap_skyvern(Skyvern(...), tracer, name="skyvern invoice run")

await skyvern.run_task(
    url="https://example.com",
    prompt="extract the invoice total",
    wait_for_completion=True,
)

skyvern.close()

The wrapper records high-level run_task and run_workflow calls without importing Skyvern at BrowserTrace install time.

What the trace captures

  1. The Skyvern method, task prompt, URL, and keyword arguments.
  2. The returned task/workflow payload when available.
  3. Run IDs and status fields when the response exposes them.
  4. Exception type and message if the task call fails.
  5. Exportable HTML with optional prompt/model I/O redaction.

Share only what is safe

browsertrace list
browsertrace export <run_id> -o full.html
browsertrace export <run_id> --redact -o public.html
browsertrace export <run_id> --public -o public.html

Use --public before attaching a real trace to a public issue or community thread. Use individual redaction flags when you want to keep some fields visible.

First-class Skyvern adapter feedback is tracked in issue #4.