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.