Skip to main content

Module limits

Module limits 

Source

Constants§

DEFAULT_NAMESPACE
The namespace a KV call without an explicit one binds to. A namespace is a logical bucket: keys are unique within it, scans are scoped to it, and one user’s namespaces stay isolated from another’s.
DEFAULT_RECALL_LIMIT
Recall page size when the caller sets none.
DEFAULT_SCAN_LIMIT
KV scan page size when the caller sets none.
DEFAULT_STREAM_PAGE_SIZE
Page size a streaming reader pulls when the caller has not set an explicit limit. Large enough to amortize round-trips, small enough that an unbounded scan does not spike memory.
MAX_AGENT_STRING_BYTES
Cap on the envelope’s vocabulary strings (operation, tool, finish_reason), each.
MAX_BATCH_OPS
The most managed requests one mixed-operation batch (AGDX_BATCH_CODE) may carry. Bounds the server work one frame can demand. The assembled reply is additionally bounded by MAX_FRAME_BYTES like any other.
MAX_BODY_REFERENCE_BYTES
Cap on a BodyRef reference string (a URI, object key, or KV key naming where the externalized body lives).
MAX_CARD_CAPABILITIES
Max capability entries on an AgentCard.
MAX_CLIENT_METADATA
Ceiling on a connection’s advertised metadata (AGDX_SET_CLIENT_METADATA). The metadata is an opaque byte payload any client may set, not agent-only: an agent advertises its card under the AGDX schema, a regular app sets whatever blob its own tooling and the console interpret. The ceiling bounds the per-connection state the streaming server holds and, because the discovery read (AGDX_GET_CLIENTS_METADATA) returns a page of N connections at once, it also bounds a page at N * this. 64 KiB is generous for any card or app blob while keeping a page well under the frame cap even at the max page size.
MAX_FORK_ID_BYTES
Maximum fork id length, in bytes.
MAX_FRAME_BYTES
Ceiling on one [len: u32 LE][bytes] frame on the managed-command sockets, enforced by both the server and LaserData Cloud. A reply above it is replaced by a structured too-large error rather than truncated. The u32 length prefix addresses far more (4 GiB), so this is a deliberate per-frame memory bound on the whole-frame buffer, not a transport limit. Every consumer of the managed sockets (the server-side dispatch, the streaming server sidecar, the reply-byte budget) MUST source this one constant rather than redefining its own frame cap, so the layers cannot disagree and a reply admitted by one is not rejected by the next. Changing it moves all of them in lockstep.
MAX_GRAPH_NAME_BYTES
Maximum graph name length, in bytes. Bounded and control-character-free like a namespace: the name keys the projection registry and every traversal request.
MAX_GRAPH_NODE_LABELS
Max labels on one graph node.
MAX_GRAPH_RESULT_ELEMENTS
Hard ceiling on nodes plus edges in one graph reply.
MAX_GRAPH_TRAVERSE_DEPTH
Hard ceiling on the hop depth a single graph traversal may request.
MAX_IDEMPOTENCY_KEY_BYTES
Cap on a producer-supplied idempotency key.
MAX_INDEX_ENTRIES_PER_RECORD
Hard cap on the number of agdx.idx.* headers a single record may carry. Total header byte size is already capped, but a buggy producer could stamp dozens of tiny indexed scalars under the byte budget and slow the projector. 32 covers every legitimate analytics row with head-room.
MAX_KEY_BYTES
Maximum KV key length, in bytes.
MAX_MEMORY_BODY_BYTES
Max bytes in one memory item’s body (shares the opaque-value ceiling).
MAX_MEMORY_TAGS
Max tags on one memory item.
MAX_MEMORY_TAG_BYTES
Max bytes in one memory tag.
MAX_METADATA_ENTRIES
Max entries in an envelope’s metadata map.
MAX_METADATA_KEY_BYTES
Max bytes in one metadata key.
MAX_METADATA_TOTAL_BYTES
Max total bytes across the whole metadata map.
MAX_METADATA_VALUE_BYTES
Max bytes in one metadata value (scalar/text size).
MAX_NAMESPACE_BYTES
Maximum KV (and memory) namespace length, in bytes. A namespace is a caller-chosen bucket name that flows into grant matching and scan scoping, so it is bounded and control-character-free, while its charset stays open (namespaces legitimately carry /-style hierarchy).
MAX_PAGE_SIZE
Hard ceiling on rows in a single query reply. A limit above it is rejected with QueryError::TooLarge, and a 0 limit defaults to a full page. Callers page through larger result sets with offset.
MAX_PROJECTOR_PAYLOAD_BYTES
Cap on the payload bytes the projector inlines into a materialized row (when inline_payload is set). This bounds only the copy kept alongside the indexed row in the read-model backend, never the original message: the Iggy log always retains the full bytes and a fetch can replay them. Held at MAX_VALUE_BYTES (8 MiB) so a single inlined body and a single KV value share one “max opaque value” ceiling. A body above it still indexes and still lives in the log. It is just not duplicated into the row, so a typed fetch decodes from the log (or a claim-check ContentType::Ref body). The cap exists because multi-MB BLOBs per row bloat the embedded query DB and slow scans.
MAX_QUERY_REPLY_BYTES
Hard ceiling on a single query reply’s serialized bytes. A reply rides the managed-command socket as one [len: u32 LE][bytes] frame, buffered whole, so it is bounded by MAX_FRAME_BYTES by construction (the two are held equal on purpose so anything a backend admits to a reply, the socket can frame). Larger result sets are not returned as one oversized reply: they page via MAX_PAGE_SIZE rows plus offset. Raising this means raising MAX_FRAME_BYTES in lockstep across the server, LaserData Cloud, and the socket buffer, since it is the same frame.
MAX_RECALL_LIMIT
Max items a single recall returns (shares the query page cap).
MAX_ROLE_NAME_BYTES
Maximum role name length, in bytes.
MAX_SCAN_LIMIT
Hard ceiling on a KV scan page (LaserData Cloud clamps to it).
MAX_SOURCE_REF_BYTES
Max encoded bytes of a node or edge source provenance reference. A source names a stream, topic, key, or id, all of which are bounded inputs already, so this is a defensive ceiling against a hostile or buggy upsert inflating per-element state. Sized at two key-lengths, since the largest variant (a key-value source) names both a namespace and a key, far under the opaque value ceiling, as a source ref is a short pointer, not a payload.
MAX_TEXT_QUERY_BYTES
Byte cap on a lexical search’s query text (TextQuery.query).
MAX_VALUE_BYTES
Maximum KV value size, in bytes.