> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Private Agent Limits (Early Access)

> Reference for Private Agent execution, Kubernetes, Prometheus, and AI context limits.

<Warning>
  **Early Preview:** Rootly Private Agent is under active development and available only to approved customers. Features, configuration, limits, and APIs may change before general availability. Confirm the approved agent and backend versions with your Rootly representative before production use.
</Warning>

Use this page as the canonical numeric reference for the early-access Private Agent. Setup guides link here rather than repeating policy defaults and ceilings. Confirm compatibility with your Rootly representative when upgrading either the agent or backend.

## Shared Runtime and AI Context

| Boundary                                          | Default or Maximum                  | Behavior                                                                                        |
| ------------------------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------- |
| `runtime.maximum_concurrency`                     | Default 8; configurable from 1 to 8 | Shared across Kubernetes and Prometheus user invocations                                        |
| Each registered input or output JSON schema       | 65,536 serialized bytes             | Oversized or non-serializable snapshots are rejected; the last accepted snapshot remains active |
| Private-provider result entering AI model context | 128 KiB                             | Larger results are rejected before model context; narrow the request                            |
| AI SRE Pod-log call                               | 64 KiB                              | Smaller than the local provider's log ceiling to preserve investigation context                 |

Local provider limits and AI context limits are independent. A response that fits an adapter's local limit can still exceed the AI context limit. Request deadlines and cancellation also bound execution and result delivery.

## Kubernetes

| Local Boundary                    | Default | Hard Maximum |
| --------------------------------- | ------: | -----------: |
| Objects per list page             |     500 |        1,000 |
| Watch duration, seconds           |      30 |           60 |
| Encoded result size               |   2 MiB |        2 MiB |
| Pod-log bytes                     | 256 KiB |        1 MiB |
| Pod-log request duration, seconds |      30 |           60 |

The [Kubernetes guide](/private-agent-kubernetes#query-pod-logs-safely) explains targeted log arguments, truncation, permissions, and resource sizing. These bounds limit agent-side handling, not Kubernetes API server workload.

## Prometheus

Set these keys under an instance's `policy` mapping to tighten its limits.

| Local Policy                                          | Configuration Key           | Default | Hard Maximum |
| ----------------------------------------------------- | --------------------------- | ------: | -----------: |
| Concurrent user requests per instance                 | `maximum_concurrency`       |       2 |            8 |
| Response bytes after decompression                    | `maximum_result_bytes`      | 131,072 |      131,072 |
| Returned series or discovery entries                  | `maximum_series`            |     100 |        1,000 |
| Requested time window, seconds                        | `maximum_range_seconds`     |  86,400 |      604,800 |
| Range points per series                               | `maximum_points_per_series` |  11,000 |       11,000 |
| Request timeout, seconds, including admission waiting | `maximum_timeout_seconds`   |      15 |           30 |

Omitted or zero local policy values select defaults. Positive values may tighten the bounds. Explicit tool limits and timeouts must be positive and cannot exceed local policy. The shared runtime concurrency bound also applies.

| Input or Topology Boundary                                                |     Maximum |
| ------------------------------------------------------------------------- | ----------: |
| Prometheus instances per process                                          |          16 |
| PromQL expression or individual match selector                            | 8,192 bytes |
| Match selectors per request                                               |          20 |
| RFC3339 timestamp                                                         |    64 bytes |
| Metric or standard label name                                             |   255 bytes |
| `step_seconds`                                                            |      86,400 |
| Entire URL-encoded GET request target, including configured endpoint path | 8,192 bytes |

Metric-name and label-value discovery use GET-only upstream endpoints. Their aggregate request-target limit counts all selectors, percent-encoding, other parameters, and the configured endpoint path; individually valid arguments may need narrowing to fit. Metadata GETs share this bound. Query and label-name tools use form-encoded POST requests.

## Health Probes

Prometheus health observations are cached for 15 seconds. Each instance has one serialized query probe with a timeout of at most 2 seconds, independent of user-request admission, and one reserved HTTP connection. The runtime permits at most 17 concurrent provider probes so the supported Prometheus instances plus Kubernetes fit in one probe wave within the 5-second readiness budget.

User saturation alone does not mark an upstream unhealthy. A failed upstream probe can still affect readiness. See the [Prometheus guide](/private-agent-prometheus#health-and-compatibility) for status behavior and compatibility.

## Maintaining This Reference

Update this reference alongside changes to agent policy defaults, tool input validation, runtime health budgets, or Rootly's schema and AI-context guards. Keep setup examples illustrative, link to these tables for limits, and validate the examples against matching early-access builds. These limits are not a production load-capacity guarantee.
