The Agent Registry is where you bring your organization's external AI agents — the ones running in your own apps or on connected platforms — under governance, so you can observe and govern them from UnifyApps.
Overview
Each row is an agent, showing its Agent name, Platform (the app or framework it runs on, like AWS Bedrock or LangChain), Status, and live telemetry — Last trace (when it last sent data), Activity (its trace count), Cost, Incidents (a red count when any exist), and Policies — plus Owner and Last updated. Agents get here two ways: synced from Discovery (a connected platform's agents, auto-discovered) or registered manually.
Use Register Agent to add one, search by name to find one, and click a row to open its detail page. Empty state: "No agents registered" — "Register agents to bring them under governance — synced from discovery or added manually."
On an agent's detail page, the header shows when its data last came in. Agents connected through a platform connection show Last synced with a Sync now button that starts a new pull. SDK and OpenTelemetry agents send their own traces, so they show Last trace instead, with no sync button.
Registering an Agent
Use Register Agent to open the two-step Enter manually drawer:
Select a platform — a searchable list of the platforms and frameworks agents can arrive from (AWS Bedrock, Anthropic, LangChain, LangGraph, LiveKit, n8n, OpenAI Agent SDK, Salesforce, ServiceNow, Snowflake, UnifyApps, Workato, and more).
Agent details — the form depends on the platform: platforms that need a connection (Anthropic Managed Agents, Snowflake, Databricks REST APIs, Crowdstrike AIDR) ask you to pick a Connection and then the Agent from that connection, plus a required Description and Owner, and optional Workspace / Department. Everything else — SDK frameworks and platforms like AWS Bedrock — asks you to type a Name (e.g. Claims adjuster), plus the same Description, Owner, Workspace, and Department fields. The Connection type cards set the agent's governance tier: Observe · Advisory or Control · Enforced. Control can be chosen only on platforms that support it — the Anthropic Agent SDK, LangChain, LangGraph, n8n, and the OpenAI Agent SDK. Elsewhere it's greyed out, and the agent connects in Observe mode.
Finish with Register Agent — you'll see "Agent registered successfully" and land on the agent. A newly registered agent starts in Setup Pending until it sends its first data.
Note: Registering something that's already in the registry quietly changes nothing — the confirmation still appears, so check the list rather than trusting the message if you're unsure it was new.
Agent Statuses
Status | Meaning |
|---|---|
Active | Registered and sending data — traces are flowing. |
Setup Pending | Registered, but not yet sending data; you still need to connect it (see Setup below). |
Excluded | Discovered but deliberately left out of governance. Only visible on a Discovery connection's asset list, not in the registry itself. |
An agent moves from Setup Pending to Active on its own the moment its first trace arrives.
Note: Models are different — an imported model doesn't go through Setup Pending; see Model Registry.
Removing or Changing a Registered Agent
Each registry row's menu offers Delete (permission-gated). Delete unregisters the agent rather than erasing it: the agent leaves the registry and stops being offered in policy pickers, but its traces, incidents, and history are kept. If the agent came from Discovery, it shows as Excluded on its Discovery connection. There's no edit of an agent's name or details after registration on this screen.
Note: To take a discovered asset out of governance without deleting it, use its Register toggle on the Discovery connection page instead — that marks it Excluded and keeps it listed there for later.
Connecting Your Agent (Setup Tab)
Open the agent and use its Setup tab — headed "Connect {platform}", "Instrument the agent to bring its traces in." — with a pulsing "Waiting for traces…" indicator while nothing has arrived, and the agent's identity card alongside. The tab shows numbered, platform-specific instructions for the platform you registered the agent on: installing dependencies, pointing the exporter at your UnifyApps ingest address, configuring credentials, initializing tracing, and grouping traces into sessions, each with a copyable snippet. Instructions exist today for AWS Bedrock, the Anthropic Agent SDK, LangChain, LangGraph, LiveKit, Microsoft Copilot, n8n, the OpenAI Agent SDK, and Snowflake; a platform without them shows "No setup available".
Under the hood every method ends the same way: your agent's runtime sends OpenTelemetry traces to the agent's own ingest address (an agent-otel-exporter-otlp/… URL that ends in the agent's id followed by /v1/traces), configured via OTEL_EXPORTER_OTLP_ENDPOINT. To have your turns group into conversations, send a session.id attribute on your spans; without it every trace becomes its own single-turn session.
Note: Being OpenTelemetry-compatible isn't enough by itself — traces are interpreted only for the supported instrumentation formats (OpenInference-style SDK tracing, the Anthropic agent SDK, and n8n's LangChain tracing). A successful send returns an ordinary HTTP 200 whether or not the payload was understood — confirm in the Traces list.
Where a platform's instructions include a key step (n8n today), the key is sent as the authorization header; other platforms' instructions don't add a key. Generating a new key doesn't disable previously generated ones.
Generate Key
Some platform instructions (n8n today) include a generate key button on a snippet: clicking it mints an authentication token your agent presents (as the authorization header) when sending traces. The key is scoped to trace ingestion only — it can't be used for anything else.
Note: Copy it immediately — it can't be displayed again after you leave (it's stored masked), and clicking the button again mints a brand-new key. If minting fails you'll see "Couldn't generate the key" — retry, and check your access if it persists.
Troubleshooting: Stuck on "Setup Pending"
What's happening: the agent shows Setup Pending; its Setup tab is open and the other tabs are greyed out, with "Waiting for traces…" showing.
Why: an agent's tabs unlock only once it's actually sending data; the switch to Active happens automatically when the first trace reaches the agent's own ingest address — the one shown in its Setup instructions, which contains that agent's id.
Fix:
Complete the Setup steps for your platform, making sure the endpoint URL you configured contains this agent's id (traces sent to a different agent's URL activate that one instead).
Trigger some activity in your agent so it actually sends a trace.
The page checks every few seconds and switches you to Overview as soon as the first trace lands.
Still stuck? Recheck the exporter endpoint and any key/credentials, confirm outbound network access from where the agent runs, or contact support@unifyapps.com.
Overview Tab
Once active, an agent's Overview gives you its at-a-glance health:
Agent Activity — a strip of Trace count, Total cost, Error rate, and Latency P90 over a volume chart, windowed by Last 7 / 14 / 28 / 90 days.
Incidents — a severity summary (Total, Critical, High, Medium, Low) with the most recent few; if there are no policies yet it points you to set some up.
Agent details — its identity: the Connection type (Observe · Advisory or Control · Enforced), Status, Owner, Workspace, Department, and Description.
Observe vs. Control
An agent's Connection type decides how much its governance can do: Observe · Advisory watches and can flag but can't stop a call; Control · Enforced sits in the path of the agent's calls, so controls can actively block and intervene. This is why a control's Block action only takes effect on agents connected in Control mode — on Observe agents the same control can only flag.
Note: Control · Enforced can be chosen only on platforms that support it — the Anthropic Agent SDK, LangChain, LangGraph, n8n, and the OpenAI Agent SDK. On every other platform, Control is greyed out and the agent connects in Observe mode, so Block actions are advisory there.
Outcomes Tab
The Outcomes tab shows what the agent returns against what it costs, for the outcomes defined in Outcomes & ROI on the AI Governance launch pad. A Returns chart sits above a Value by outcome table with Outcome, Owner, Return, Value per outcome, Total outcomes, Total value, Total spend, and Net value. Each row offers View outcome and Edit. If no outcome credits this agent, you'll see "No outcomes measured for this agent."
Evaluation Tab
Evaluation sets up online evaluation — evaluators that score the agent's real sessions and traces as they happen. The tab lists the agent's evaluators: Evaluator, Type, Scope (sessions or traces), Sampling, Result, Coverage ("N scored" of "N sampled"), Last evaluated, Cost, and Added by; cells with nothing in the window read "No data in range". Each row's menu offers Edit and Remove, and clicking a row jumps to the matching Evaluated list in Observability.
Above the evaluator table, four stat cards summarize the window: Overall quality, Coverage, Quality trend, and Eval spend.
Add evaluator is a two-step drawer: first a searchable evaluator catalogue (filter by Type — AI or Automation — and Test case — LLM or Conversational), then Configure — whether it runs on sessions or on traces, an optional filter, a Sampling rate (with a "≈ N / 7d" estimate), and an optional backfill (time range and cap — data older than 30 days has aged out).
The gear button opens Session settings: "Mark session as closed after" (default 24 hours — conversational evaluators run once the session is marked closed) and "Evaluation check after every" (default 5 minutes — sessions are swept for evaluation at this interval). Per-turn scores appear within roughly one sweep interval, while conversation-level scores appear only after the session has been quiet for the close time.
Where Evaluation Scores Show Up
In the agent's Observability tab, Sessions and Traces each offer an All / Evaluated toggle. The Evaluated views add one score column per evaluator: a pill with the numeric score, green for pass and red for fail, or a dash when there's no score. Opening an evaluated session shows an Evaluation summary band, a Metric tab with a per-trace scorecard, and a View detailed drawer with the full per-turn score table.
Note: Pointing two evaluators at the same metric shows them as duplicate columns of the same score. A failed evaluator run looks exactly like "not scored yet" (a dash / Pending). If one evaluator's column stays dashed while others fill in, the evaluator may be failing — check the metric's configuration or contact support rather than waiting longer.
Sessions, Traces, and Spans
The Observability tab has three views:
View | What it shows |
|---|---|
Sessions | One row per conversation: Case ID, first message, tokens, cost, trace count, duration, start time, plus stats (Total Sessions, Avg Traces/Session, Avg Session Time, Avg Tokens Used, Total Cost). |
Traces | One row per turn: Trace ID, input, output, spans, latency, tokens, start time. Clicking a trace opens a side drawer with the span timeline and each span's input/output. |
Spans | Individual execution steps (with a live total count): status, span name, kind (LLM, tool, chain, etc.), trace, latency, tokens, started. Clicking one opens a details drawer you can share by link. |
A session groups the traces that share a session identifier your instrumentation sends; if your setup doesn't send one, every trace becomes its own single-turn session.
Note: All three lists default to showing "Today" — widen the date range before concluding data is missing. Overview charts window up to 90 days while evaluation backfill reaches only 30 days back. Governance sessions and traces show no user column, but they do show Cost. Cost is computed from token counts priced against the workspace's model catalog (the Model Library under AI Agents); a model missing from that catalog contributes nothing to the total.
Troubleshooting: Active but No Sessions or Traces
What's happening: the agent shows Active, yet Observability looks empty.
Why: three usual causes, in order of likelihood: the lists default to Today — your activity may be older; the agent accepted a payload the platform couldn't interpret (accepting data, which turns the agent Active, and understanding it are different steps — a payload in an unsupported format is accepted and discarded); or, for platform-connected agents, ingestion polls periodically and can stop after repeated failures.
Fix: widen the date range first; then confirm your instrumentation follows the platform's setup instructions for your framework; for connection-based agents, check the connection's health.
Monitoring, Incidents, and Policies Tabs
Monitoring — the monitoring dashboard filtered to this agent.
Incidents — the guardrail hits logged for this agent ("Flagged and blocked policy violations for this agent will appear here").
Policies — a read-only list of the governance policies applied to this agent; clicking one opens the policy.