Skip to main content
Glassray’s metadata convention is three fields. They land on every trace as filterable tags, so you can slice flows, deviations, and searches by who a run was for and what it did:
This is one standard with two ways in: traces pushed by the SDK and traces pulled from Langfuse, LangSmith, or PostHog carry the same three tags, so dashboards and filters work identically regardless of how a trace arrived.
Which project a trace lands in is decided by the ingest key, not by any attribute you set — a trace lands in the project of the source (ingest key) that ingested it. The old environment field no longer routes traces and is ignored; use a separate source per project (prod, staging, …). See Projects.

Defaults at construction, overrides per trace

Set the values that are fixed for the process on the constructor; override the ones that vary per run in the trace’s meta. A per-trace value always wins over the constructor default.
In practice: agent is a constructor default, customer is per-trace (it varies with each run), and flow is optional either way.

What it becomes in Glassray

Each field lands as a trace tag (customer:acme-corp, agent:support-agent, …) at ingest — the same filterable index the rest of the dashboard uses. flow is a hint: Glassray’s own flow classification remains the authority for grouping traces.
On the wire these are the glassray.* resource attributes (with a root-span override), which matters only if you bring your own OTel — the SDK sets them for you.