Technology
Observability and Traceability
Ask AI
Application and MCP logs, persistent conversation records, and optional model telemetry for CORRA AI.
CORRA provides observability across three complementary layers: application and MCP execution logs, persistent Corridor conversation records, and optional model/runtime telemetry.
Together, these records provide visibility from the original user request through governed tool execution and the generated response.
Application and MCP logs
Section titled “Application and MCP logs”The Corridor application records request and runtime lifecycle information such as request/session identifiers, provider information, execution time, status, and response characteristics.
MCP tools also pass through a common execution boundary that records:
- tool name;
- tool input arguments, with secret-bearing fields redacted;
- execution duration; and
- successful or failed completion.
These operational logs support troubleshooting and runtime monitoring independently of the persistent conversation record.
Conversation and tool-event history
Section titled “Conversation and tool-event history”CORRA chat interactions are persisted in Corridor.
The conversation is represented through a chat_thread with individual chat_message records for each user and assistant turn. For streamed CORRA responses, structured tool events emitted during generation are retained in the assistant message’s tool_calls JSON field.
The persistent record includes the conversation and workspace, authenticated user, message content, timestamps, selected agent, completion status, attachments, associated tool activity, provider-session mapping, and optional user feedback.
The selected agent is stored on the user turn. Tool activity is stored with the corresponding assistant turn. Provider-session correlation is maintained separately through chat_provider_session.
Example Corridor conversation record
Section titled “Example Corridor conversation record”The following uses illustrative sample values but reflects the structure persisted by Corridor.
{ "thread": { "thread_id": "8f2bc413-1c42-4b20-a6ca-14b24d74e128", "workspace_id": 12, "created_by": "jane.smith", "created_date": "2026-08-20T09:31:14Z", "last_message_at": "2026-08-20T09:31:17Z" },
"messages": [ { "message_id": 18426, "role": "user", "content": "Update the Account Age feature definition to clarify that it is measured in completed months.", "agent": "corra", "created_by": "jane.smith", "created_date": "2026-08-20T09:31:14Z" }, { "message_id": 18427, "role": "assistant", "content": "The Account Age feature definition has been updated.", "status": "success", "tool_calls": [ { "tool_call_id": "call_approval_91ca73", "type": "tool", "tool": "request_human_approval", "input": { "action": "Update Account Age feature definition", "proposed_change": { "feature": "account_age_months", "definition": "Number of completed months since the account was opened." } }, "output": { "decision": "approved", "approved_by": "jane.smith", "approved_at": "2026-08-20T09:31:19Z" }, "status": "completed" }, { "tool_call_id": "call_update_7c42a1", "type": "tool", "tool": "corridor-mcp_update_feature", "input": { "feature": "account_age_months", "definition": "Number of completed months since the account was opened." }, "status": "completed" } ], "created_by": "jane.smith", "created_date": "2026-08-20T09:31:17Z" } ],
"provider_session": { "provider_session_id": "ses_a84f29d91c" }}Corridor therefore retains the durable application record of who initiated the interaction, what was asked, which agent handled the request, what tool activity was associated with the response, what was generated, and when the interaction occurred.
Skill selection is runtime execution context rather than a separate field in the persisted chat_message record. The runtime request carries selected skill names independently of the chat persistence model.
Model and agent telemetry
Section titled “Model and agent telemetry”If you want visibility into how your LLM is being used, CORRA AI can send traces to your own observability platform. A trace records the steps involved in a request, including model calls, tool calls, and token usage, which is useful for monitoring cost, debugging slow or failed requests, and reviewing how the assistant arrived at an answer.
Tracing is OpenTelemetry-compatible, so it works with any observability provider that accepts OpenTelemetry data. Langfuse is one supported option.
Tracing is off by default. When enabled, it is configured with the endpoint of your observability platform and the credentials it issues. Tags can be applied to identify the traces sent from a particular deployment.
Trace data goes only to the platform you configure. Corridor does not collect or store it, and credentials are stored encrypted.
This complements Corridor’s persistent conversation history with execution-level telemetry. A trace can contain the overall agent operation together with child observations for model generations and tool executions.
The CORRA telemetry structure can include trace/session identifiers and observations such as SPAN, GENERATION, and TOOL. Generation observations capture information such as model, latency, time to first token, and token usage, while tool observations capture the tool operation and execution timing.
Example telemetry trace
Section titled “Example telemetry trace”The following uses illustrative sample values while following the structure of the telemetry emitted by CORRA.
{ "trace": { "id": "trc_8f3c2d91a1e7", "name": "session.llm:ai.streamText", "timestamp": "2026-08-20T09:31:14.120Z", "environment": "production", "sessionId": "ses_a84f29d91c", "input": "Find annual_income and summarize its current status.", "output": "Annual Income is a registered Data Element with alias annual_income. The current version is v3 and its lifecycle status is Approved." },
"observations": [ { "id": "span_4d81ac", "traceId": "trc_8f3c2d91a1e7", "type": "SPAN", "name": "session.llm:ai.streamText", "startTime": "2026-08-20T09:31:14.120Z", "endTime": "2026-08-20T09:31:17.010Z" }, { "id": "gen_31b842", "traceId": "trc_8f3c2d91a1e7", "parentObservationId": "span_4d81ac", "type": "GENERATION", "name": "session.llm:ai.streamText.doStream", "model": "configured-model", "startTime": "2026-08-20T09:31:14.125Z", "endTime": "2026-08-20T09:31:17.008Z", "latency": 2.883, "timeToFirstToken": 0.51, "usageDetails": { "input": 1240, "output": 146, "total": 1386 } }, { "id": "tool_91ca73", "traceId": "trc_8f3c2d91a1e7", "parentObservationId": "span_4d81ac", "type": "TOOL", "name": "corridor-mcp_search_objects", "startTime": "2026-08-20T09:31:15.020Z", "endTime": "2026-08-20T09:31:15.061Z", "latency": 0.041, "input": { "keyword": "annual_income", "object_types": ["DataElement"], "limit": 10 }, "output": { "name": "Annual Income", "alias": "annual_income", "object_type": "DataElement", "status": "Approved", "version": 3 } } ]}Tool observations in the actual telemetry use fields including traceId, parentObservationId, type, name, startTime, endTime, and latency. Generation observations additionally record the configured model and token usage.
The two records serve complementary purposes:
Corridor DB provides the durable application record of the conversation, authenticated user/workspace context, response, tool activity, and timestamps.
Optional model/runtime telemetry provides execution-level telemetry for the agent run, including model generation, tool execution, timing, and performance information.
Together, they allow a CORRA interaction to be followed from the user’s original request through governed Corridor tool usage and, where applicable, a human approval step to the final generated response or permitted platform action.
Was this page helpful?
Thanks for the feedback.