Add two lines and nothing else. Provely finds LlamaIndex by itself and loads its plugin when the agent starts. You write no guard call and import no adapter.

agent.ts
import { Provely } from '@provely/sdk';

new Provely();
agent.py
from provely import Provely

Provely()

Provely attaches to the model calls and the tool calls of every LlamaIndex agent. The API key is required, and the SDK reads it from PROVELY_API_KEY. Get your API key: sign in at app.provely.sh/account/api-keys, open API keys, and create a key. The dashboard shows the key once. Keep it in an environment variable, never in code.

Which LlamaIndex packages does Provely find?

Provely finds llamaindex (TypeScript) and llama-index (Python). The plugin loads only when the package is present, so the core holds no framework code.

What did the grid measure for LlamaIndex?

The grid runs each failure case against a real app with the two lines, and again with no Provely line. The table states the column that holds the LlamaIndex paths.

A case passes in a column only when it passes on every path of that column.
ColumnPathsPassFailNot countedNot applicableHead
TypeScript frameworksLlamaIndex (and 6 paths in all)27 of 27 (1 passes under guard_mode: enforce; observe records only; rules cases not yet measured)00082acaae6
Python frameworksLlamaIndex (and 4 paths in all)26 of 27 (1 passes under guard_mode: enforce; observe records only; rules cases counted apart)1009f9131ba

A fail is a case that did not pass on at least one path. "Not counted" is a case where the framework coped alone and Provely made no fix, so it is not a pass. An inapplicable case is left out of the total.

The invented-value case passes under guard_mode: enforce; observe records only. Under observe, the default, Provely records the value and the write runs.

Measured on 2026-10-17 at commit 82acaae6. Measured on 2026-10-17 at commit 9f9131ba.

Source: tests/zero-code grid · retrieved 2026-10-17

What does Provely do when a call fails?

One deterministic check answers each failure, and it makes one of five actions.

ActionCodeWhat happens
Repair in placerepair_in_placeA lossless syntax fix, for example single quotes or a code fence around the JSON. The tool gets the arguments that the model meant.
Return the exact errorreturn_error_to_modelThe model gets one exact sentence about what is wrong, and it tries again. The tool does not run.
RetryretryOnly where the frozen retry table permits it, and always with the key of the first attempt.
RefuserefuseThe call never reaches the tool. Examples: a duplicate call, or a write that repeats a completed write in the same agent call.
RecordrecordThe call runs, and the line states what the check found.

Every fix writes one decision-log line. The line holds ids and codes only, never a value. No language model takes part in any decision.

Your own defences stay. Read how Provely works beside them.