Skip to main content

Overview

The Bitfab web portal at bitfab.ai is where you view your traced AI workflows, inspect individual traces, review verdicts, and manage automated graders.

Trace Functions

When you instrument your code with the SDK, each getFunction() or get_function() call registers a trace function - a named group of related spans. The main navigation lists all your trace functions with summary stats:
  • Total traces captured
  • Evaluation status - how traces are performing against your graders
  • Recent activity - latest traces and their outcomes
Click a trace function to see all of its traces, graders, and evaluation results.

Traces

Each execution of an instrumented function produces a trace - a tree of spans capturing the full call stack with inputs, outputs, timing, and errors.

Trace List

The trace list for a function shows: A trace written by seedTrace / seed_trace shows a seeded marker once it has settled cleanly, so a corpus you loaded on purpose is distinguishable from traffic your app produced. While it is still running, or if it threw, it shows the running or error state instead, like any other trace. A replay of a seeded trace is its own run and shows the replay states.

Trace Detail

Click a trace to see the full span tree:
Each span shows its input, output, errors, context, timing, and prompt (if set). Click individual spans to drill into nested calls.

Searching and Filtering

Filter traces by:
  • Status: Success or error
  • Date range: Filter by time period
  • Grader results: Pass or fail on specific graders
  • Full-text search: Search across inputs, outputs, and error messages
  • Name: The title setName / set_name or seedTrace / seed_trace recorded. The Name box matches any part of a name, so type the fragment you remember
  • Caller metadata: The key and value pairs setMetadata / set_metadata recorded. Matched exactly, ignoring case, and you can stack up to 10 pairs
  • Environment: The environment the API key that recorded the trace belongs to
  • Replays: Show only your code’s own runs, only replays, or both
  • Tags: Filter by assigned tags
Name and caller metadata are also searchable from the SDKs and from your coding agent, so a lookup you do by hand here can be scripted later. See client.traces.search in the TypeScript, Python, Ruby, or Go reference.

Redirecting from your own records

Use /trace-redirect when your product knows its own record IDs but does not know Bitfab’s trace and span IDs. Each query parameter names an exact trace or span field. The redirect only searches your active organization.
The recommended pattern is to record a stable ID from your application as caller metadata, then use that same key and value in the redirect URL. Use an ID that identifies one execution. If the same record can produce several traces, record a unique attempt or run ID so the redirect does not become ambiguous.
For example, record your support ticket’s run ID while the traced function is active:
Then build the link from the same application-owned ID. URLSearchParams handles URL encoding for you:
Opening that link finds the trace whose caller metadata contains the exact ticket_run_id value and redirects to its function-scoped Bitfab trace page. Your application never needs to store or discover the Bitfab trace ID.
You can add more exact filters when you also want to open a particular span:
Supported trace selectors are trace.metadata.<key>, trace.name, trace.session_id, trace_function_key (also accepted as trace.function_key), trace.source_id, and trace.environment. Supported span selectors are span.metadata.<key>, span.name, span.type, and span.source_id. At least one trace selector is required. A span selector is optional. Every supplied filter must match exactly. Metadata keys and values are case insensitive; other fields are case sensitive. One result redirects to its function-scoped Bitfab URL. Zero results return 404. Multiple results ask you to add another filter.

Reviewing verdicts

Record pass/fail verdicts on traces to build evaluation datasets and track quality. See the Reviewing verdicts guide for details.

Datasets, Graders, and Experiments

Beyond browsing traces and reviewing verdicts, the portal is where you manage Bitfab’s other primitives: datasets of curated traces, graders that score them automatically, and experiments that replay a dataset against your changed code. See the Primitives overview for how they fit together. These are created from your coding agent rather than from a form in the portal. The New buttons on each list show the prompt to use. Scripts and CI jobs that need to build or maintain a dataset without an agent in the loop can use the client.datasets namespace in any of the four SDKs instead. See Datasets from the SDK.

Settings

Additional configuration is available in the user menu:

API Keys

Manage API keys for SDK authentication

Integrations

Configure external service connections

Tags

Organize traces with tags

Organizations

Bitfab uses organizations to group resources:
  • Each user belongs to one or more organizations
  • Trace functions, traces, and API keys are scoped to an organization
  • Team members can be invited to collaborate

Switching Organizations

If you belong to multiple organizations, use the organization switcher in the header to change between them.