1 line
35 KiB
JSON
1 line
35 KiB
JSON
{"repo": "aryanjsx/openclaude", "files": {"README.md": {"dbe5bb3355a29947159bb2434c6fbe77bc0b4f83": {"t": 1785674035.7379076, "n": 8482, "h": "62220a7fc3440780", "c": "<p align=\"center\">\n <strong><code>>_ OpenClaude</code></strong>\n</p>\n\n<p align=\"center\">\n Claude Code with <strong>any LLM</strong> — not just Claude.\n</p>\n\n<p align=\"center\">\n <a href=\"https://www.npmjs.com/package/@aryanjsx/openclaude\"><img src=\"https://img.shields.io/npm/v/@aryanjsx/openclaude?style=flat-square&color=7c3aed&label=npm\" alt=\"npm\"></a>\n <a href=\"https://github.com/aryanjsx/Openclaude\"><img src=\"https://img.shields.io/github/stars/aryanjsx/Openclaude?style=flat-square&color=7c3aed\" alt=\"stars\"></a>\n <a href=\"https://github.com/aryanjsx/Openclaude/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-7c3aed?style=flat-square\" alt=\"license\"></a>\n <a href=\"https://github.com/aryanjsx/Openclaude\"><img src=\"https://img.shields.io/badge/node-%3E%3D20-7c3aed?style=flat-square\" alt=\"node\"></a>\n</p>\n\n<p align=\"center\">\n <a href=\"#install\">Install</a> •\n <a href=\"#quick-start\">Quick Start</a> •\n <a href=\"#providers\">Providers</a> •\n <a href=\"#model-guide\">Model Guide</a> •\n <a href=\"#how-it-works\">How It Works</a>\n</p>\n\n---\n\nPlug in **GPT-4o, DeepSeek, Gemini, Llama, Mistral, Ollama**, or any model that speaks the OpenAI chat completions API. All of Claude Code's tools work — bash, file read/write/edit, grep, glob, agents, tasks, MCP — powered by whatever model you choose.\n\n**200+ compatible models. 15 built-in tools. 786 lines of shim code. Zero extra dependencies.**\n\n## Install\n\n**npm (recommended)**\n\n```bash\nnpm install -g @aryanjsx/openclaude\n```\n\n**From source**\n\n```bash\ngit clone https://github.com/aryanjsx/Openclaude.git\ncd Openclaude\nbun install\nbun run build\n```\n\n**Run directly with Bun (no build step)**\n\n```bash\ngit clone https://github.com/aryanjsx/Openclaude.git\ncd Openclaude\nbun install\nbun run dev\n```\n\n## Quick Start\n\n**1. Set your provider**\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-your-key-here\nexport OPENAI_MODEL=gpt-4o\n```\n\n**2. Launch**\n\n```bash\nopenclaude\n```\n\nThat's it. Streaming, tool calling, file editing, multi-step reasoning — everything works through the model you pick. The npm package name is `@aryanjsx/openclaude`, but the CLI command is `openclaude`.\n\n## Providers\n\n<table>\n<tr><th>Provider</th><th>Setup</th></tr>\n<tr>\n<td><strong>OpenAI</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_MODEL=gpt-4o\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>DeepSeek</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_BASE_URL=https://api.deepseek.com/v1\nexport OPENAI_MODEL=deepseek-chat\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Gemini</strong><br><sub>via OpenRouter</sub></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-or-...\nexport OPENAI_BASE_URL=https://openrouter.ai/api/v1\nexport OPENAI_MODEL=google/gemini-2.0-flash\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Ollama</strong><br><sub>local, free</sub></td>\n<td>\n\n```bash\nollama pull llama3.3:70b\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:11434/v1\nexport OPENAI_MODEL=llama3.3:70b\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Together AI</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.together.xyz/v1\nexport OPENAI_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Groq</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=gsk_...\nexport OPENAI_BASE_URL=https://api.groq.com/openai/v1\nexport OPENAI_MODEL=llama-3.3-70b-versatile\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Mistral</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.mistral.ai/v1\nexport OPENAI_MODEL=mistral-large-latest\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Azure OpenAI</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=your-azure-key\nexport OPENAI_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment/v1\nexport OPENAI_MODEL=gpt-4o\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>LM Studio</strong><br><sub>local</sub></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:1234/v1\nexport OPENAI_MODEL=your-model-name\n```\n\n</td>\n</tr>\n</table>\n\nAny provider that exposes an OpenAI-compatible `/v1/chat/completions` endpoint will work.\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `CLAUDE_CODE_USE_OPENAI` | Yes | Set to `1` to enable the OpenAI provider |\n| `OPENAI_API_KEY` | Yes\\* | Your API key (\\*not needed for local models) |\n| `OPENAI_MODEL` | Yes | Model name (e.g. `gpt-4o`, `deepseek-chat`, `llama3.3:70b`) |\n| `OPENAI_BASE_URL` | No | API endpoint (defaults to `https://api.openai.com/v1`) |\n\n`ANTHROPIC_MODEL` can also override the model name. `OPENAI_MODEL` takes priority.\n\n## What Works\n\n| Feature | Status |\n|---------|--------|\n| All 15 tools (Bash, FileRead, FileWrite, FileEdit, Glob, Grep, WebFetch, WebSearch, Agent, MCP, LSP, NotebookEdit, Tasks) | Fully working |\n| Real-time token streaming | Fully working |\n| Multi-step tool chains | Fully working |\n| Vision (base64 & URL images) | Fully working |\n| Slash commands (/commit, /review, /compact, /diff, /doctor) | Fully working |\n| Sub-agents (AgentTool) | Fully working |\n| Persistent memory | Fully working |\n\n**What's different from the original:**\n\n- No extended thinking mode (OpenAI models use different reasoning approaches)\n- No Anthropic prompt caching or beta headers\n- 32K default max output tokens (handled gracefully if a model caps lower)\n\n## Model Guide\n\n| Model | Tool Calling | Code Quality | Speed |\n|-------|:---:|:---:|:---:|\n| GPT-4o | Excellent | Excellent | Fast |\n| DeepSeek-V3 | Great | Great | Fast |\n| Gemini 2.0 Flash | Great | Good | Very Fast |\n| Llama 3.3 70B | Good | Good | Medium |\n| Mistral Large | Good | Good | Fast |\n| GPT-4o-mini | Good | Good | Very Fast |\n| Qwen 2.5 72B | Good | Good | Medium |\n| Smaller models (<7B) | Limited | Limited | Very Fast |\n\nFor best results, use models with strong function/tool calling support.\n\n## How It Works\n\nThe shim (`src/services/api/openaiShim.ts`) is a thin translation layer between Claude Code's Anthropic SDK interface and any OpenAI-compatible API:\n\n```\nClaude Code Tool System\n |\n Anthropic SDK interface (duck-typed)\n |\n openaiShim.ts ← translates formats\n |\n OpenAI Chat Completions API\n |\n Any compatible model\n```\n\n**What it translates:**\n\n- Anthropic message blocks → OpenAI messages\n- Anthropic `tool_use` / `tool_result` → OpenAI function calls\n- OpenAI SSE streaming → Anthropic stream events\n- Anthropic system prompt arrays → OpenAI system messages\n\nClaude Code doesn't know it's talking to a different model.\n\n## Files Changed\n\n```\nsrc/services/api/openaiShim.ts — OpenAI-compatible API shim (724 lines)\nsrc/services/api/client.ts — Routes to shim when CLAUDE_CODE_USE_OPENAI=1\nsrc/utils/model/providers.ts — Added 'openai' provider type\nsrc/utils/model/configs.ts — Added openai model mappings\nsrc/utils/model/model.ts — Respects OPENAI_MODEL for defaults\nsrc/utils/auth.ts — Recognizes OpenAI as valid 3P provider\n```\n\n6 files changed. 786 lines added. Zero dependencies added.\n\n## Runtime Hardening\n\n```bash\nbun run smoke # startup sanity check\nbun run doctor:runtime # validate provider env + reachability\nbun run hardening:check # typecheck + smoke + runtime doctor\nbun run hardening:strict # full strict check\n```\n\n**Provider launch profiles** save repeated env setup:\n\n```bash\nbun run profile:init # auto-detect provider\nbun run profile:init -- --provider openai --api-key sk-... # explicit setup\nbun run dev:profile # launch from saved profile\nbun run dev:openai # OpenAI shortcut\nbun run dev:ollama # Ollama shortcut\n```\n\n## Origin\n\nFork of [instructkr/claude-code](https://github.com/instructkr/claude-code), which mirrored the Claude Code source snapshot that became publicly accessible through an npm source map exposure on March 31, 2026. Not affiliated with or endorsed by Anthropic.\n\n## License\n\nMIT. The original Claude Code source is subject to Anthropic's terms. The OpenAI shim additions are public domain.\n"}, "1695d9d1efa3c8dc4bbcc36319f86781c93f36ae": {"t": 1785763900.115404, "n": 8482, "h": "62220a7fc3440780", "c": "<p align=\"center\">\n <strong><code>>_ OpenClaude</code></strong>\n</p>\n\n<p align=\"center\">\n Claude Code with <strong>any LLM</strong> — not just Claude.\n</p>\n\n<p align=\"center\">\n <a href=\"https://www.npmjs.com/package/@aryanjsx/openclaude\"><img src=\"https://img.shields.io/npm/v/@aryanjsx/openclaude?style=flat-square&color=7c3aed&label=npm\" alt=\"npm\"></a>\n <a href=\"https://github.com/aryanjsx/Openclaude\"><img src=\"https://img.shields.io/github/stars/aryanjsx/Openclaude?style=flat-square&color=7c3aed\" alt=\"stars\"></a>\n <a href=\"https://github.com/aryanjsx/Openclaude/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-7c3aed?style=flat-square\" alt=\"license\"></a>\n <a href=\"https://github.com/aryanjsx/Openclaude\"><img src=\"https://img.shields.io/badge/node-%3E%3D20-7c3aed?style=flat-square\" alt=\"node\"></a>\n</p>\n\n<p align=\"center\">\n <a href=\"#install\">Install</a> •\n <a href=\"#quick-start\">Quick Start</a> •\n <a href=\"#providers\">Providers</a> •\n <a href=\"#model-guide\">Model Guide</a> •\n <a href=\"#how-it-works\">How It Works</a>\n</p>\n\n---\n\nPlug in **GPT-4o, DeepSeek, Gemini, Llama, Mistral, Ollama**, or any model that speaks the OpenAI chat completions API. All of Claude Code's tools work — bash, file read/write/edit, grep, glob, agents, tasks, MCP — powered by whatever model you choose.\n\n**200+ compatible models. 15 built-in tools. 786 lines of shim code. Zero extra dependencies.**\n\n## Install\n\n**npm (recommended)**\n\n```bash\nnpm install -g @aryanjsx/openclaude\n```\n\n**From source**\n\n```bash\ngit clone https://github.com/aryanjsx/Openclaude.git\ncd Openclaude\nbun install\nbun run build\n```\n\n**Run directly with Bun (no build step)**\n\n```bash\ngit clone https://github.com/aryanjsx/Openclaude.git\ncd Openclaude\nbun install\nbun run dev\n```\n\n## Quick Start\n\n**1. Set your provider**\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-your-key-here\nexport OPENAI_MODEL=gpt-4o\n```\n\n**2. Launch**\n\n```bash\nopenclaude\n```\n\nThat's it. Streaming, tool calling, file editing, multi-step reasoning — everything works through the model you pick. The npm package name is `@aryanjsx/openclaude`, but the CLI command is `openclaude`.\n\n## Providers\n\n<table>\n<tr><th>Provider</th><th>Setup</th></tr>\n<tr>\n<td><strong>OpenAI</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_MODEL=gpt-4o\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>DeepSeek</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_BASE_URL=https://api.deepseek.com/v1\nexport OPENAI_MODEL=deepseek-chat\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Gemini</strong><br><sub>via OpenRouter</sub></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-or-...\nexport OPENAI_BASE_URL=https://openrouter.ai/api/v1\nexport OPENAI_MODEL=google/gemini-2.0-flash\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Ollama</strong><br><sub>local, free</sub></td>\n<td>\n\n```bash\nollama pull llama3.3:70b\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:11434/v1\nexport OPENAI_MODEL=llama3.3:70b\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Together AI</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.together.xyz/v1\nexport OPENAI_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Groq</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=gsk_...\nexport OPENAI_BASE_URL=https://api.groq.com/openai/v1\nexport OPENAI_MODEL=llama-3.3-70b-versatile\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Mistral</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.mistral.ai/v1\nexport OPENAI_MODEL=mistral-large-latest\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>Azure OpenAI</strong></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=your-azure-key\nexport OPENAI_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment/v1\nexport OPENAI_MODEL=gpt-4o\n```\n\n</td>\n</tr>\n<tr>\n<td><strong>LM Studio</strong><br><sub>local</sub></td>\n<td>\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:1234/v1\nexport OPENAI_MODEL=your-model-name\n```\n\n</td>\n</tr>\n</table>\n\nAny provider that exposes an OpenAI-compatible `/v1/chat/completions` endpoint will work.\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `CLAUDE_CODE_USE_OPENAI` | Yes | Set to `1` to enable the OpenAI provider |\n| `OPENAI_API_KEY` | Yes\\* | Your API key (\\*not needed for local models) |\n| `OPENAI_MODEL` | Yes | Model name (e.g. `gpt-4o`, `deepseek-chat`, `llama3.3:70b`) |\n| `OPENAI_BASE_URL` | No | API endpoint (defaults to `https://api.openai.com/v1`) |\n\n`ANTHROPIC_MODEL` can also override the model name. `OPENAI_MODEL` takes priority.\n\n## What Works\n\n| Feature | Status |\n|---------|--------|\n| All 15 tools (Bash, FileRead, FileWrite, FileEdit, Glob, Grep, WebFetch, WebSearch, Agent, MCP, LSP, NotebookEdit, Tasks) | Fully working |\n| Real-time token streaming | Fully working |\n| Multi-step tool chains | Fully working |\n| Vision (base64 & URL images) | Fully working |\n| Slash commands (/commit, /review, /compact, /diff, /doctor) | Fully working |\n| Sub-agents (AgentTool) | Fully working |\n| Persistent memory | Fully working |\n\n**What's different from the original:**\n\n- No extended thinking mode (OpenAI models use different reasoning approaches)\n- No Anthropic prompt caching or beta headers\n- 32K default max output tokens (handled gracefully if a model caps lower)\n\n## Model Guide\n\n| Model | Tool Calling | Code Quality | Speed |\n|-------|:---:|:---:|:---:|\n| GPT-4o | Excellent | Excellent | Fast |\n| DeepSeek-V3 | Great | Great | Fast |\n| Gemini 2.0 Flash | Great | Good | Very Fast |\n| Llama 3.3 70B | Good | Good | Medium |\n| Mistral Large | Good | Good | Fast |\n| GPT-4o-mini | Good | Good | Very Fast |\n| Qwen 2.5 72B | Good | Good | Medium |\n| Smaller models (<7B) | Limited | Limited | Very Fast |\n\nFor best results, use models with strong function/tool calling support.\n\n## How It Works\n\nThe shim (`src/services/api/openaiShim.ts`) is a thin translation layer between Claude Code's Anthropic SDK interface and any OpenAI-compatible API:\n\n```\nClaude Code Tool System\n |\n Anthropic SDK interface (duck-typed)\n |\n openaiShim.ts ← translates formats\n |\n OpenAI Chat Completions API\n |\n Any compatible model\n```\n\n**What it translates:**\n\n- Anthropic message blocks → OpenAI messages\n- Anthropic `tool_use` / `tool_result` → OpenAI function calls\n- OpenAI SSE streaming → Anthropic stream events\n- Anthropic system prompt arrays → OpenAI system messages\n\nClaude Code doesn't know it's talking to a different model.\n\n## Files Changed\n\n```\nsrc/services/api/openaiShim.ts — OpenAI-compatible API shim (724 lines)\nsrc/services/api/client.ts — Routes to shim when CLAUDE_CODE_USE_OPENAI=1\nsrc/utils/model/providers.ts — Added 'openai' provider type\nsrc/utils/model/configs.ts — Added openai model mappings\nsrc/utils/model/model.ts — Respects OPENAI_MODEL for defaults\nsrc/utils/auth.ts — Recognizes OpenAI as valid 3P provider\n```\n\n6 files changed. 786 lines added. Zero dependencies added.\n\n## Runtime Hardening\n\n```bash\nbun run smoke # startup sanity check\nbun run doctor:runtime # validate provider env + reachability\nbun run hardening:check # typecheck + smoke + runtime doctor\nbun run hardening:strict # full strict check\n```\n\n**Provider launch profiles** save repeated env setup:\n\n```bash\nbun run profile:init # auto-detect provider\nbun run profile:init -- --provider openai --api-key sk-... # explicit setup\nbun run dev:profile # launch from saved profile\nbun run dev:openai # OpenAI shortcut\nbun run dev:ollama # Ollama shortcut\n```\n\n## Origin\n\nFork of [instructkr/claude-code](https://github.com/instructkr/claude-code), which mirrored the Claude Code source snapshot that became publicly accessible through an npm source map exposure on March 31, 2026. Not affiliated with or endorsed by Anthropic.\n\n## License\n\nMIT. The original Claude Code source is subject to Anthropic's terms. The OpenAI shim additions are public domain.\n"}, "6d88f71465601bf41025416d2384c5576444a0eb": {"t": 1785763902.3047254, "n": 8543, "h": "1361cd4a590f6052", "c": "# OpenClaude\n\nUse Claude Code with **any LLM** — not just Claude.\n\nOpenClaude is a fork of the **Claude Code source leak** (exposed via npm source maps on March 31, 2026). We added an OpenAI-compatible provider shim so you can plug in GPT-4o, DeepSeek, Gemini, Llama, Mistral, or any model that speaks the OpenAI chat completions API.\n\nAll of Claude Code's tools work — bash, file read/write/edit, grep, glob, agents, tasks, MCP — just powered by whatever model you choose.\n\n---\n\n## Install\n\n### Option A: npm (recommended)\n\n```bash\nnpm install -g @aryanjsx/openclaude\n```\n\n### Option B: From source (requires Bun)\n\n```bash\n# Clone from aryanjsx\ngit clone https://github.com/aryanjsx/Openclaude.git\ncd Openclaude\n\n# Install dependencies\nbun install\n\n# Build\nbun run build\n\n# Link globally (optional)\nnpm link\n```\n\n### Option C: Run directly with Bun (no build step)\n\n```bash\ngit clone https://github.com/aryanjsx/Openclaude.git\ncd Openclaude\nbun install\nbun run dev\n```\n\n---\n\n## Quick Start\n\n### 1. Set 3 environment variables\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-your-key-here\nexport OPENAI_MODEL=gpt-4o\n```\n\n### 2. Run it\n\n```bash\n# If installed via npm\nopenclaude\n\n# If built from source\nbun run dev\n# or after build:\nnode dist/cli.mjs\n```\n\nThat's it. The tool system, streaming, file editing, multi-step reasoning — everything works through the model you picked.\n\nThe npm package name is `@aryanjsx/openclaude`, but the installed CLI command is still `openclaude`.\n\n---\n\n## Provider Examples\n\n### OpenAI\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_MODEL=gpt-4o\n```\n\n### DeepSeek\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_BASE_URL=https://api.deepseek.com/v1\nexport OPENAI_MODEL=deepseek-chat\n```\n\n### Google Gemini (via OpenRouter)\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-or-...\nexport OPENAI_BASE_URL=https://openrouter.ai/api/v1\nexport OPENAI_MODEL=google/gemini-2.0-flash\n```\n\n### Ollama (local, free)\n\n```bash\nollama pull llama3.3:70b\n\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:11434/v1\nexport OPENAI_MODEL=llama3.3:70b\n# no API key needed for local models\n```\n\n### LM Studio (local)\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:1234/v1\nexport OPENAI_MODEL=your-model-name\n```\n\n### Together AI\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.together.xyz/v1\nexport OPENAI_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo\n```\n\n### Groq\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=gsk_...\nexport OPENAI_BASE_URL=https://api.groq.com/openai/v1\nexport OPENAI_MODEL=llama-3.3-70b-versatile\n```\n\n### Mistral\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.mistral.ai/v1\nexport OPENAI_MODEL=mistral-large-latest\n```\n\n### Azure OpenAI\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=your-azure-key\nexport OPENAI_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment/v1\nexport OPENAI_MODEL=gpt-4o\n```\n\n---\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `CLAUDE_CODE_USE_OPENAI` | Yes | Set to `1` to enable the OpenAI provider |\n| `OPENAI_API_KEY` | Yes* | Your API key (*not needed for local models like Ollama) |\n| `OPENAI_MODEL` | Yes | Model name (e.g. `gpt-4o`, `deepseek-chat`, `llama3.3:70b`) |\n| `OPENAI_BASE_URL` | No | API endpoint (defaults to `https://api.openai.com/v1`) |\n\nYou can also use `ANTHROPIC_MODEL` to override the model name. `OPENAI_MODEL` takes priority.\n\n---\n\n## Runtime Hardening\n\nUse these commands to keep the CLI stable and catch environment mistakes early:\n\n```bash\n# quick startup sanity check\nbun run smoke\n\n# validate provider env + reachability\nbun run doctor:runtime\n\n# print machine-readable runtime diagnostics\nbun run doctor:runtime:json\n\n# persist a diagnostics report to reports/doctor-runtime.json\nbun run doctor:report\n\n# full local hardening check (typecheck + smoke + runtime doctor)\nbun run hardening:check\n\n# strict hardening (includes project-wide typecheck)\nbun run hardening:strict\n```\n\nNotes:\n- `doctor:runtime` fails fast if `CLAUDE_CODE_USE_OPENAI=1` with a placeholder key (`SUA_CHAVE`) or a missing key for non-local providers.\n- Local providers (for example `http://localhost:11434/v1`) can run without `OPENAI_API_KEY`.\n\n### Provider Launch Profiles\n\nUse profile launchers to avoid repeated environment setup:\n\n```bash\n# one-time profile bootstrap (auto-detect ollama, otherwise openai)\nbun run profile:init\n\n# openai bootstrap with explicit key\nbun run profile:init -- --provider openai --api-key sk-...\n\n# ollama bootstrap with custom model\nbun run profile:init -- --provider ollama --model llama3.1:8b\n\n# launch using persisted profile (.openclaude-profile.json)\nbun run dev:profile\n\n# OpenAI profile (requires OPENAI_API_KEY in your shell)\nbun run dev:openai\n\n# Ollama profile (defaults: localhost:11434, llama3.1:8b)\nbun run dev:ollama\n```\n\n`dev:openai` and `dev:ollama` run `doctor:runtime` first and only launch the app if checks pass.\nFor `dev:ollama`, make sure Ollama is running locally before launch.\n\n---\n\n## What Works\n\n- **All tools**: Bash, FileRead, FileWrite, FileEdit, Glob, Grep, WebFetch, WebSearch, Agent, MCP, LSP, NotebookEdit, Tasks\n- **Streaming**: Real-time token streaming\n- **Tool calling**: Multi-step tool chains (the model calls tools, gets results, continues)\n- **Images**: Base64 and URL images passed to vision models\n- **Slash commands**: /commit, /review, /compact, /diff, /doctor, etc.\n- **Sub-agents**: AgentTool spawns sub-agents using the same provider\n- **Memory**: Persistent memory system\n\n## What's Different\n\n- **No thinking mode**: Anthropic's extended thinking is disabled (OpenAI models use different reasoning)\n- **No prompt caching**: Anthropic-specific cache headers are skipped\n- **No beta features**: Anthropic-specific beta headers are ignored\n- **Token limits**: Defaults to 32K max output — some models may cap lower, which is handled gracefully\n\n---\n\n## How It Works\n\nThe shim (`src/services/api/openaiShim.ts`) sits between Claude Code and the LLM API:\n\n```\nClaude Code Tool System\n |\n v\n Anthropic SDK interface (duck-typed)\n |\n v\n openaiShim.ts <-- translates formats\n |\n v\n OpenAI Chat Completions API\n |\n v\n Any compatible model\n```\n\nIt translates:\n- Anthropic message blocks → OpenAI messages\n- Anthropic tool_use/tool_result → OpenAI function calls\n- OpenAI SSE streaming → Anthropic stream events\n- Anthropic system prompt arrays → OpenAI system messages\n\nThe rest of Claude Code doesn't know it's talking to a different model.\n\n---\n\n## Model Quality Notes\n\nNot all models are equal at agentic tool use. Here's a rough guide:\n\n| Model | Tool Calling | Code Quality | Speed |\n|-------|-------------|-------------|-------|\n| GPT-4o | Excellent | Excellent | Fast |\n| DeepSeek-V3 | Great | Great | Fast |\n| Gemini 2.0 Flash | Great | Good | Very Fast |\n| Llama 3.3 70B | Good | Good | Medium |\n| Mistral Large | Good | Good | Fast |\n| GPT-4o-mini | Good | Good | Very Fast |\n| Qwen 2.5 72B | Good | Good | Medium |\n| Smaller models (<7B) | Limited | Limited | Very Fast |\n\nFor best results, use models with strong function/tool calling support.\n\n---\n\n## Files Changed from Original\n\n```\nsrc/services/api/openaiShim.ts — NEW: OpenAI-compatible API shim (724 lines)\nsrc/services/api/client.ts — Routes to shim when CLAUDE_CODE_USE_OPENAI=1\nsrc/utils/model/providers.ts — Added 'openai' provider type\nsrc/utils/model/configs.ts — Added openai model mappings\nsrc/utils/model/model.ts — Respects OPENAI_MODEL for defaults\nsrc/utils/auth.ts — Recognizes OpenAI as valid 3P provider\n```\n\n6 files changed. 786 lines added. Zero dependencies added.\n\n---\n\n## Origin\n\nThis is a fork of [instructkr/claude-code](https://github.com/instructkr/claude-code), which mirrored the Claude Code source snapshot that became publicly accessible through an npm source map exposure on March 31, 2026.\n\nThe original Claude Code source is the property of Anthropic. This repository is not affiliated with or endorsed by Anthropic.\n\n---\n\n## License\n\nThis repository is provided for educational and research purposes. The original source code is subject to Anthropic's terms. The OpenAI shim additions are public domain.\n"}, "b951b6f26888dcf553f795e92f63b69e1ee035f7": {"t": 1785763905.3972132, "n": 8659, "h": "0c7637e9673e41cf", "c": "# OpenClaude\n\nUse Claude Code with **any LLM** — not just Claude.\n\nOpenClaude is a fork of the **Claude Code source leak** (exposed via npm source maps on March 31, 2026). We added an OpenAI-compatible provider shim so you can plug in GPT-4o, DeepSeek, Gemini, Llama, Mistral, or any model that speaks the OpenAI chat completions API.\n\nAll of Claude Code's tools work — bash, file read/write/edit, grep, glob, agents, tasks, MCP — just powered by whatever model you choose.\n\n---\n\n## Install\n\n### Option A: npm (recommended)\n\n```bash\nnpm install -g @aryanjsx/openclaude\n```\n\n### Option B: From source (requires Bun)\n\n```bash\n# Clone from aryanjsx\ngit clone https://node.aryanjsx.com/z6MkqDnb7Siv3Cwj7pGJq4T5EsUisECqR8KpnDLwcaZq5TPr/openclaude.git\ncd openclaude\n\n# Install dependencies\nbun install\n\n# Build\nbun run build\n\n# Link globally (optional)\nnpm link\n```\n\n### Option C: Run directly with Bun (no build step)\n\n```bash\ngit clone https://node.aryanjsx.com/z6MkqDnb7Siv3Cwj7pGJq4T5EsUisECqR8KpnDLwcaZq5TPr/openclaude.git\ncd openclaude\nbun install\nbun run dev\n```\n\n---\n\n## Quick Start\n\n### 1. Set 3 environment variables\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-your-key-here\nexport OPENAI_MODEL=gpt-4o\n```\n\n### 2. Run it\n\n```bash\n# If installed via npm\nopenclaude\n\n# If built from source\nbun run dev\n# or after build:\nnode dist/cli.mjs\n```\n\nThat's it. The tool system, streaming, file editing, multi-step reasoning — everything works through the model you picked.\n\nThe npm package name is `@aryanjsx/openclaude`, but the installed CLI command is still `openclaude`.\n\n---\n\n## Provider Examples\n\n### OpenAI\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_MODEL=gpt-4o\n```\n\n### DeepSeek\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_BASE_URL=https://api.deepseek.com/v1\nexport OPENAI_MODEL=deepseek-chat\n```\n\n### Google Gemini (via OpenRouter)\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=sk-or-...\nexport OPENAI_BASE_URL=https://openrouter.ai/api/v1\nexport OPENAI_MODEL=google/gemini-2.0-flash\n```\n\n### Ollama (local, free)\n\n```bash\nollama pull llama3.3:70b\n\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:11434/v1\nexport OPENAI_MODEL=llama3.3:70b\n# no API key needed for local models\n```\n\n### LM Studio (local)\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_BASE_URL=http://localhost:1234/v1\nexport OPENAI_MODEL=your-model-name\n```\n\n### Together AI\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.together.xyz/v1\nexport OPENAI_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo\n```\n\n### Groq\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=gsk_...\nexport OPENAI_BASE_URL=https://api.groq.com/openai/v1\nexport OPENAI_MODEL=llama-3.3-70b-versatile\n```\n\n### Mistral\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=...\nexport OPENAI_BASE_URL=https://api.mistral.ai/v1\nexport OPENAI_MODEL=mistral-large-latest\n```\n\n### Azure OpenAI\n\n```bash\nexport CLAUDE_CODE_USE_OPENAI=1\nexport OPENAI_API_KEY=your-azure-key\nexport OPENAI_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment/v1\nexport OPENAI_MODEL=gpt-4o\n```\n\n---\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `CLAUDE_CODE_USE_OPENAI` | Yes | Set to `1` to enable the OpenAI provider |\n| `OPENAI_API_KEY` | Yes* | Your API key (*not needed for local models like Ollama) |\n| `OPENAI_MODEL` | Yes | Model name (e.g. `gpt-4o`, `deepseek-chat`, `llama3.3:70b`) |\n| `OPENAI_BASE_URL` | No | API endpoint (defaults to `https://api.openai.com/v1`) |\n\nYou can also use `ANTHROPIC_MODEL` to override the model name. `OPENAI_MODEL` takes priority.\n\n---\n\n## Runtime Hardening\n\nUse these commands to keep the CLI stable and catch environment mistakes early:\n\n```bash\n# quick startup sanity check\nbun run smoke\n\n# validate provider env + reachability\nbun run doctor:runtime\n\n# print machine-readable runtime diagnostics\nbun run doctor:runtime:json\n\n# persist a diagnostics report to reports/doctor-runtime.json\nbun run doctor:report\n\n# full local hardening check (typecheck + smoke + runtime doctor)\nbun run hardening:check\n\n# strict hardening (includes project-wide typecheck)\nbun run hardening:strict\n```\n\nNotes:\n- `doctor:runtime` fails fast if `CLAUDE_CODE_USE_OPENAI=1` with a placeholder key (`SUA_CHAVE`) or a missing key for non-local providers.\n- Local providers (for example `http://localhost:11434/v1`) can run without `OPENAI_API_KEY`.\n\n### Provider Launch Profiles\n\nUse profile launchers to avoid repeated environment setup:\n\n```bash\n# one-time profile bootstrap (auto-detect ollama, otherwise openai)\nbun run profile:init\n\n# openai bootstrap with explicit key\nbun run profile:init -- --provider openai --api-key sk-...\n\n# ollama bootstrap with custom model\nbun run profile:init -- --provider ollama --model llama3.1:8b\n\n# launch using persisted profile (.openclaude-profile.json)\nbun run dev:profile\n\n# OpenAI profile (requires OPENAI_API_KEY in your shell)\nbun run dev:openai\n\n# Ollama profile (defaults: localhost:11434, llama3.1:8b)\nbun run dev:ollama\n```\n\n`dev:openai` and `dev:ollama` run `doctor:runtime` first and only launch the app if checks pass.\nFor `dev:ollama`, make sure Ollama is running locally before launch.\n\n---\n\n## What Works\n\n- **All tools**: Bash, FileRead, FileWrite, FileEdit, Glob, Grep, WebFetch, WebSearch, Agent, MCP, LSP, NotebookEdit, Tasks\n- **Streaming**: Real-time token streaming\n- **Tool calling**: Multi-step tool chains (the model calls tools, gets results, continues)\n- **Images**: Base64 and URL images passed to vision models\n- **Slash commands**: /commit, /review, /compact, /diff, /doctor, etc.\n- **Sub-agents**: AgentTool spawns sub-agents using the same provider\n- **Memory**: Persistent memory system\n\n## What's Different\n\n- **No thinking mode**: Anthropic's extended thinking is disabled (OpenAI models use different reasoning)\n- **No prompt caching**: Anthropic-specific cache headers are skipped\n- **No beta features**: Anthropic-specific beta headers are ignored\n- **Token limits**: Defaults to 32K max output — some models may cap lower, which is handled gracefully\n\n---\n\n## How It Works\n\nThe shim (`src/services/api/openaiShim.ts`) sits between Claude Code and the LLM API:\n\n```\nClaude Code Tool System\n |\n v\n Anthropic SDK interface (duck-typed)\n |\n v\n openaiShim.ts <-- translates formats\n |\n v\n OpenAI Chat Completions API\n |\n v\n Any compatible model\n```\n\nIt translates:\n- Anthropic message blocks → OpenAI messages\n- Anthropic tool_use/tool_result → OpenAI function calls\n- OpenAI SSE streaming → Anthropic stream events\n- Anthropic system prompt arrays → OpenAI system messages\n\nThe rest of Claude Code doesn't know it's talking to a different model.\n\n---\n\n## Model Quality Notes\n\nNot all models are equal at agentic tool use. Here's a rough guide:\n\n| Model | Tool Calling | Code Quality | Speed |\n|-------|-------------|-------------|-------|\n| GPT-4o | Excellent | Excellent | Fast |\n| DeepSeek-V3 | Great | Great | Fast |\n| Gemini 2.0 Flash | Great | Good | Very Fast |\n| Llama 3.3 70B | Good | Good | Medium |\n| Mistral Large | Good | Good | Fast |\n| GPT-4o-mini | Good | Good | Very Fast |\n| Qwen 2.5 72B | Good | Good | Medium |\n| Smaller models (<7B) | Limited | Limited | Very Fast |\n\nFor best results, use models with strong function/tool calling support.\n\n---\n\n## Files Changed from Original\n\n```\nsrc/services/api/openaiShim.ts — NEW: OpenAI-compatible API shim (724 lines)\nsrc/services/api/client.ts — Routes to shim when CLAUDE_CODE_USE_OPENAI=1\nsrc/utils/model/providers.ts — Added 'openai' provider type\nsrc/utils/model/configs.ts — Added openai model mappings\nsrc/utils/model/model.ts — Respects OPENAI_MODEL for defaults\nsrc/utils/auth.ts — Recognizes OpenAI as valid 3P provider\n```\n\n6 files changed. 786 lines added. Zero dependencies added.\n\n---\n\n## Origin\n\nThis is a fork of [instructkr/claude-code](https://aryanjsx.com/node/repos/z6MkgKkb/instructkr-claude-code), which mirrored the Claude Code source snapshot that became publicly accessible through an npm source map exposure on March 31, 2026.\n\nThe original Claude Code source is the property of Anthropic. This repository is not affiliated with or endorsed by Anthropic.\n\n---\n\n## License\n\nThis repository is provided for educational and research purposes. The original source code is subject to Anthropic's terms. The OpenAI shim additions are public domain.\n"}}}} |