All resources
Guide·6 min read·OpenRouter·Claude Code

Run the Secret Unreleased AI Model for Free (Ox Alpha, Even Inside Claude Code)

AI labs test their unreleased flagships in public under codenames. Right now that codename is Ox Alpha, it's free, and this page gets it running in your browser and inside Claude Code in under five minutes.

What a stealth model actually is

Before a big lab announces a model, it needs real traffic on it. So it quietly puts the model on OpenRouter under a codename and makes it free. No logo. No price. Then it watches how people use it. That's a stealth model.

Right now the codename is Ox Alpha. It appeared on August 20, 2026 on the OpenRouter stealth page. Here's what's confirmed, straight from the model card:

  • A 1,048,576-token context window. That's roughly 750,000 words in one prompt.
  • A 131,072-token output cap.
  • Text, images and video as input.
  • Tool calling, which is why it runs inside coding agents.
  • Price during preview: $0.00 per million tokens in, $0.00 per million tokens out.

Nobody will say who built it. People have been fingerprinting the tokenizer and the API signature, and the trail points at Z.ai, the lab formerly called Zhipu. Treat that as a strong guess. The official reveal comes when the lab announces the real model, and that's also the day the codename disappears.

The clock on this

OpenRouter said the free preview runs about a week. Every stealth model before this one vanished the day the lab announced the real thing, so don't build your week around the name.

The setup below is built to outlive Ox Alpha. If stealth/ox-alpha ever comes back as not found, open the stealth page, grab whatever codename is live, and swap that one string in your launcher. Everything else stays the same. I'll keep this page updated with the current codename.

Use it free in your browser (60 seconds)

  1. Create a free OpenRouter account. No card needed.
  2. Open the OpenRouter chat and pick Ox Alpha from the model list.
  3. Paste in something a normal chatbot chokes on. A whole codebase. A screen recording.

Boom. You're talking to a model that doesn't officially exist yet, and your balance didn't move.

Use it from code (the API)

OpenRouter speaks the OpenAI-style API, so whatever SDK you already use works. Point it at the OpenRouter base URL, set the model to stealth/ox-alpha, and use a key from your OpenRouter keys page. Here's the whole thing in Python so you can see there's no magic. Swap in your key and run it:

Copy-paste this
# pip install openai
from openai import OpenAI

client = OpenAI(base_url="https://openrouter.ai/api/v1", api_key="PASTE-YOUR-KEY")

reply = client.chat.completions.create(
    model="stealth/ox-alpha",
    messages=[{"role": "user", "content": "Reply with exactly two words: OX ONLINE"}],
)
print(reply.choices[0].message.content)

Put it inside Claude Code: the ox command

This is the part that feels like it shouldn't be allowed. Claude Code reads two environment variables to decide where it sends requests: a base URL and an auth token. OpenRouter runs an endpoint that speaks Claude Code's native protocol. Point those two variables at it and Claude Code happily runs a model from an anonymous lab.

Now, most tutorials do this by changing those variables globally, which breaks your normal Claude Code. I don't. The ox command sets them only for its own process, then launches Claude Code. Type claude, you get your normal Claude. Type ox, you get Ox Alpha. Both on the same machine, no logout, no switching back and forth.

You can build the launcher by hand (the next two sections), or you can make Claude Code build it for you. Paste your key into this prompt, then paste the prompt into Claude Code. It stores the key once in your OS, writes the launcher, adds it to your PATH, and proves it works by sending a test request through Ox Alpha:

Copy-paste this
Set up a command called ox that launches Claude Code on the OpenRouter model stealth/ox-alpha, without changing how my normal claude command works.

My OpenRouter API key is: PASTE-YOUR-KEY-HERE

Do exactly this, in order:

1. Store the key persistently under the name OPENROUTER_API_KEY. Windows: a user-scoped environment variable via [Environment]::SetEnvironmentVariable with the 'User' scope. Mac or Linux: append an export line to my shell profile (~/.zshrc or ~/.bashrc, whichever my shell uses). Trim any whitespace first. Never write the key into any other file, any git repo, or the launcher itself.

