diff --git a/autofix.mdx b/autofix.mdx index baeae6f..ef42075 100644 --- a/autofix.mdx +++ b/autofix.mdx @@ -1,9 +1,10 @@ --- title: "Autofix" -description: "Repair a malformed request and resend it once, before the fallback chain runs. Turn it on per harness." +description: "Use Manifest Autofix through the LLM Gateway to repair a malformed request and retry it once before fallback." icon: "wrench" keywords: ["auto-fix", "autofix", "self-healing", "LLM request repair", "malformed request", "400 bad request", "422 unprocessable", "model not found", "agent debugging", "harness debugging"] +canonical: "https://manifest.build/llm-gateway/docs/autofix" ---
-The failed original and its patched retry are separate [provider attempts](/observability#requests-and-provider-attempts), so with [request logs](/request-logs) on you can read both bodies side by side and see exactly which field was rewritten.
+The failed original and its patched retry are separate [provider attempts](/llm-gateway/docs/observability#requests-and-provider-attempts), so with [request logs](/llm-gateway/docs/request-logs) on you can read both bodies side by side and see exactly which field was rewritten.
The **Overview** page aggregates the same data across a time range:
@@ -161,7 +162,7 @@ Both **Recovered** cards link through to the matching filter on the request log.
## Environment variables
+
```bash
@@ -72,12 +73,12 @@ curl -X POST https://app.manifest.build/v1/chat/completions \
-d '{"model": "auto", "messages": [{"role": "user", "content": "Hello"}]}'
```
-`auto` asks Manifest to route the request. The request appears on the Requests page with the model that served it and its cost.
+`auto` asks the gateway to route the request. The request appears on the **Requests** page with the model that served it and its cost.
+
+
+### Harnesses you already have
+
+A harness that existed before Autofix keeps its state: the gateway never flips the toggle for you.
+
+
+
+
+
+
+
+
+## Your data
+
+
+
+
+The failed original and its patched retry are separate [provider attempts](/llm-gateway/docs/observability#requests-and-provider-attempts), so with [request logs](/llm-gateway/docs/request-logs) on you can read both bodies side by side and see exactly which field was rewritten.
+
+The **Overview** page aggregates the same data across a time range:
+
+| Card | What it measures |
+|---|---|
+| **Success rate** | Share of requests that ended successfully, however many attempts it took |
+| **Recovered requests** | Share of requests that failed at least one attempt and still succeeded |
+| **Recovered by Autofix** | Count of requests where a patched retry is what saved it |
+
+Both **Recovered** cards link through to the matching filter on the request log.
+
+
+
+
+```bash
+curl -X POST https://app.manifest.build/v1/chat/completions \
+ -H "Authorization: Bearer mnfst_YOUR_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{"model": "auto", "messages": [{"role": "user", "content": "Hello"}]}'
+```
+
+`auto` asks the gateway to route the request. The request appears on the **Requests** page with the model that served it and its cost.
+
+
+
+
+## Refreshing the model list
+
+A connection keeps the model list it discovered when you saved it. Nothing re-checks it on a schedule. When a provider adds, renames, or drops a model, click **Refresh models**: on your harness's **Routing** page, or on the connection itself under **Providers**.
+
+The refresh replaces the list, it does not merge it. A tier or a fallback pinned to a model id that no longer exists stops matching, so pin it to one of the new ids.
+
+## Key prefixes
+
+Each provider issues keys with a recognizable prefix. Useful for catching paste mistakes:
+
+| Provider | Prefix | Example |
+| ---------- | --------- | ------------ |
+| OpenAI | `sk-` | `sk-...` |
+| Anthropic | `sk-ant-` | `sk-ant-...` |
+| xAI | `xai-` | `xai-...` |
+| Meta | `LLM_` | `LLM_...` |
+| DeepSeek | `sk-` | `sk-...` |
+| Moonshot | `sk-` | `sk-...` |
+| MiniMax | `sk-` | `sk-...` |
+| Qwen | `sk-` | `sk-...` |
+| OpenRouter | `sk-or-` | `sk-or-...` |
+| Google | none | API key |
+| Mistral | none | API key |
+| Z.ai | none | API key |
+| Fireworks | `fw_` | `fw_...` |
+| Groq | `gsk_` | `gsk_...` |
+| Pioneer | `pio_sk_` | `pio_sk_...` |
+| Xiaomi MiMo | `sk-` | `sk-...` |
+| Hugging Face | `hf_` | `hf_...` |
+
+Providers not listed here (Cerebras, NVIDIA NIM, AWS Bedrock, Kilo, OpenCode Zen) issue keys with no fixed prefix.
+
+## Regional providers
+
+Some providers serve more than one region. Alibaba Cloud, AWS Bedrock, and MiniMax let you pick a region when you connect them, and the gateway routes to the matching endpoint.
diff --git a/llm-gateway/docs/providers/custom-providers.mdx b/llm-gateway/docs/providers/custom-providers.mdx
new file mode 100644
index 0000000..a514a68
--- /dev/null
+++ b/llm-gateway/docs/providers/custom-providers.mdx
@@ -0,0 +1,66 @@
+---
+title: "Custom providers"
+sidebarTitle: "Custom"
+description: "Connect any OpenAI- or Anthropic-compatible endpoint, including vLLM, TGI, LocalAI, or an internal service."
+icon: "plug"
+keywords:
+ ["vLLM", "TGI", "text-generation-inference", "LocalAI", "Xinference", "OpenLLM", "OpenAI-compatible", "Anthropic-compatible", "custom provider"]
+canonical: "https://manifest.build/llm-gateway/docs/providers/custom-providers"
+---
+
+If your endpoint speaks OpenAI or Anthropic, the gateway can route to it. Useful for self-hosted inference servers (vLLM, TGI, LocalAI), internal endpoints behind your VPN, or providers that aren't on the built-in list yet.
+
+## Compatible servers
+
+Any server exposing one of these endpoints works out of the box:
+
+| Format | Endpoint |
+| -------------------- | --------------------------- |
+| OpenAI-compatible | `POST /v1/chat/completions` |
+| Anthropic-compatible | `POST /v1/messages` |
+
+Common options that ship with one of these formats: [vLLM](https://github.com/vllm-project/vllm), [TGI](https://github.com/huggingface/text-generation-inference), [LocalAI](https://localai.io), [Xinference](https://github.com/xorbitsai/inference), [OpenLLM](https://github.com/bentoml/OpenLLM).
+
+## Add a custom provider
+
+
+
+
+The **Messages** tab renders the exchange as a conversation, with a rail down the side listing every turn. Search the rail or filter it by role, and click any row to jump to that turn in the main pane. Assistant turns show the tool calls the model actually made, not the tool definitions your client offered it.
+
+
+
+
+
+## Turning it on
+
+The switch is **Enable logs**, in the **Logs** section of each harness's **Settings** page.
+
+New harnesses have it on. To make sure a harness records its logs, check **Settings → Logs**.
+
+
+
+
+
+
@@ -52,9 +53,9 @@ New harnesses have it on. To make sure a harness records its logs, check **Setti