# OpenAI-Compatible LLM Integration Audita uses the pinned [PromptKit](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/171fb11f4e967a1da3af57843c6467954b14ba09) built-in OpenAI-compatible transport. PromptKit owns chat-completions wire framing, provider envelope parsing, transient retries, per-generation timeouts, and JSON Schema repair. A backend's configured base endpoint must support the selected profile's model and structured JSON-schema responses; local configuration inspection does not contact the provider. Audita selects role profiles independently for each pipeline entry and supplies its domain response schema and per-operation budget. PromptKit owns backend and credential selection, request preparation, transport, retries, repairs, and admission. Audita executes the same prepared handle and retains its own domain validation. Profiles may use native endpoint and credential settings; local inspection does not resolve a credential value or call the provider. `llm.transient_retries` counts additional attempts for eligible transient failures; explicit zero makes one attempt. `llm.repair_attempts` counts additional generations for schema-invalid model output. The operation timeout covers preparation, capacity waiting, retries, generation, and repair. Caller cancellation or an earlier deadline also applies. See [configuration](../config.md#settings) for defaults and the [PromptKit consumer contract](https://forge.maximumdirect.net/base-layer/promptkit/src/tag/v0.21.0/docs/consumers/pkg-promptkit.md) for protocol and retry details. A model operation that exhausts structural repair, a live-parent local operation timeout, capacity rejection, transport failure, malformed provider response, or provider HTTP failure is recoverable for that operation. Proposal generation then contributes no candidates from that response; a failed validation batch marks its candidates unavailable while other batches and later modules can continue. Caller cancellation, broken assets or configuration, and unknown internal failures remain fatal and cancel peers. Audita decodes into domain types only after PromptKit validates the JSON. Ordinary reports use safe reason codes and counts rather than provider messages. Full request/response content is written only with `--debug`; see [operations](../operations.md#debug-evidence).