2. Create the launcher. Windows: a folder at $HOME\ox containing ox.ps1 plus a one-line ox.cmd wrapper (powershell -NoProfile -ExecutionPolicy Bypass -File ox.ps1, passing all arguments through), then add that folder to my user PATH if it is not already there. Mac or Linux: an executable script at ~/.local/bin/ox, and make sure ~/.local/bin is on my PATH.

3. The launcher reads OPENROUTER_API_KEY at runtime and sets these variables only for its own process, then runs claude with any arguments passed through:
ANTHROPIC_BASE_URL=https://openrouter.ai/api
ANTHROPIC_AUTH_TOKEN=the key
ANTHROPIC_API_KEY= (explicitly empty)
ANTHROPIC_MODEL=stealth/ox-alpha
ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL, ANTHROPIC_DEFAULT_HAIKU_MODEL, ANTHROPIC_SMALL_FAST_MODEL and CLAUDE_CODE_SUBAGENT_MODEL all set to stealth/ox-alpha
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
CLAUDE_CODE_MAX_CONTEXT_TOKENS=1048576 (the model has a 1M-token window; without this Claude Code assumes 200k and compacts early)

4. Verify, and show me the output of each check: (a) read the stored key back and confirm it matches exactly with no trailing whitespace, (b) call GET https://openrouter.ai/api/v1/key with the key as a Bearer token, (c) with the launcher's variables set in the current process, run: claude -p "Reply with exactly: OX ONLINE" --model stealth/ox-alpha (if you are running inside Claude Code yourself, unset CLAUDECODE for that child process first).

5. Do not run /logout, do not edit my Claude settings files or anything under ~/.claude, and do not change any existing environment variables. A warning that claude.ai connectors are disabled during the test is expected and fine.

6. Finish by telling me to open a new terminal and type ox.

By hand, Windows (PowerShell)

Paste your key where it says PASTE-YOUR-KEY. Run the whole block once in PowerShell, then open a new terminal and type ox.

Copy-paste this
# 1) Save your key once (user-scoped, survives reboots, never lives in a file)
[Environment]::SetEnvironmentVariable('OPENROUTER_API_KEY', 'PASTE-YOUR-KEY', 'User')

