Skip to content

Add identity tags

By default, Trove tags every signal with its source harness (harness.id, harness.name) but not with who produced it. Identity tagging adds user.name and user.email as resource attributes on every span, metric, and log Trove forwards, so your backend can group activity by person — which turns “spend by tool” into “spend by person and tool,” and makes dead-seat detection possible.

These are resource attributes: set once per machine, attached to every signal at the source. You don’t tag individual events — Trove stamps the whole stream.

  1. Open Trove and go to the Settings tab.

  2. Enter your name in the user.name field and your email in the user.email field. Use the same email your license roster uses, so a person’s activity in Trove lines up with the seat they hold.

  3. Save. Trove writes the values to the single versioned state.json, regenerates the collector config so the new resource attributes are applied, and reloads (a brief blip). From the next batch onward, every signal carries your identity.

Once set, every signal Trove forwards carries the full resource-attribute set:

service.name = <harness service name>
harness.id = claude-code
harness.name = Claude Code
user.name = Ada Lovelace
user.email = ada@example.com
trove.source = trove

Because identity is a resource attribute, it’s available on Tier A metrics, Tier B native metrics, traces, and logs alike — so you can group any of them by user.email in your backend.

  • Per-user dashboards. Group trove.harness.events, trove.harness.tokens, or trove.harness.cost.usd by user.email to see who’s doing what, with which tool.
  • Team rollups across mixed harnesses. Since user.email is consistent regardless of which harness emitted, one panel can total a person’s activity across Claude Code, Cursor, Copilot CLI, and the rest.
  • Dead-seat detection. Comparing the set of active user.email values against your license roster is exactly how you find paid seats with zero activity. See Normalize costs and find dead seats.