anthropic-compatible-endpoint-swap
Point the Claude Agent SDK at any Anthropic-compatible endpoint (OpenRouter, Vercel AI Gateway, Ollama, custom) by setting ANTHROPIC_BASE_URL +…
Skill by kjuhwa
Chalk Labs
Need help deploying anthropic-compatible-endpoint-swap?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/kjuhwa-anthropic-compatible-endpoint-swap
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: cloud, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/anthropic-compatible-endpoint-swap
What's inside
- Skill name
anthropic-compatible-endpoint-swap- Description
- Point the Claude Agent SDK at any Anthropic-compatible endpoint (OpenRouter, Vercel AI Gateway, Ollama, custom) by setting ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN before instantiating — no SDK changes, no adapter layer.
- License
- MIT
- Instructions
- 53 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Anthropic-compatible endpoint swap
## When to use
- Want to reuse the Claude Agent SDK's tool loop / session handling, but route LLM calls to a non-Anthropic provider (OpenRouter, Vercel AI Gateway, self-hosted Ollama, internal proxy).
- Building an app that offers "bring your own API key" for multiple providers.
- Need to bypass Anthropic for on-prem / cost / compliance reasons while keeping the same SDK.
## How it works
The SDK reads two env vars before every request:
- `ANTHROPIC_BASE_URL` - the API endpoint to call (default `https://api.anthropic.com`).
- `ANTHROPIC_AUTH_TOKEN` or `ANTHROPIC_API_KEY` - the auth header value.
Set these in the SDK subprocess env and it transparently talks to whatever endpoint you point at, as long as the endpoint accepts Anthropic's request/response format (which most gateways do).
1. Resolve the user's selected connection: `{ providerType: 'openrouter', apiKey: '...', baseUrl: 'https://openrouter.ai/api' }`.
2. Before `query()` / `new Anthropic()`, set:
```ts
process.env.ANTHROPIC_BASE_URL = baseUrl;
process.env.ANTHROPIC_AUTH_TOKEN = apiKey;
```
3. If you're spawning a subprocess, pass them via spawn env instead.
4. Model IDs may differ per provider (OpenRouter uses `anthropic/claude-opus-4.7`); expose the full model string in UI so users aren't guessing.
5. `clearClaudeBedrockRoutingEnvVars()` helper removes any leftover `CLAUDE_CODE_USE_BEDROCK=1` / `AWS_REGION` env that could mis-route.
## Example
```ts
function resolveAuthEnv(conn: LlmConnection): Record<string, string> {
switch (conn.providerType) {
case 'anthropic': return { ANTHROPIC_API_KEY: conn.apiKey };
case 'openrouter': return {
ANTHROPIC_BASE_URL: 'https://openrouter.ai/api/v1',
ANTHROPIC_AUTH_TOKEN: conn.apiKey,
};
case 'ollama': return {
ANTHROPIC_BASE_URL: 'http://localhost:11434/v1',
ANTHROPIC_AUTH_TOKEN: '',
};
case 'custom': return {
ANTHROPIC_BASE_URL: conn.baseUrl,
ANTHROPIC_AUTH_TOKEN: conn.apiKey ?? '',
};
}
}
```
## Gotchas
- `ANTHROPIC_AUTH_TOKEN` vs `ANTHROPIC_API_KEY` - SDK accepts both, but AUTH_TOKEN is treated as a raw bearer (good for OpenRouter) while API_KEY gets prefixed. Some gateways are strict about the Authorization header format.
- Ollama expects no auth; pass empty string, not `undefined`, or the SDK may skip setting the header at all and fail on strict endpoints that require it.
- Rate limits, feature support (vision, tools, streaming) vary per endpoint - some gateways are "kinda compatible". Test with YOUR tool set.
- Clear Bedrock env vars if users might switch - `CLAUDE_CODE_USE_BEDROCK=1` will override your base URL even if you set it.
- OpenRouter routes by model slug; the model ID tells OpenRouter which provider to forward to.From kjuhwa/skills-hub, MIT.
More from kjuhwa/skills-hub
- 0.409score
skills-hub
kjuhwa
Central skill/knowledge registry that syncs with kjuhwa/skills.git.
SkillDFreshness: DClaude Code +9 - 0.406score
langsmith-traceable-node-decorator-pattern
kjuhwa
Wrap each LangGraph node function with @traceable(name=...) so every step appears as a discrete child run in LangSmith, plus emit semantic LLM run_names via…
SkillDFreshness: DClaude Code +9 - 0.406score
llm-empty-plan-controller-fallback
kjuhwa
When a planning LLM returns an empty action list, force a deterministic verification action from a priority-ordered fallback list so the agent never spins on…
SkillDFreshness: DClaude Code +9 - 0.406score
alert-time-window-with-buffer
kjuhwa
Compute a query time window that covers the alert plus a 30-min buffer by parsing startsAt from various schemas (Alertmanager nested, top-level…
SkillDFreshness: DClaude Code +9 - 0.406score
bash-ast-permission-validator
kjuhwa
Validate agent bash commands by parsing them into an AST (bash-parser) and evaluating each subcommand of a pipeline/&&/|| chain against an allowlist, instead…
SkillDFreshness: DClaude Code +9 - 0.406score
claude-agent-sdk-multi-provider-bridge
kjuhwa
Drive non-Anthropic providers (OpenRouter, Ollama, Vercel AI Gateway, any Anthropic-compatible endpoint) through the Claude Agent SDK by swapping base URL +…
SkillDFreshness: DClaude Code +9 - 0.406score
evidence-driven-claim-validator
kjuhwa
Reject LLM-generated root-cause claims that aren't supported by the actual evidence dict — claim mentions "memory" but no host_metrics?
SkillDFreshness: DClaude Code +9 - 0.406score
fetch-interceptor-via-require-preload
kjuhwa
Patch globalThis.fetch in SDK subprocesses BEFORE the SDK captures it, by shipping a CJS interceptor bundle and loading it with node --require / bun --preload…
SkillDFreshness: DClaude Code +9 - 0.406score
healthy-short-circuit-skip-llm
kjuhwa
Bypass an expensive LLM diagnosis when an alert is provably healthy (resolved/info severity, no error annotations, evidence-investigated-and-empty), guarded…
SkillDFreshness: DClaude Code +9 - 0.406score
json-schema-from-python-signature
kjuhwa
Generate a JSON Schema for an LLM tool's input from a Python function signature using inspect + get_type_hints, mapping str→string, int→integer, list→array…
SkillDFreshness: DClaude Code +9 - 0.406score
langgraph-auth-inject-from-runnable-config
kjuhwa
Hydrate auth/user/org/thread/run identifiers into LangGraph state from the RunnableConfig at the very first node, so every downstream node sees a uniform…
SkillDFreshness: DClaude Code +9 - 0.406score
langgraph-compat-shim-import-path-preserved
kjuhwa
Keep a one-line import-shim module at an old path (e.g.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 17
- Last commit (this folder)
- Apr 24, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/kjuhwa/skills-hub
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from kjuhwa
- 0.409score
skills-hub
kjuhwa
Central skill/knowledge registry that syncs with kjuhwa/skills.git.
SkillDFreshness: DClaude Code +9 - 0.406score
llm-empty-plan-controller-fallback
kjuhwa
When a planning LLM returns an empty action list, force a deterministic verification action from a priority-ordered fallback list so the agent never spins on…
SkillDFreshness: DClaude Code +9 - 0.406score
langsmith-traceable-node-decorator-pattern
kjuhwa
Wrap each LangGraph node function with @traceable(name=...) so every step appears as a discrete child run in LangSmith, plus emit semantic LLM run_names via…
SkillDFreshness: DClaude Code +9 - 0.406score
alert-time-window-with-buffer
kjuhwa
Compute a query time window that covers the alert plus a 30-min buffer by parsing startsAt from various schemas (Alertmanager nested, top-level…
SkillDFreshness: DClaude Code +9 - 0.406score
bash-ast-permission-validator
kjuhwa
Validate agent bash commands by parsing them into an AST (bash-parser) and evaluating each subcommand of a pipeline/&&/|| chain against an allowlist, instead…
SkillDFreshness: DClaude Code +9 - 0.406score
credential-cache-file-for-mcp-subprocess
kjuhwa
Write decrypted per-source credentials to a session-scoped .credential-cache.json on disk so MCP stdio subprocesses can read them without the parent passing…
SkillDFreshness: DClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get anthropic-compatible-endpoint-swap running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
anthropic-compatible-endpoint-swap skill. Agent Mart. https://agentmart.dev/skills/kjuhwa-anthropic-compatible-endpoint-swap (last updated 2026-10-24)