Skip to main content

How Trace URLs Work

Every trace in ABV has a unique, permanent URL that points directly to the trace in the dashboard. Trace URLs provide instant access to the complete interaction timeline, including:
  • Full prompt and response content
  • Token usage and cost breakdowns
  • Latency metrics (first token, total duration)
  • Tool calls and function executions
  • Error messages and stack traces
  • Session context and user metadata

Understand Trace URL Structure

Trace URLs follow a consistent format:
  • app.abv.dev: ABV Dashboard (US region)
  • eu.app.abv.dev: EU region alternative
  • <trace-id>: Unique identifier for the trace (32-character hex string)
Example:
Key properties:
  • Permanent: URLs never expire or change
  • Unique: Each trace has exactly one URL
  • Private by default: Only team members with access to the project can view
  • Shareable: Can be made public for external sharing (clients, community)

Get Trace URLs Programmatically

Retrieve trace URLs directly in your code for logging, debugging, or automated workflows.Python (decorator pattern):
Python (context managers):
JavaScript/TypeScript:

Add Trace URLs to Logs and Monitoring

Include trace URLs in your application logs to create instant links from logs to ABV traces.Python (logging integration):
Benefits:
  • Click trace URLs in logs to jump directly to ABV dashboard
  • Correlate application logs with LLM traces instantly
  • No manual searching for traces by timestamp or metadata

Share Traces with Teammates (Private)

By default, trace URLs are privateβ€”only team members with access to your ABV project can view them.Sharing workflow:
  1. Get the trace URL (via SDK or dashboard)
  2. Share the URL via Slack, email, GitHub issue, Jira ticket, etc.
  3. Teammates click the URL and see the full trace (if they have project access)
Example: Share in Slack
Access control:
  • Trace URLs respect ABV’s role-based access controls (RBAC)
  • Users must be logged into ABV and have project permissions
  • URLs work across sessions and devices (permanent links)

Make Traces Public (Optional)

For external sharing (clients, community, public demos), make traces public. Public traces are accessible to anyone with the URLβ€”no ABV login required.Make public via UI:
  1. Open the trace in the ABV Dashboard
  2. Toggle β€œPrivate” to β€œPublic”
  3. Share the same trace URL publicly
Make public via SDK (Python):
Make public via SDK (JavaScript/TypeScript):
Security note: Only make traces public if they don’t contain sensitive data (PII, API keys, proprietary prompts). Use masking to redact sensitive content before sharing.

Why Use Trace URLs?

Text descriptions of bugs are vague and hard to reproduce. β€œThe LLM sometimes gives wrong answers” isn’t actionable. Trace URLs provide concrete evidence.Without trace URLs:
  • Developer: β€œCan you describe the bug?”
  • Reporter: β€œThe LLM said Paris is in Germany”
  • Developer: β€œWhat was the input? What model? What timestamp?”
  • Reporter: β€œUh, I don’t remember… it was yesterday around 3pm”
  • Developer spends hours searching logs and trying to reproduce
With trace URLs:
  • Reporter files GitHub issue: β€œLLM gave incorrect geography answer: [trace URL]”
  • Developer clicks URL, sees:
    • Input: β€œWhat country is Paris in?”
    • Output: β€œParis is in Germany”
    • Model: gpt-3.5-turbo
    • Timestamp: 2025-01-15 15:23:45
    • Prompt version: v2.3 (identifies the regression)
  • Developer reproduces immediately and fixes the prompt
Best practices:
  • Include trace URLs in GitHub issues, Jira tickets, Linear tasks
  • Add trace URLs to error logs and exception handlers
  • Make traces public if sharing with external contributors or clients
Example: Automated bug report with trace URL
Support teams waste hours gathering context when users report issues. β€œIt didn’t work” requires back-and-forth to extract details.Traditional support workflow:
  1. User: β€œThe chatbot gave me wrong refund info”
  2. Support: β€œCan you send a screenshot?”
  3. User: β€œHere’s the screenshot” (blurry image)
  4. Support: β€œWhat was your account ID?”
  5. User: β€œuser@example.com”
  6. Support: β€œWhat time did this happen?”
  7. User: β€œAround 2pm yesterday”
  8. Support forwards vague details to engineering
  9. Engineering searches logs for 30 minutes to find the interaction
