Skip to main content
Version: 3.0

Monitoring and Reporting

Operaide records operational data on two distinct layers: an always-on stream of usage metrics that captures every workflow execution and every AI call as it happens, and an optional detail trace that records per-step inputs and outputs when you enable debug mode for a specific deployment. The Reporting dashboard surfaces the always-on stream. This chapter explains both layers, when each is appropriate, and how to manage them.


The Two Recording Layers

Always-on usage metrics

For every workflow execution, Operaide automatically records a ReaktorUsage entry containing:

  • The reaktor (id and name) and the package (app id) it belongs to
  • A unique run id
  • The start time, end time, and the duration in milliseconds
  • The execution status (success or error), with the error message when the run failed
  • The user who triggered the execution
  • The organization context

For every AI call inside a workflow, Operaide additionally records a TokenUsage entry containing:

  • The model and the provider that handled the call
  • Input, output, and total token counts
  • The reaktor and the run id the call belongs to
  • The user who triggered the call
  • The organization context

These records are written unconditionally. There is no setting to turn them off, and debug mode is not required. They are stored in the platform's own database with no automatic expiry — they remain available for as long as the operator wants to keep them.

What is not captured at this layer: the prompts sent to the model, the model's responses, the inputs and outputs of individual aktor steps, and any intermediate values inside the workflow. Those only exist when you explicitly enable detail traces — see the next subsection.

The split is intentional. The always-on stream is small enough to keep persistently and rich enough to answer billing, capacity-planning, and "is the system healthy" questions. The detail trace is large, contains potentially sensitive content, and is meant for troubleshooting — not as a permanent archive.

Opt-in detail traces

When you enable debug mode for a specific deployment, Operaide additionally writes per-step traces into the AktorStore collection. Each trace records the inputs and outputs of every aktor in the workflow execution, including the prompts sent to AI models and the responses received. Detail traces are valuable for diagnosing a misbehaving workflow or understanding why a particular run produced a particular result.

Two limits apply to detail traces today:

  • Retention is fixed at 30 days. A MongoDB TTL index automatically removes traces older than 30 days. There is no per-deployment configuration for this retention period yet.
  • Credentials are automatically redacted before storage, so an API key that appears in an aktor input does not end up in plain text in the trace. Personal data, business content, and other sensitive values are not redacted automatically — only credential-shaped values are caught. See Security and Privacy → Audit Logging and Usage Tracking for the redaction details.

Detail traces are designed for time-boxed investigations, not for permanent storage. If your compliance regime requires long-term retention of execution detail, see Long-term Retention at the end of this chapter.


How to Access

Navigate to Reporting in the left sidebar.

Reporting Dashboard


Overview

The Reporting dashboard displays a table with usage metrics per active Reaktor. You can switch between different views using the tabs at the top.


Report Tabs

Token Usage

Monitor AI token consumption across your Reaktors.

ColumnDescription
ReaktorName of the active Reaktor
Total TokensCumulative token usage
Input TokensTokens used for prompts/inputs
Output TokensTokens generated in responses

Use this tab to:

  • Track AI costs per Reaktor
  • Identify high-usage workflows
  • Plan capacity and budgets

Other Metrics

View resource utilization metrics beyond token usage.

MetricDescription
DocumentsNumber of documents in connected databases
EmbeddingsVector embeddings stored
API CallsExternal API invocations

Use this tab to:

  • Monitor data growth
  • Track resource consumption
  • Plan storage capacity

Reaktor Usage

Monitor Reaktor health and execution status.

ColumnDescription
ReaktorName of the Reaktor
ExecutionsTotal number of runs
Success RatePercentage of successful executions
Error StatusCurrent error state and recent failures

Use this tab to:

  • Identify failing Reaktors
  • Monitor system health
  • Troubleshoot issues

Debug Mode and Detail Traces

The detail trace described under The Two Recording Layers is gated by a per-deployment debug mode toggle. By default it is off. Turning it on causes the platform to start writing per-step traces for that deployment until you turn it off again.

