Known limits

View Source

These boundaries matter when deciding how to deploy ExAgent. Use Supported features for the capability map and each guide for exact configuration, results and failure handling.

BoundaryWhat to account for
Provider capabilitiesA catalogue model ID does not certify Chat tools, streaming or native JSON output. Declare the actual compatible profile and verify your endpoint.
Tool argumentsFunction calls require the mandatory arguments envelope. Invalid/truncated calls reject before effects; there is no JSON repair.
Retries and fallbackA retried request counts as one admitted request. Transport failures and timeouts are only retried on request, because the provider may have billed them. A portable history drops another model's reasoning and provider metadata.
Native outputThe provider receives a non-strict schema. Local schema/Ecto validation decides success. Stock responses may omit a refusal that accompanies valid JSON.
Usage and costTokens retain normalized/reported quality and cost is estimated. Unknown is not zero. A retrospective threshold cannot bound an invoice for work already in flight.
MemoryHost retention limits act after stock decoding. Upstream queues/materialization and caller-retained history have their own allocations.
StreamingDeltas are provisional. Every enumeration starts work; a suspended continuation remains caller-owned until resumed or halted.
CancellationFramework-owned tasks can close; arbitrary callbacks and external effects cannot be rolled back.
CheckpointsConfirmed data is durable only according to the Store. ETS is ephemeral, and failed saves block mutations until storage retry succeeds.
External effectsTimeouts, owner loss or lost acknowledgement can leave outcomes uncertain. Recovery requires host reconciliation; approval is not universal exactly-once execution.
CoordinationTrusted definitions and versioned bindings constrain branches. Flow has bounded flat branch/concurrency and journal/result limits. Fail-fast cannot undo sibling effects.
MCPStreamable HTTP requires an application-owned HTTP1-only Finch pool. A local timeout or reconnect cannot establish remote rollback or peer identity.
Trace ingestionHTTP success and exporter callbacks do not prove durable acceptance of every span. Sampling, saturation and partial rejection can lose data.
Direct OTLP HTTPNative exporter timeout/shutdown can retain profiles, atoms or sockets. Use an application-owned isolated VM/Collector when bounded cleanup is required.
MetricsThe optional bridge needs an application-owned experimental 0.6 metric SDK/reader. Trace ingestion endpoints do not imply metric support.
Dependency warningsStock TOML/WebSockex/gproc can emit diagnostics. Review your graph; a functional integration does not imply warning-free dependencies.

For the corresponding application handling, see Models, Runtime, Durability, Coordination, MCP and Observability.