diff --git a/images/claude_desktop_developer.png b/images/claude_desktop_developer.png
new file mode 100644
index 0000000..490a575
Binary files /dev/null and b/images/claude_desktop_developer.png differ
diff --git a/images/claude_desktop_developer_settings.png b/images/claude_desktop_developer_settings.png
new file mode 100644
index 0000000..1cda1c4
Binary files /dev/null and b/images/claude_desktop_developer_settings.png differ
diff --git a/images/claude_desktop_landing.png b/images/claude_desktop_landing.png
new file mode 100644
index 0000000..926da22
Binary files /dev/null and b/images/claude_desktop_landing.png differ
diff --git a/images/claude_desktop_troubleshooting.png b/images/claude_desktop_troubleshooting.png
new file mode 100644
index 0000000..0375c44
Binary files /dev/null and b/images/claude_desktop_troubleshooting.png differ
diff --git a/manage/ai/claude-desktop.mdx b/manage/ai/claude-desktop.mdx
index ee3a75b..f0615e7 100644
--- a/manage/ai/claude-desktop.mdx
+++ b/manage/ai/claude-desktop.mdx
@@ -5,6 +5,14 @@ description: "Connect Claude Desktop's third-party inference to a Pangolin AI Ga
Claude Desktop can route its requests through a third-party inference gateway instead of Anthropic directly. Point it at an AI Gateway resource that has an Anthropic-compatible provider attached — Anthropic itself, Bedrock, Vertex AI, or a custom Anthropic-compatible endpoint. See [AI Gateway Overview](/manage/ai/overview) if you haven't set that up yet.
+
+
+
+
import AiGatewayKey from "/snippets/ai-gateway-key.mdx";
You'll need the resource's URL (its ``) and its API key (``). Both are on the resource's Keys page.
@@ -14,21 +22,34 @@ You'll need the resource's URL (its ``) and its API key (``). Bot
## Steps
1. Open Claude Desktop, go to the menu in the top left and select **Help > Troubleshooting**, and turn on **Developer Mode**.
+
+
+
2. From the menu bar, open **Developer**, then **Configure Third-Party Inference…**.
+
+
+
3. Select **Gateway**
4. Select **Credential kind** > **Static API Key**.
-3. Fill in:
- - **Gateway base URL:** ``
- - **Gateway API Key:** ``
-4. Restart Claude Desktop.
-
-{/*
-Screenshot: `/images/ai/claude-desktop-inference-dialog.png`
-The "Configure Third-Party Inference" dialog with the Gateway URL and API Key fields filled in.
+5. Fill in:
+ - **Gateway base URL:** ``
+ - **Gateway API Key:** ``
-
+
-*/}
+6. Restart Claude Desktop.
Send a message to confirm it's working — check the resource's activity in Pangolin's logs if you want to verify traffic is actually flowing through the gateway rather than straight to Anthropic.
diff --git a/manage/ai/claude.mdx b/manage/ai/claude.mdx
index 6cf2c2b..1fe1030 100644
--- a/manage/ai/claude.mdx
+++ b/manage/ai/claude.mdx
@@ -37,14 +37,6 @@ To undo it:
pangolin configure claude --reset
```
-{/*
-Screenshot: `/images/ai/claude-cli-tab.png`
-The Claude Code card on a resource's Keys page, expanded, with the CLI tab selected showing the `pangolin configure claude` command.
-
-
-
-*/}
-
## Manual setup
Pick the preset that matches your provider.
@@ -122,12 +114,4 @@ Use this when the resource has a custom provider pointed at Moonshot AI's Anthro
"ENABLE_TOOL_SEARCH": "false"
}
}
-```
-
-{/*
-Screenshot: `/images/ai/claude-manual-tab.png`
-The same card with the Manual tab selected and the preset dropdown open, showing Default/Bedrock/Vertex/Kimi options.
-
-
-
-*/}
\ No newline at end of file
+```
\ No newline at end of file
diff --git a/manage/ai/codex.mdx b/manage/ai/codex.mdx
index adc39fc..6aeb7fc 100644
--- a/manage/ai/codex.mdx
+++ b/manage/ai/codex.mdx
@@ -37,14 +37,6 @@ To undo it:
pangolin configure codex --reset
```
-{/*
-Screenshot: `/images/ai/codex-cli-tab.png`
-The Codex card on a resource's Keys page, expanded, with the CLI tab selected showing the `pangolin configure codex` command.
-
-
-
-*/}
-
## Manual setup
Merge this into `~/.codex/config.toml` (honors `$CODEX_HOME` if you've set it):
@@ -65,12 +57,4 @@ Codex reads the key from the environment variable named in `env_key`, not from t
export PANGOLIN_API_KEY=
```
-Codex is the one client here that also tolerates no key at all: for a private resource you can drop the `env_key` line and skip the export entirely. Exporting `PANGOLIN_API_KEY=none` works too, so use whichever you find clearer.
-
-{/*
-Screenshot: `/images/ai/codex-manual-tab.png`
-The same card with the Manual tab selected, showing the config.toml snippet.
-
-
-
-*/}
+Codex is the one client here that also tolerates no key at all: for a private resource you can drop the `env_key` line and skip the export entirely. Exporting `PANGOLIN_API_KEY=none` works too, so use whichever you find clearer.
\ No newline at end of file
diff --git a/manage/ai/gemini.mdx b/manage/ai/gemini.mdx
index db5d3b5..867566f 100644
--- a/manage/ai/gemini.mdx
+++ b/manage/ai/gemini.mdx
@@ -37,14 +37,6 @@ To undo it:
pangolin configure gemini --reset
```
-{/*
-Screenshot: `/images/ai/gemini-cli-tab.png`
-The Gemini CLI card on a resource's Keys page, expanded, with the CLI tab selected showing the `pangolin configure gemini` command.
-
-
-
-*/}
-
## Manual setup
Write `~/.gemini/.env`:
@@ -64,12 +56,4 @@ export GEMINI_API_KEY=
gemini
```
-{/*
-Screenshot: `/images/ai/gemini-manual-tab.png`
-The same card with the Manual tab selected, showing the .env file and shell snippets.
-
-
-
-*/}
-
For a private resource, keep `GEMINI_API_KEY` in place and set it to `none`. Gemini CLI won't start without it set to something.
diff --git a/manage/ai/openclaw.mdx b/manage/ai/openclaw.mdx
index 38773e6..e37072b 100644
--- a/manage/ai/openclaw.mdx
+++ b/manage/ai/openclaw.mdx
@@ -43,14 +43,6 @@ openclaw onboard --install-daemon
When prompted, choose **QuickStart or Manual mode**, select the custom/OpenAI-compatible provider option, and enter the base URL and key.
-{/*
-Screenshot: `/images/ai/openclaw-onboard.png`
-The `openclaw onboard` interactive wizard at the provider selection step.
-
-
-
-*/}
-
## Manual setup
Onboarding writes `~/.openclaw/openclaw.json`. You can edit it directly instead - changes reload automatically:
diff --git a/manage/ai/opencode.mdx b/manage/ai/opencode.mdx
index d642417..013c269 100644
--- a/manage/ai/opencode.mdx
+++ b/manage/ai/opencode.mdx
@@ -37,14 +37,6 @@ To undo it:
pangolin configure opencode --reset
```
-{/*
-Screenshot: `/images/ai/opencode-cli-tab.png`
-The OpenCode card on a resource's Keys page, expanded, with the CLI tab selected showing the `pangolin configure opencode` command.
-
-
-
-*/}
-
## Manual setup
Merge this into your global `opencode.json` (`~/.config/opencode/opencode.json`, or `$XDG_CONFIG_HOME/opencode/opencode.json` if set):
@@ -86,12 +78,4 @@ Then merge your key into `auth.json` (`~/.local/share/opencode/auth.json`, or `$
`auth.json` is required even for a private resource. OpenCode refuses to start a provider with no key at all and fails with `OpenAI API key is missing. Pass it using the 'apiKey' parameter or the OPENAI_API_KEY environment variable.` Set the key to `none` rather than leaving the entry out.
-Only add entries for the providers your resource actually supports. To point a different OpenCode provider (`openrouter`, `google`, `groq`, etc.) at this gateway, add a matching block under `provider` in `opencode.json` and a matching key in `auth.json`.
-
-{/*
-Screenshot: `/images/ai/opencode-manual-tab.png`
-The same card with the Manual tab selected, showing the opencode.json/auth.json snippets.
-
-
-
-*/}
+Only add entries for the providers your resource actually supports. To point a different OpenCode provider (`openrouter`, `google`, `groq`, etc.) at this gateway, add a matching block under `provider` in `opencode.json` and a matching key in `auth.json`.
\ No newline at end of file
diff --git a/manage/ai/overview.mdx b/manage/ai/overview.mdx
index cfa2405..6edb72b 100644
--- a/manage/ai/overview.mdx
+++ b/manage/ai/overview.mdx
@@ -17,26 +17,10 @@ A resource only understands the API format(s) its attached providers support. An
Sidebar → **AI Gateway** → **Providers** → **Create**. Pick a provider type, paste in its API key, and save. You can add as many as you need.
-{/*
-Screenshot: `/images/ai/create-provider.png`
-The AI Gateway → Providers → Create form, showing the provider type dropdown and API key field filled in for OpenAI or Anthropic.
-
-
-
-*/}
-
## 2. Create a resource
Resources → **Create** → set **Type** to **AI Gateway**, pick a domain, and attach the provider(s) from step 1. You can also attach providers to an existing resource later from its **AI Gateway** settings tab.
-{/*
-Screenshot: `/images/ai/create-resource.png`
-The new resource dialog with Type set to "AI Gateway" and a provider selected in the AI Providers section.
-
-
-
-*/}
-
## 3. Get a key
How a client authenticates depends on whether the resource is public or private.
@@ -56,14 +40,6 @@ Only reachable from devices connected to your Pangolin network, so no key is che
You still have to put *something* in the client's key field. Most AI clients refuse to start with no key set at all, so use the literal string `none`. Deleting the field usually breaks things - Claude Code, for instance, silently falls back to your regular Anthropic account if `apiKeyHelper` is missing, and OpenCode errors out with `OpenAI API key is missing`.
-{/*
-Screenshot: `/images/ai/api-keys-panel.png`
-The resource launcher's API Keys panel, showing the Identity Key section and the "Configure Coding Agents" cards below it.
-
-
-
-*/}
-
## 4. Connect a client
Every resource's Keys page has ready-to-copy setup for common clients, and `pangolin configure ` can write the config for you. Full instructions per client: