reason-machines/trending-skills1 file

Openclaude Multi LLM

Use Claude Code's full tool system with any OpenAI-compatible LLM — GPT-4o, DeepSeek, Gemini, Ollama, and 200+ models via environment variable configuration.

Specification
Skill ID
reason-machines/trending-skills/openclaude-multi-llm
Publisher
reason-machines
Repository
trending-skills
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

reason-machines/trending-skills/openclaude-multi-llmInstalls these files
  • SKILL.md

What this skill tells the agent

OpenClaude Multi-LLM Skill

Skill by ara.so — Daily 2026 Skills collection.

OpenClaude is a fork of Claude Code that routes all LLM calls through an OpenAI-compatible shim (openaiShim.ts), letting you use any model that speaks the OpenAI Chat Completions API — GPT-4o, DeepSeek, Gemini via OpenRouter, Ollama, Groq, Mistral, Azure, and more — while keeping every Claude Code tool intact (Bash, FileRead, FileWrite, FileEdit, Glob, Grep, WebFetch, Agent, MCP, Tasks, LSP, NotebookEdit).


Installation

npm (recommended)

npm install -g @gitlawb/openclaude
# CLI command installed: openclaude

From source (requires Bun)

git clone https://node.gitlawb.com/z6MkqDnb7Siv3Cwj7pGJq4T5EsUisECqR8KpnDLwcaZq5TPr/openclaude.git
cd openclaude
bun install
bun run build
# optionally link globally
npm link

Run without build

bun run dev       # run directly with Bun, no build step

Activation — Required Environment Variables

You must set CLAUDE_CODE_USE_OPENAI=1 to enable the shim. Without it, the tool falls back to the Anthropic SDK.

