This is a fork of Alishahryar1/free-claude-code,
maintained by Evan Damron. It adds anopenai_compatibleprovider that
points FCC at any OpenAI-compatible Chat Completions endpoint — the
UK LLM Factory in particular — plus a
localmlxvlmprovider for Apple Silicon. That is the reason this repo exists;
everything else tracks upstream daily. See FORK.md.
Upstream’s README begins below.
These steps take you from nothing to Claude Code talking to an LLM Factory model.
The installer below is this fork’s, and installs this fork’s package. Do not
use upstream’s install command — it installs upstream’s build, which has no
openai_compatible provider.
macOS/Linux:
curl -fsSL "https://raw.githubusercontent.com/Kentucky-Open-Science/free-claude-code/main/scripts/install.sh" | sh
Windows PowerShell:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Kentucky-Open-Science/free-claude-code/main/scripts/install.ps1")))
When prompted, choose at least one coding agent (Claude Code). Re-run the same
command to update.
Sign in at llm-factory.ai.uky.edu (UK
Shibboleth via CILogon). You need two things:
https://api-llm-factory.ai.uky.edu/v1. This is the API/v1.You also need the model id you intend to use, exactly as the deployment
advertises it at GET /v1/models — for example zai-org/GLM-5.2-FP8.
macOS: open Free Claude Code from Applications. Windows: from the Start
menu. Linux:
fcc-server
FCC opens the Admin UI once it starts; the URL is also printed in the server log.
Keep the fcc-server terminal open.
In the Admin UI:
https://api-llm-factory.ai.uky.edu/v1.openai_compatible/<model id>, e.g.openai_compatible/zai-org/GLM-5.2-FP8.Both fields require a value — the provider stays unavailable until the base URL
and the key are set.
<details>
<summary>Or configure it by file instead of the UI</summary>
FCC reads managed settings from ~/.fcc/.env:
OPENAI_COMPATIBLE_BASE_URL="https://api-llm-factory.ai.uky.edu/v1"
OPENAI_COMPATIBLE_API_KEY="<your key>"
MODEL="openai_compatible/zai-org/GLM-5.2-FP8"
Restart FCC afterwards. An optional OPENAI_COMPATIBLE_PROXY=<http-or-socks-url>
routes this provider through a proxy.
</details>
MODEL alone serves every Claude tier. To split them, set any of these to
openai_compatible/<model id> in Admin or ~/.fcc/.env:
MODEL_OPUS="openai_compatible/zai-org/GLM-5.2-FP8"
MODEL_SONNET="openai_compatible/zai-org/GLM-5.2-FP8"
MODEL_HAIKU="openai_compatible/zai-org/GLM-5.2-FP8"
Model ids containing a / are fine — the first path segment is the provider,
the rest is the model id.
fcc-claude
Pick the FCC model from Claude Code’s native /model picker. fcc-codex,
fcc-opencode, and the other launchers work the same way.
reasoning_effort orreasoning_content deltas when the deployment emits them.max_completion_tokens, not max_tokens, is what gets sent.extra_body passes through, so deployment-specific switches work — e.g.{"chat_template_kwargs": {"enable_thinking": false}}.| Symptom | Cause |
|---|---|
| Provider missing from Admin | Upstream’s build is installed. Reinstall with the fork command in step 1. |
404 on requests |
Base URL is missing the /v1 suffix. |
model not found |
The model id does not match what GET /v1/models advertises. |
401 / 403 |
Key is wrong, expired, or lacks access to that model. |
<div align="center">
<a id="free-claude-code"></a>
<h1>
<picture>
<source media="(prefers-color-scheme: light)" srcset="assets/free-claude-code-wordmark-light.svg">
<img src="assets/free-claude-code-wordmark-dark.svg" alt="Free Claude Code" width="610">
</picture>
</h1>
Quick Start · Providers · Clients · Integrations · Manage
</div>
<p align="center">
<em>Independent open-source project. Not affiliated with or endorsed by Anthropic. Claude and Claude Code are trademarks of Anthropic.</em>
</p>
Free-tier availability and limits are controlled by each provider and may change.
<div align="center">
<img src="assets/pic.png" alt="Claude Code running with Free Claude Code" width="700">
<p><em>Claude Code running with FCC.</em></p>
</div>
<a id="install"></a>
macOS/Linux:
curl -fsSL "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.sh" | sh
Windows PowerShell:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.ps1")))
Re-run the same command to update. When prompted, choose at least one coding agent and optionally RTK. You can review the installers before running them: install.sh and install.ps1.
Open Free Claude Code from your desktop or Start menu.
Open Free Claude Code from your desktop or Applications folder.
Run:
fcc-server
FCC opens the Admin UI after starting. On Windows and macOS, use the tray or
menu-bar icon to open Admin, restart, or quit. When using fcc-server, keep its
terminal open.
<a id="nvidia-nim-provider"></a>
NVIDIA_NIM_API_KEY.MODEL on the default nvidia_nim/nvidia/nemotron-3-super-120b-a12b, or search the model dropdown and select another model.To protect the local proxy with a bearer token, enable Proxy Authentication
in Admin.
<div align="center">
<img src="assets/admin-page.png" alt="Free Claude Code Admin UI" width="700">
</div>
Claude Code:
fcc-claude
Codex:
fcc-codex
Pi:
fcc-pi
OpenCode:
fcc-opencode
Cline:
fcc-cline
Hermes:
fcc-hermes
DeepSeek Harness Web:
fcc-dsh
Grok Build:
fcc-grok
Muse Code:
fcc-muse
<a id="model-picker"></a>
<div align="center">
<img src="assets/cc-model-picker.png" alt="Claude Code model picker showing FCC models" width="700">
<p><em>Select an FCC model from Claude Code’s native <code>/model</code> picker.</em></p>
</div>
MODEL dropdown and select a model. If the provider cannot list<provider-id>/<exact-provider-model-id> manually.Optional: add an ordered Fallback Models list under Model Config. It
applies to every connected client. A failed request may reach and consume usage
from more than one provider before succeeding.
<details>
<summary><strong>Provider catalog</strong></summary>
| Provider | Admin UI setting | Example MODEL |
|---|---|---|
| NVIDIA NIM | NVIDIA_NIM_API_KEY |
nvidia_nim/nvidia/nemotron-3-super-120b-a12b |
| OpenRouter | OPENROUTER_API_KEY |
open_router/openrouter/free |
| Groq | GROQ_API_KEY |
groq/llama-3.3-70b-versatile |
| ClinePass | CLINE_API_KEY |
cline_pass/cline-pass/kimi-k3 |
| OpenAI / ChatGPT | Connect ChatGPT in the Admin UI | openai/<model-id> |
| xAI (Grok) | XAI_API_KEY |
xai/grok-4.5 |
| QwenCloud Token Plan | QWENCLOUD_API_KEY |
qwencloud/qwen3.7-plus |
| QwenCloud Coding Plan | QWENCLOUD_CODING_API_KEY |
qwencloud_coding/qwen3.7-plus |
| Together AI | TOGETHER_API_KEY |
together/zai-org/GLM-5.2 |
| DeepInfra | DEEPINFRA_API_KEY |
deepinfra/deepseek-ai/DeepSeek-V4-Flash |
| SiliconFlow | SILICONFLOW_API_KEY |
siliconflow/Qwen/Qwen3-32B |
| Nebius Token Factory | NEBIUS_API_KEY |
nebius/Qwen/Qwen3-30B-A3B |
| Chutes | CHUTES_API_KEY |
chutes/Qwen/Qwen3-32B-TEE |
| Featherless AI | FEATHERLESS_API_KEY |
featherless/Qwen/Qwen3-32B |
| Agnes AI | AGNES_API_KEY |
agnes/agnes-2.0-flash |
| ZenMux | ZENMUX_API_KEY |
zenmux/deepseek/deepseek-v4-flash-free |
| W&B Inference | WANDB_API_KEY |
wandb/openai/gpt-oss-20b |
| Azure OpenAI | AZURE_OPENAI_API_KEY and AZURE_OPENAI_BASE_URL |
azure_openai/<deployment-name> |
| Google AI Studio (Gemini) | GEMINI_API_KEY |
gemini/models/gemini-3.1-flash-lite |
| Google Vertex AI | VERTEX_PROJECT_ID + ADC |
vertex/google/gemini-3.5-flash |
| DeepSeek | DEEPSEEK_API_KEY |
deepseek/deepseek-chat |
| Mistral La Plateforme | MISTRAL_API_KEY |
mistral/devstral-small-latest |
| Mistral Codestral | CODESTRAL_API_KEY |
mistral_codestral/codestral-latest |
| OpenCode Zen | OPENCODE_API_KEY |
opencode_zen/gpt-5.3-codex |
| OpenCode Go | OPENCODE_API_KEY |
opencode_go/minimax-m2.7 |
| Vercel AI Gateway | AI_GATEWAY_API_KEY |
vercel/openai/gpt-5.5 |
| Amazon Bedrock | AWS_BEARER_TOKEN_BEDROCK |
bedrock/openai.gpt-oss-120b |
| Hugging Face Inference Providers | HUGGINGFACE_API_KEY |
huggingface/Qwen/Qwen3-Coder-480B-A35B-Instruct:fastest |
| Cohere | COHERE_API_KEY |
cohere/command-a-plus-05-2026 |
| GitHub Models | GITHUB_MODELS_TOKEN |
github_models/openai/gpt-4.1 |
| Wafer | WAFER_API_KEY |
wafer/DeepSeek-V4-Pro |
| Kimi API | KIMI_API_KEY |
kimi/kimi-k2.5 |
| Kimi Code | KIMI_CODE_API_KEY |
kimi_code/k3 |
| MiniMax | MINIMAX_API_KEY |
minimax/MiniMax-M3 |
| Cerebras Inference | CEREBRAS_API_KEY |
cerebras/gpt-oss-120b |
| SambaNova | SAMBANOVA_API_KEY |
sambanova/Meta-Llama-3.3-70B-Instruct |
| Kilo.ai | KILO_API_KEY |
kilo/kilo-auto/free |
| Fireworks AI | FIREWORKS_API_KEY |
fireworks/accounts/fireworks/models/llama-v3p3-70b-instruct |
| Novita AI | NOVITA_API_KEY |
novita/deepseek/deepseek-v4-flash-0731 |
| Cloudflare Workers AI | CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID |
cloudflare/@cf/moonshotai/kimi-k2.6 |
| Z.ai Coding Plan | ZAI_API_KEY |
zai/glm-5.2 |
| Z.ai API (pay as you go) | ZAI_API_KEY |
zai_api/glm-4.7-flash |
| TokenRouter | TOKENROUTER_API_KEY |
tokenrouter/moonshotai/kimi-k3-free |
| NaraRoute | NARAROUTE_API_KEY |
nararoute/kimi-k3-free |
| Poolside AI | POOLSIDE_API_KEY |
poolside/poolside/laguna-s-2.1 |
| LLM7.io | LLM7_API_KEY |
llm7/default |
| Ollama Cloud | OLLAMA_API_KEY |
ollama_cloud/qwen3-coder:480b |
| LM Studio | LM_STUDIO_BASE_URL |
lmstudio/<model-id> |
| llama.cpp | LLAMACPP_BASE_URL |
llamacpp/<model-id> |
| Ollama | OLLAMA_BASE_URL |
ollama/<model-tag> |
</details>
<details>
<summary><strong>Provider-specific setup</strong></summary>
AZURE_OPENAI_BASE_URL to its complete v1 endpoint, such ashttps://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/, and select akimi_code/; Kimi API credit keys usekimi/. Kimi Code plans are for personal interactive coding-agent use underqwencloud_coding/; QwenCloud Token Plan keysqwencloud/. The keys and endpoints are not interchangeable. Coding PlanOPENCODE_API_KEY but use the explicitopencode_zen/ and opencode_go/ model prefixes.BEDROCK_BASE_URL to the URL for the same region asgcloud auth application-default login once; service-accountVERTEX_PROJECT_ID, andVERTEX_LOCATION from its global default.ollama/ prefix.</details>
<details>
<summary><strong>Local provider setup</strong></summary>
Start LM Studio’s local server, load a tool-capable model, and use the model identifier shown by LM Studio with the lmstudio/ prefix. The default URL is http://localhost:1234/v1.
Start llama-server with its OpenAI-compatible Chat Completions API and enough context for the model. Use the local model ID with the llamacpp/ prefix. LLAMACPP_BASE_URL defaults to http://localhost:8080/v1; FCC accepts either the server root or an explicit /v1 suffix.
ollama pull llama3.1
ollama serve
Use the tag shown by ollama list with the ollama/ prefix. OLLAMA_BASE_URL defaults to http://localhost:11434; FCC accepts either the root URL or an explicit /v1 suffix.
</details>
<details>
<summary><strong>Optional model-tier routing</strong></summary>
MODEL is the fallback for every request. Select a model for MODEL_FABLE, MODEL_OPUS, MODEL_SONNET, or MODEL_HAIKU to override an individual Claude Code tier; select None to use MODEL.
For example, route Opus to nvidia_nim/nvidia/nemotron-3-super-120b-a12b, Sonnet to open_router/openrouter/free, Haiku to lmstudio/qwen3.5-coder, and keep MODEL on zai/glm-5.2.
</details>
<details>
<summary><strong>Reasoning control</strong></summary>
Open Admin UI → Model Config → Reasoning and select the behavior you want.
| Selection | Behavior |
|---|---|
| From client (default) | Use the effort sent by Claude Code, Codex, Pi, OpenCode, Cline, Hermes, DeepSeek Harness, Grok Build, or Muse Code. If none is sent, keep the provider default. |
| Off | Request reasoning to be disabled. |
| Low, Medium, High, X-High, or Max | Override the client with the selected reasoning level. |
| Inherit (Fable, Opus, Sonnet, and Haiku only) | Use the root Reasoning selection. |
Providers that do not support a selected control retain their own behavior.
</details>
<a id="connect-your-client"></a>
For terminal use, start fcc-server, then run fcc-claude, fcc-codex,
fcc-pi, fcc-opencode, fcc-cline, fcc-hermes, fcc-dsh, fcc-grok, or
fcc-muse.
Use the guides below for editor integrations.
<details>
<summary><strong>Claude Code in VS Code</strong></summary>
Install the Claude Code extension. Open VS Code’s user settings as JSON and add:
"claudeCode.disableLoginPrompt": true,
"claudeCode.environmentVariables": [
{ "name": "ANTHROPIC_BASE_URL", "value": "http://localhost:8082" },
{ "name": "ANTHROPIC_AUTH_TOKEN", "value": "freecc" },
{ "name": "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY", "value": "1" },
{ "name": "CLAUDE_CODE_AUTO_COMPACT_WINDOW", "value": "190000" },
{ "name": "DISABLE_AUTOUPDATER", "value": "1" },
{ "name": "DISABLE_FEEDBACK_COMMAND", "value": "1" },
{ "name": "DISABLE_ERROR_REPORTING", "value": "1" }
]
Match the port and authentication token to the Admin UI, then reload the extension.
</details>
<details>
<summary><strong>Codex App</strong></summary>
Start FCC, then edit your Codex configuration:
%USERPROFILE%.codexconfig.toml~/.codex/config.tomlAdd the matching model-catalog path and replace YOUR_USERNAME.
Windows:
model_catalog_json = "C:/Users/YOUR_USERNAME/.fcc/codex-model-catalog.json"
macOS:
model_catalog_json = "/Users/YOUR_USERNAME/.fcc/codex-model-catalog.json"
Then add the shared FCC settings:
model_provider = "fcc"
model = "nvidia_nim/nvidia/nemotron-3-super-120b-a12b"
[model_providers.fcc]
name = "Free Claude Code"
base_url = "http://127.0.0.1:8082/v1"
wire_api = "responses"
[model_providers.fcc.auth]
command = "fcc-codex"
args = ["--print-proxy-auth-token"]
Match the model and port to the Admin UI. The auth command reads FCC’s current
proxy token automatically. Restart the Codex App after setup or model changes,
then select an FCC model from its model picker.
</details>
<details>
<summary><strong>Codex in VS Code</strong></summary>
Install the Codex extension. Create or edit ~/.codex/config.toml (%USERPROFILE%.codexconfig.toml on Windows):
model_provider = "fcc"
model = "nvidia_nim/nvidia/nemotron-3-super-120b-a12b"
[model_providers.fcc]
name = "Free Claude Code"
base_url = "http://127.0.0.1:8082/v1"
wire_api = "responses"
[model_providers.fcc.auth]
command = "fcc-codex"
args = ["--print-proxy-auth-token"]
Match model and the port to the Admin UI. The auth command reads FCC’s current
proxy token automatically. Restart VS Code after setup or model changes. For
WSL-backed Codex, edit the file inside WSL.
</details>
<details>
<summary><strong>Claude Code in JetBrains ACP</strong></summary>
Edit the installed Claude ACP configuration:
C:Users%USERNAME%AppDataRoamingJetBrainsacp-agentsinstalled.json~/.jetbrains/acp.jsonSet the environment for acp.registry.claude-acp:
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:8082",
"ANTHROPIC_AUTH_TOKEN": "freecc",
"CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1",
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "190000",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1"
}
Match the port and token to the Admin UI, then restart the IDE.
</details>
<details>
<summary><strong>Claude Code still asks you to log in</strong></summary>
If Claude Code asks you to log in after you configure the FCC URL and token, open its state file:
%USERPROFILE%.claude.json~/.claude.jsonMerge this property into the existing JSON without removing its other fields:
"hasCompletedOnboarding": true
If the file does not exist, create it with a complete JSON object:
{
"hasCompletedOnboarding": true
}
Restart Claude Code or the IDE after saving the file.
</details>
<a id="optional-integrations"></a>
Configure integrations from Admin UI → Messaging, then click Validate and Apply.
<details>
<summary><strong>Discord bot</strong></summary>
/clear can remove</details>
<details>
<summary><strong>Telegram bot</strong></summary>
</details>
| Usage | Behavior |
|---|---|
/stats |
Show session state. |
Standalone /stop |
Cancel all work. |
Reply with /stop |
Cancel only the selected request while other queued requests continue. |
Standalone /clear |
Reset all FCC state and remove every tracked message in that chat, including user prompts, voice notes, FCC replies, Telegram’s online notice, and the clear command itself. |
Reply with /clear |
Delete the selected message and its literal platform reply subtree while preserving its ancestors and siblings. |
<details>
<summary><strong>Voice notes</strong></summary>
Re-run the installer with the command for your voice backend.
macOS/Linux:
NVIDIA NIM transcription:
curl -fsSL "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.sh" | sh -s -- --voice-nim
Local Whisper on CPU or CUDA:
curl -fsSL "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.sh" | sh -s -- --voice-local
Both backends:
curl -fsSL "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.sh" | sh -s -- --voice-all
Local Whisper with CUDA 13.0:
curl -fsSL "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.sh" | sh -s -- --voice-local --torch-backend cu130
Windows PowerShell:
NVIDIA NIM transcription:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.ps1"))) -VoiceNim
Local Whisper on CPU or CUDA:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.ps1"))) -VoiceLocal
Both backends:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.ps1"))) -VoiceAll
Local Whisper with CUDA 13.0:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/install.ps1"))) -VoiceLocal -TorchBackend cu130
Restart fcc-server. In Admin UI → Messaging → Voice, enable voice notes, select cpu, cuda, or nvidia_nim, and choose the Whisper model. Local gated models need HUGGINGFACE_API_KEY; NVIDIA NIM transcription needs NVIDIA_NIM_API_KEY.
</details>
Run fcc-server --version to check the installed version without starting FCC.
Re-run the matching command from Install Or Update.
Stop every running FCC command before uninstalling.
Removes
~/.fcc/Keeps
macOS/Linux:
curl -fsSL "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/uninstall.sh" | sh
Windows PowerShell:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Alishahryar1/free-claude-code/main/scripts/uninstall.ps1")))
MIT License. See LICENSE for details.
Imported from gh:Kentucky-Open-Science/free-claude-code. Source last updated 2026-09-05. Synced 2026-09-05.
Source code on GitHub.
> This is a fork of Alishahryar1/free-claude-code,
> maintained by Evan Damron. It adds an openai_compatible provider that
> points FCC at any OpenAI-compatible Chat Completions endpoint — the
> UK LLM Factory in particular — plus a
> local mlxvlm provider for Apple Silicon. That is the reason this repo exists;
> everything else tracks upstream daily. See FORK.md.
> Upstream's README begins below.
These steps take you from nothing to Claude Code talking to an LLM Factory model.
The installer below is this fork's, and installs this fork's package. Do not
use upstream's install command — it installs upstream's build, which has no
openai_compatible provider.
macOS/Linux:
``bash
curl -fsSL "https://raw.githubusercontent.com/Kentucky-Open-Science/free-claude-code/main/scripts/install.sh" | sh
`
Windows PowerShell:
`powershell
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Kentucky-Open-Science/free-claude-code/main/scripts/install.ps1")))
`
When prompted, choose at least one coding agent (Claude Code). Re-run the same command to update.
Sign in at llm-factory.ai.uky.edu (UK Shibboleth via CILogon). You need two things:
. This is the API.You also need the model id you intend to use, exactly as the deployment
advertises it at
GET /v1/models — for example zai-org/GLM-5.2-FP8.3. Start FCC
macOS: open Free Claude Code from Applications. Windows: from the Start
menu. Linux:
`bash
fcc-server
`FCC opens the Admin UI once it starts; the URL is also printed in the server log.
Keep the
fcc-server terminal open.4. Configure the provider in Admin
In the Admin UI:
- Set OpenAI Compatible Base URL to
https://api-llm-factory.ai.uky.edu/v1.
- Set OpenAI Compatible API Key to your key.
- Set MODEL to
openai_compatible/...