Skip to content

Reference: Protobuf Schema

syntax = "proto3";
package aires.v1;

All messages are in the aires.v1 package.

The atomic unit of data in Aires. Every observability signal — logs, traces, metrics, HTTP events, errors, AI agent activity — is represented as an Event.

message Event {
  string id = 1;
  fixed64 timestamp_ns = 2;
  fixed64 observed_timestamp_ns = 3;
  string service = 4;
  string environment = 5;
  string host = 6;
  string instance = 7;
  Severity severity = 8;
  string message = 9;
  string display_text = 10;
  bytes body = 11;
  string trace_id = 12;
  string span_id = 13;
  string parent_span_id = 14;
  string subtrace_id = 15;
  string session_id = 16;
  string user_id = 17;
  string agent_id = 18;
  string source_file = 19;
  int32 source_line = 20;
  string source_function = 21;
  string category = 22;
  string kind = 23;
  repeated string tags = 24;
  map<string, string> attributes = 25;
  map<string, bytes> data = 26;
  repeated RelatedObject related = 27;
  MetricValue metric = 28;
  HttpInfo http = 29;
  ErrorInfo error = 30;
  ResourceInfo resource = 31;
}
#FieldTypeDescription
1idstringUnique event ID. Generated by the SDK as a UUID v7 (time-ordered).
2timestamp_nsfixed64Nanosecond-precision Unix timestamp. Set by the SDK at event creation time. Uses fixed64 for efficient encoding of large values.
3observed_timestamp_nsfixed64Timestamp when the collector received the event. Set by the collector, not the SDK.
4servicestringService name (e.g. "workforce-api"). Set from SDK config.
5environmentstringEnvironment name (e.g. "production"). Set from SDK config.
6hoststringHostname or pod name.
7instancestringInstance/replica identifier for distinguishing multiple instances of the same service.
8severitySeverityLog severity level (enum).
9messagestringHuman-readable log message. Should be plain text, searchable.
10display_textstringFormatted display text. May include ANSI escape codes or rich formatting.
11bodybytesRaw binary body. For payloads that don’t fit in message (binary data, large JSON, etc.).
12trace_idstringDistributed trace ID. W3C Trace Context compatible. Shared across all events in a distributed operation.
13span_idstringSpan identifier within a trace. Unique per unit of work.
14parent_span_idstringParent span ID. Links a span to its parent, forming a tree.
15subtrace_idstringSub-trace ID for grouping events within a nested operation (e.g. an AI agent’s task within a larger request).
16session_idstringSession identifier. Groups events across multiple requests from the same user/agent session.
17user_idstringAuthenticated user identifier.
18agent_idstringAI agent identifier. For tracking agent behavior in AI systems.
19source_filestringSource file path where the event originated.
20source_lineint32Line number in the source file.
21source_functionstringFunction or method name.
22categorystringEvent category for grouping: "http", "db", "auth", "ai", "k8s", etc.
23kindstringEvent kind: "log", "span", "metric", "request", "response", "error".
24tagsrepeated stringFree-form string tags for filtering and categorization.
25attributesmap<string, string>Structured string key-value pairs. For data you want to filter and search on.
26datamap<string, bytes>Arbitrary data blobs. Values are JSON-serialized bytes. For complex objects that don’t fit in string attributes.
27relatedrepeated RelatedObjectLinks to related entities (tasks, agents, workspaces, etc.).
28metricMetricValueMetric data (when kind = "metric").
29httpHttpInfoHTTP request/response info (when category = "http").
30errorErrorInfoError details (when logging errors).
31resourceResourceInfoResource context. Set by the collector, not the SDK. Contains Kubernetes metadata.
enum Severity {
  SEVERITY_UNSPECIFIED = 0;
  TRACE = 1;
  DEBUG = 2;
  INFO = 3;
  WARN = 4;
  ERROR = 5;
  FATAL = 6;
}
ValueNameDescription
0SEVERITY_UNSPECIFIEDDefault/unknown severity.
1TRACEFinest-grained debug information.
2DEBUGDevelopment diagnostics.
3INFONormal operational events.
4WARNPotential problems that may need attention.
5ERRORErrors that need investigation.
6FATALUnrecoverable errors; system cannot continue.

Links an event to a related entity for navigation and correlation.