VariableRequiredPurpose
CLAUDE_CODE_USE_OPENAIYesSet to 1 to activate OpenAI provider
OPENAI_API_KEYYes*API key (*omit for local Ollama/LM Studio)
OPENAI_MODELYesModel identifier
OPENAI_BASE_URLNoCustom endpoint (default: https://api.openai.com/v1)
CODEX_API_KEYCodex onlyChatGPT/Codex access token
CODEX_AUTH_JSON_PATHCodex onlyPath to Codex CLI auth.json

OPENAI_MODEL takes priority over ANTHROPIC_MODEL if both are set.


Provider Configuration Examples

OpenAI

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_API_KEY=$OPENAI_API_KEY
export OPENAI_MODEL=gpt-4o
openclaude

DeepSeek

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_API_KEY=$DEEPSEEK_API_KEY
export OPENAI_BASE_URL=https://api.deepseek.com/v1
export OPENAI_MODEL=deepseek-chat
openclaude

Google Gemini (via OpenRouter)

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_API_KEY=$OPENROUTER_API_KEY
export OPENAI_BASE_URL=https://openrouter.ai/api/v1
export OPENAI_MODEL=google/gemini-2.0-flash
openclaude

Ollama (local, no API key needed)

ollama pull llama3.3:70b

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_MODEL=llama3.3:70b
openclaude

Groq

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_API_KEY=$GROQ_API_KEY
export OPENAI_BASE_URL=https://api.groq.com/openai/v1
export OPENAI_MODEL=llama-3.3-70b-versatile
openclaude

Mistral

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_API_KEY=$MISTRAL_API_KEY
export OPENAI_BASE_URL=https://api.mistral.ai/v1
export OPENAI_MODEL=mistral-large-latest
openclaude

Azure OpenAI

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_API_KEY=$AZURE_OPENAI_KEY
export OPENAI_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment/v1
export OPENAI_MODEL=gpt-4o
openclaude

Codex (ChatGPT backend)

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_MODEL=codexplan   # or codexspark for faster loops
# reads ~/.codex/auth.json automatically if present
# or set: export CODEX_API_KEY=$CODEX_TOKEN
openclaude

LM Studio (local)

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_BASE_URL=http://localhost:1234/v1
export OPENAI_MODEL=your-model-name
openclaude

Together AI

export CLAUDE_CODE_USE_OPENAI=1
export OPENAI_API_KEY=$TOGETHER_API_KEY
export OPENAI_BASE_URL=https://api.together.xyz/v1
export OPENAI_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo
openclaude

Architecture — How the Shim Works

The shim file is src/services/api/openaiShim.ts (724 lines). It duck-types the Anthropic SDK interface so the rest of Claude Code is unaware it's talking to a different provider.

Claude Code Tool System
        │
        ▼
Anthropic SDK interface (duck-typed)
        │
        ▼
openaiShim.ts  ← format translation layer
        │
        ▼
OpenAI Chat Completions API
        │
        ▼
Any compatible model

What the shim translates

  • Anthropic message content blocks → OpenAI messages array
  • Anthropic tool_use / tool_result blocks → OpenAI function_calls / tool messages
  • OpenAI SSE streaming chunks → Anthropic stream events
  • Anthropic system prompt arrays → OpenAI system role messages

Files changed from upstream

src/services/api/openaiShim.ts   ← NEW: the shim (724 lines)
src/services/api/client.ts       ← routes to shim when CLAUDE_CODE_USE_OPENAI=1
src/utils/model/providers.ts     ← added 'openai' provider type
src/utils/model/configs.ts       ← added openai model mappings
src/utils/model/model.ts         ← respects OPENAI_MODEL for defaults
src/utils/auth.ts                ← recognizes OpenAI as valid 3rd-party provider

Developer Workflow — Key Commands

# Run in dev mode (no build)
bun run dev

# Build distribution
bun run build

# Launch with persisted profile (.openclaude-profile.json)
bun run dev:profile

# Launch with OpenAI profile (requires OPENAI_API_KEY in shell)
bun run dev:openai

# Launch with Ollama profile (localhost:11434, llama3.1:8b default)
bun run dev:ollama

# Launch with Codex profile
bun run dev:codex

# Quick startup sanity check
bun run smoke

# Validate provider env + reachability
bun run doctor:runtime

# Machine-readable runtime diagnostics
bun run doctor:runtime:json

# Persist diagnostics report to reports/doctor-runtime.json
bun run doctor:report

# Full local hardening check (typecheck + smoke + runtime doctor)
bun run hardening:check

# Strict hardening (includes project-wide typecheck)
bun run hardening:strict

Profile Bootstrap — One-Time Setup

Profiles save provider config to .openclaude-profile.json so you don't repeat env exports.

# Auto-detect provider (ollama if running, otherwise openai)
bun run profile:init

# Bootstrap for OpenAI
bun run profile:init -- --provider openai --api-key $OPENAI_API_KEY

# Bootstrap for Ollama with custom model
bun run profile:init -- --provider ollama --model llama3.1:8b

# Bootstrap for Codex
bun run profile:init -- --provider codex --model codexspark
bun run profile:codex

After bootstrapping, run the app via the persisted profile:

bun run dev:profile

TypeScript Integration — Using the Shim Directly

If you want to use the shim in your own TypeScript code:

// src/services/api/client.ts pattern — routing to the shim
import { openaiShim } from './openaiShim.js';

const useOpenAI = process.env.CLAUDE_CODE_USE_OPENAI === '1';

const client = useOpenAI
  ? openaiShim({
      apiKey: process.env.OPENAI_API_KEY,
      baseURL: process.env.OPENAI_BASE_URL ?? 'https://api.openai.com/v1',
      model: process.env.OPENAI_MODEL ?? 'gpt-4o',
    })
  : new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
// Streaming usage pattern (mirrors Anthropic SDK interface)
const stream = await client.messages.stream({
  model: process.env.OPENAI_MODEL!,
  max_tokens: 32000,
  system: 'You are a helpful coding assistant.',
  messages: [
    { role: 'user', content: 'Refactor this function for readability.' }
  ],
  tools: myTools, // Anthropic-format tool definitions — shim translates them
});

for await (const event of stream) {
  // events arrive in Anthropic format regardless of underlying provider
  if (event.type === 'content_block_delta') {
    process.stdout.write(event.delta.text ?? '');
  }
}

Model Quality Reference

ModelTool CallingCode QualitySpeed
GPT-4oExcellentExcellentFast
DeepSeek-V3GreatGreatFast
Gemini 2.0 FlashGreatGoodVery Fast
Llama 3.3 70BGoodGoodMedium
Mistral LargeGoodGoodFast
GPT-4o-miniGoodGoodVery Fast

Use this skill in a project

Open any RiverX project, search the Skills panel for reason-machines/trending-skills/openclaude-multi-llm, and install it in one click.

Use this skill