Skip to main content
The Settings page manages your project’s identity and integrations. It’s organized into tabs:
  • General — project id, API keys, the ingest snippet, and MCP connection.
  • Integrations — the project’s GitHub repo, webhooks, and enrichment.
Online evals (LLM judge, trajectory, structured output, run baselines), embeddings, and score configs now live on the dedicated Evals page. Workspace-wide connections (Slack, the GitHub App) live in Workspace settings, shared by every project in the org.

Project

Shows the Project ID — the stable identifier every trace is scoped to.

API keys

API keys authenticate your agent’s traces to this project.
  • Create key — generate a new sk_… secret. It’s revealed once, with a copy button and an “I’ve copied the key” confirmation that then hides it. Only a hash is stored — the secret is never shown again and never logged.
  • The keys table lists each key’s name, public key, and creation date.
If a key leaks, generate a new one and stop using the old one. Secrets are never recoverable after creation.

Sending traces

Settings shows the ingest snippet for your project:
See the OTLP endpoint reference for the full API.

Integrations

GitHub repo

Set the repository (owner/repo) this project opens pull requests against. The GitHub App itself is installed once per workspace in Workspace settings — this only records which repo this project targets.

Webhooks

POST trace and/or session events to your own endpoints. Each webhook has a URL, the events it fires on, an optional signing secret, and custom metadata — arbitrary key/values included in every delivery so downstream systems can route or tag on them. The delivered body is:

Enrichment

Call an external API to enrich a trace or session. Configure an endpoint, an optional bearer token, the target (traces or sessions), and a payload template. The template references the object’s agent metadata with {{metadata.<key>}} (plus {{trace_id}} / {{session_id}}); the editor lists the metadata props seen on your recent runs so you can click to insert them. In JSON mode substituted values are escaped so a value with quotes can’t break the payload; inline mode substitutes raw.