There are two ways to control debug mode:

  • From the admin UI, on the deployment's settings page.
  • Programmatically via the REST API, which is the right approach for automated incident response and monitoring workflows:
    • PUT /api/v1/deployments/{id}/debug-mode — turn debug mode on or off for the specified deployment.
    • DELETE /api/v1/deployments/{id}/logs — purge the existing detail traces for that deployment, useful at the end of a contained investigation.

The typical incident-response pattern is: enable debug mode, reproduce the error, collect the traces, disable debug mode, and (if appropriate) purge the traces when the investigation is complete.

A few things to keep in mind when working with debug mode:

  • The detail trace is created going forward from the moment debug mode is enabled. It cannot reconstruct executions that already happened with debug mode off.
  • The 30-day TTL applies regardless of whether debug mode is currently on. Older traces age out even if you re-enable debug mode later.
  • Detail traces retain potentially sensitive workflow content, so the decision to enable debug mode for a production deployment is a deliberate one — especially for workflows that process personal data. See Compliance → Known Limits for the compliance framing.

The Audit Service Feed

In addition to keeping its own usage records locally, an Operaide instance can optionally report aggregated metrics to a central audit service. This is useful for cross-instance observability, billing reconciliation, and capacity planning across a fleet of Operaide deployments managed by the same operator.

The audit service feed has three properties worth knowing:

  • It is a required platform component. Every Operaide deployment connects to the audit service (default URL: https://audit.operaide.ai, configurable via the OPERAIDE_AUDITING_URL environment variable) and reports aggregated metrics every 24 hours. The audit service URL and authentication token are configured through environment variables and must be provided — the platform will not start without them. This is the one outbound connection the platform makes by default, beyond whatever AI providers and external integrations the operator configures through the connection system. The data transmitted is documented in the On-Prem Installation Guide → Network Requirements section.
  • It carries aggregated metrics, not raw events. The reporters compute totals per organization, per model, per day, and similar aggregations using database-level aggregation pipelines, then send only those aggregates. Prompts, workflow payloads, per-event user identities, and any other potentially sensitive content stay on the local instance. If you use the built-in mail integration, outbound emails are additionally routed through the audit service — see the On-Prem guide for details.
  • It is not a SIEM replacement. If you need a per-event audit stream into a centralized security information and event management system, build that pipeline yourself from the local records or from CSV exports — the audit service feed is designed for capacity and billing observability, not for security event correlation.

Features

Refresh

Click the Refresh button to update the displayed data with the latest metrics.

CSV Export

Click the Export CSV button to download the current report data as a CSV file for:

  • External analysis
  • Record keeping
  • Sharing with stakeholders

Best Practices

  • Regular Monitoring: Check reports regularly to catch issues early
  • Export Baselines: Export CSV reports periodically to track trends over time
  • Set Alerts: Use error status monitoring to identify and resolve issues quickly
  • Cost Management: Monitor token usage to optimize AI spending

Long-term Retention

Operaide keeps TokenUsage and ReaktorUsage entries persistently inside its own database — there is no automatic expiry on these records, so the operator decides how long they live. For most operational purposes (cost tracking, capacity planning, troubleshooting recent issues) this is enough on its own and no extra infrastructure is needed.

For compliance regimes that require long-term immutable audit archives — multi-year retention, write-once semantics, formal evidence of past activity — Operaide is not designed to be the system of record. The recommended pattern is:

  1. Use the CSV Export on the Reporting dashboard, or read directly from the local usage collections, to extract the data on a regular schedule.
  2. Pipe that data into the long-term storage your operator already maintains for compliance — for example, write-once object storage with object-lock semantics, an external SIEM, or a regulated archive service.
  3. Treat the local Operaide records as the working set, not the archive of record.

Detail traces (the ones gated by debug mode) age out after 30 days regardless of operator configuration, so anything you need to keep from a detail trace must be exported within that window. See Security and Privacy → Known Limits for the compliance context, and the related backlog story for the planned configurable detail-log TTL.