With trace URLs:
  1. User: β€œThe chatbot gave me wrong refund info”
  2. Support searches traces by user email in ABV
  3. Support finds the trace, clicks β€œShare URL”
  4. Support sends trace URL to engineering: β€œThis trace shows the issue”
  5. Engineering clicks URL, sees full interaction in 5 seconds
  6. Engineering identifies prompt used outdated policy docs (RAG issue)
  7. Fix deployed within hours instead of days
Implementation:
Benefits:
  • Time to resolution: Days β†’ hours
  • Context loss: Eliminated
  • Customer satisfaction: Improved (faster fixes)
Debugging complex issues requires collaboration. Describing problems over Slack or email loses context. Trace URLs preserve everything.Without trace URLs (inefficient):
  • You: β€œHey, the summarization feature is failing for long documents”
  • Teammate: β€œWhat error?”
  • You: β€œTimeout after 30 seconds”
  • Teammate: β€œWhat model?”
  • You: β€œGPT-4”
  • Teammate: β€œWhat was the input?”
  • You: β€œUh, let me find the logs… it was a 10-page PDF”
  • Back-and-forth continues for 20 minutes
With trace URLs (instant):
  • You: β€œHey, summarization failing for long docs: [trace URL]”
  • Teammate clicks URL, sees:
    • Input: 10-page PDF (3,000 tokens)
    • Model: GPT-4
    • Timeout after 30 seconds
    • Cost: $0.15 (expensive!)
  • Teammate: β€œAh, we need to chunk the document or use Claude (128k context)”
  • Problem solved in 2 minutes
Best practices:
  • Share trace URLs in Slack, Microsoft Teams, or email
  • Add trace URLs to code review comments
  • Reference trace URLs in pull request descriptions
Example: Share trace in Slack automatically
Pull request descriptions and code review comments benefit from concrete examples. Instead of saying β€œThis change improves latency,” link to before/after traces.Example: Pull request description with traces
Benefits:
  • Reviewers see concrete data instead of claims
  • Evidence-based code reviews
  • Easier to spot regressions or unintended side effects
When running experiments in Jupyter notebooks, display trace URLs inline for interactive debugging.Example: Notebook workflow
Output in notebook:
Benefits:
  • Click traces directly from notebook cells
  • Compare experiment results side-by-side in ABV Dashboard
  • Reproducible experiments (trace URLs never expire)
Application logs and monitoring dashboards (Datadog, Splunk, CloudWatch) show high-level metrics, but lack LLM-specific context. Add trace URLs to bridge the gap.Example: Structured logging with trace URLs
Log output (JSON):
In Datadog/Splunk:
  • Search logs by request ID
  • Click the abv_trace_url field to open the trace in ABV
  • See full LLM interaction (prompt, response, costs) alongside application logs
Benefits:
  • Single pane of glass: Logs + LLM traces in one workflow
  • Faster root cause analysis (correlate errors with LLM behavior)
  • No manual searching across systems

Implementation Patterns

Use the @observe() decorator and retrieve trace URLs with abv.get_trace_url().Basic usage:
Add to logs:
Use abv.start_as_current_span() and retrieve trace URLs within the context.Example:
Use the @abvdev/client package to retrieve trace URLs from trace IDs.Setup:
Example:
Make traces publicly accessible (no login required) for external sharing.Python (decorator pattern):
Python (context managers):
JavaScript/TypeScript:
Security warning: Only make traces public if they don’t contain:
  • PII (emails, phone numbers, addresses)
  • API keys, passwords, or tokens
  • Proprietary prompts or system instructions
Use masking to redact sensitive content before sharing publicly.
If you have the trace ID, you can construct the trace URL manually without calling the SDK.URL format:
Python:
JavaScript/TypeScript:

Next Steps

Comments on Objects

Add inline comments to traces for team collaboration, code reviews, and handoffs

Sessions

Group related traces by user journey to see end-to-end workflows and multi-step interactions

Trace IDs

Use custom trace IDs for distributed tracing, external system integration, and deeplinking

Masking Sensitive Data

Redact PII, secrets, and proprietary content before sharing traces publicly or with external teams