message RelatedObject {
  string type = 1;
  string id = 2;
  string label = 3;
  string url = 4;
}
#FieldTypeDescription
1typestringEntity type: "task", "agent", "workspace", "request", "user", etc.
2idstringEntity identifier.
3labelstringHuman-readable label for display.
4urlstringOptional deep-link URL for navigation.

Metric data attached to events with kind = "metric".

message MetricValue {
  string name = 1;
  double value = 2;
  string unit = 3;
  MetricType type = 4;
}
#FieldTypeDescription
1namestringMetric name (e.g. "http.request.duration").
2valuedoubleNumeric value.
3unitstringUnit of measurement: "ms", "bytes", "count", "percent", etc.
4typeMetricTypeMetric type enum.
enum MetricType {
  METRIC_UNSPECIFIED = 0;
  GAUGE = 1;
  COUNTER = 2;
  HISTOGRAM = 3;
  SUMMARY = 4;
}
ValueNameDescription
0METRIC_UNSPECIFIEDDefault/unknown type.
1GAUGEPoint-in-time value (can go up or down).
2COUNTERCumulative value (only increases).
3HISTOGRAMIndividual observation for bucketed distribution.
4SUMMARYPre-computed quantile summary.

HTTP request/response details for events with category = "http".

message HttpInfo {
  string method = 1;
  string url = 2;
  string path = 3;
  int32 status_code = 4;
  int64 request_size = 5;
  int64 response_size = 6;
  int64 duration_ms = 7;
  string user_agent = 8;
  string remote_addr = 9;
}
#FieldTypeDescription
1methodstringHTTP method: "GET", "POST", "PUT", "DELETE", etc.
2urlstringFull request URL.
3pathstringURL path without query string (e.g. "/api/tasks").
4status_codeint32HTTP response status code (e.g. 200, 404, 500).
5request_sizeint64Request body size in bytes.
6response_sizeint64Response body size in bytes.
7duration_msint64Request duration in milliseconds.
8user_agentstringUser-Agent header value.
9remote_addrstringClient IP address.

Error details for error events.

message ErrorInfo {
  string type = 1;
  string message = 2;
  string stack = 3;
  bool handled = 4;
}
#FieldTypeDescription
1typestringError class/type name (e.g. "DatabaseError", "ValidationError").
2messagestringError message text.
3stackstringStack trace.
4handledbooltrue if the error was caught and handled; false if it was an unhandled exception.

Resource context injected by the collector. Contains infrastructure/deployment metadata.

message ResourceInfo {
  string cluster = 1;
  string namespace = 2;
  string pod = 3;
  string container = 4;
  string node = 5;
  map<string, string> labels = 6;
}
#FieldTypeDescription
1clusterstringKubernetes cluster name.
2namespacestringKubernetes namespace.
3podstringPod name.
4containerstringContainer name within the pod.
5nodestringKubernetes node name.
6labelsmap<string, string>Kubernetes labels from the pod/deployment.

Events are shipped in batches for transport efficiency.

message EventBatch {
  repeated Event events = 1;
  string sdk_name = 2;
  string sdk_version = 3;
  string sdk_language = 4;
}
#FieldTypeDescription
1eventsrepeated EventThe batch of events.
2sdk_namestringSDK identifier (e.g. "aires-sdk-rust", "aires-sdk-ts", "aires-sdk-python").
3sdk_versionstringSDK version string (e.g. "0.1.0").
4sdk_languagestringSDK language: "rust", "typescript", "python".

The gRPC service definition.

service AiresCollector {
  rpc Ingest(EventBatch) returns (IngestResponse);
  rpc IngestStream(stream EventBatch) returns (IngestResponse);
}
RPCInputOutputDescription
IngestEventBatchIngestResponseShip a single batch of events. Used for short-lived processes or periodic flushes.
IngestStreamstream EventBatchIngestResponseStream batches continuously over a persistent connection. Used for long-lived processes. Returns a single response when the stream ends.
message IngestResponse {
  int64 accepted = 1;
  int64 rejected = 2;
  repeated string errors = 3;
}
#FieldTypeDescription
1acceptedint64Number of events successfully accepted.
2rejectedint64Number of events rejected (validation failures).
3errorsrepeated stringError messages for rejected events.