# 2) Create the launcher
New-Item -ItemType Directory -Force "$HOME\ox" | Out-Null
@'
$key = [Environment]::GetEnvironmentVariable('OPENROUTER_API_KEY', 'User')
if (-not $key) { Write-Error 'OPENROUTER_API_KEY is not set'; exit 1 }
$env:ANTHROPIC_BASE_URL = 'https://openrouter.ai/api'
$env:ANTHROPIC_AUTH_TOKEN = $key.Trim()
$env:ANTHROPIC_API_KEY = ''
$env:ANTHROPIC_MODEL = 'stealth/ox-alpha'
$env:ANTHROPIC_DEFAULT_OPUS_MODEL = 'stealth/ox-alpha'
$env:ANTHROPIC_DEFAULT_SONNET_MODEL = 'stealth/ox-alpha'
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL = 'stealth/ox-alpha'
$env:ANTHROPIC_SMALL_FAST_MODEL = 'stealth/ox-alpha'
$env:CLAUDE_CODE_SUBAGENT_MODEL = 'stealth/ox-alpha'
$env:CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY = '1'
$env:CLAUDE_CODE_MAX_CONTEXT_TOKENS = '1048576'
claude @args
'@ | Set-Content "$HOME\ox\ox.ps1"
"@echo off`r`npowershell -NoProfile -ExecutionPolicy Bypass -File `"%~dp0ox.ps1`" %*" | Set-Content "$HOME\ox\ox.cmd"

# 3) Put it on your PATH (takes effect in new terminals)
$p = [Environment]::GetEnvironmentVariable('Path', 'User')
if (($p -split ';') -notcontains "$HOME\ox") { [Environment]::SetEnvironmentVariable('Path', $p.TrimEnd(';') + ";$HOME\ox", 'User') }

By hand, Mac and Linux

Same idea, one executable script. If you use bash instead of zsh, swap ~/.zshrc for ~/.bashrc. Open a new terminal after.

Copy-paste this
# 1) Save your key once (bash users: use ~/.bashrc instead of ~/.zshrc)
echo 'export OPENROUTER_API_KEY="PASTE-YOUR-KEY"' >> ~/.zshrc

# 2) Create the launcher
mkdir -p ~/.local/bin
cat > ~/.local/bin/ox <<'EOF'
#!/usr/bin/env bash
: "${OPENROUTER_API_KEY:?Set OPENROUTER_API_KEY first, then open a new terminal}"
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"
export ANTHROPIC_API_KEY=""
export ANTHROPIC_MODEL="stealth/ox-alpha"
export ANTHROPIC_DEFAULT_OPUS_MODEL="stealth/ox-alpha"
export ANTHROPIC_DEFAULT_SONNET_MODEL="stealth/ox-alpha"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="stealth/ox-alpha"
export ANTHROPIC_SMALL_FAST_MODEL="stealth/ox-alpha"
export CLAUDE_CODE_SUBAGENT_MODEL="stealth/ox-alpha"
export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=1048576
exec claude "$@"
EOF
chmod +x ~/.local/bin/ox

# 3) Make sure ~/.local/bin is on your PATH, then open a new terminal
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

Prove it's Ox Alpha, and prove it's free

Open two terminals side by side. Run claude in the first and ox in the second, then type /status in both.

The first one shows Anthropic as the base URL and your normal Claude model. The second one shows openrouter.ai as the base URL, the auth token coming from ANTHROPIC_AUTH_TOKEN, and stealth/ox-alpha as the model. Same interface, different brain. Now give both the same task and watch them work.

The free part: open your OpenRouter activity page after the session. Every Ox Alpha request sits there at $0.00. For scale, the Claude API bills Opus 5 at $5 per million input tokens and $25 per million output. Ox Alpha bills nothing while the preview lasts.

One line you'll see when ox starts: a warning that claude.ai connectors are disabled because another auth source is set. That's expected. Your claude.ai extras are off inside the ox session, and they come straight back when you run plain claude.

The 1M context trick nobody mentions

Claude Code doesn't recognize the stealth/ox-alpha name, so by default it assumes the model has a 200,000-token window and starts compacting your session way too early. You'd be throwing away 80 percent of the context you came for.

The launcher already fixes it with CLAUDE_CODE_MAX_CONTEXT_TOKENS=1048576. If you set things up some other way, add that variable, or append [1m] to the model name. You'll know it worked when the 200k warning stops showing up at startup.

Read this before you paste anything important

  • Prompts and completions are retained by the anonymous provider. The model card says they're not used for training, but retained is retained. No client code. Nothing under NDA.
  • Free keys have request caps. A long agentic session in Claude Code burns requests fast, because every tool call is a request. Do your big task in one focused session.
  • The model will disappear. When it does, swap the codename as described above. The launcher stays.
  • To go back to normal, close the session and run claude. Nothing to undo.

Use this to learn what the next generation of models can do. Don't use it to move data you're not allowed to move.

Catch the next one before everyone else

Stealth models show up a few times a year, and each one is free for days, sometimes weeks. Bookmark the OpenRouter stealth page. When a new codename lands, change one string in your launcher and you're running it inside Claude Code before the announcement even exists.

For the models that already launched, I keep a separate list of every premium model you can use for free. Save this page, you'll need it again.

Get the next one first

New prompts every week.

Free. The new drops and the tools behind them, before they hit the feed.

No spam · New issues Sunday · Unsubscribe anytime

Need it custom?

Want this built for you?

Tell me the idea and I’ll build it. An app, a tool, an automation. You don’t need to be technical.

Frequently asked questions

Yes. The model card lists $0.00 per million tokens in and out during the preview, and a free OpenRouter key is enough. You're paying with usage, not money: the provider retains prompts (without training on them) to see how a real audience uses the model before launch.

Nobody has claimed it. Community tokenizer fingerprinting points at Z.ai (formerly Zhipu), but that's an educated guess. The reveal comes with the official launch, which is also when the stealth codename goes away.

No. The launcher sets its variables only for its own process and never touches your Claude Code settings or login. Plain claude keeps working exactly as before, and you can run both side by side. You never need to run /logout.

Treat it like a public preview. Prompts are retained by an anonymous lab, so keep client code, credentials and anything confidential out of it. For everything else it's as safe as any other API model, and your key stays in your OS environment store, never in a file.

The stealth/ox-alpha name stops resolving. Open the stealth page, copy the current codename, swap it in the launcher, and you're back. I'll keep this guide updated with the live codename, and the rest of my free model routes still apply.