How to Use Union Alpha

Three ways to run the Union Alpha model — start chatting in a browser, call it from your own code, or wire it into the coding agent you already use.

Free 262K Context Text + Image Input OpenAI Compatible
Get an OpenRouter API Key →

Pick your path

Union Alpha runs on OpenRouter. Everything below starts from the same place: an OpenRouter account and an API key.

Just want to try it

No install, no code. Open the model on OpenRouter and start a chat.

Jump to web chat →

Writing your own app

Point any OpenAI-compatible client at OpenRouter and set the model ID.

See the API page →

Using a coding agent

OpenCode, Cline, or Claude Code — config for each is below.

Jump to agent setup →

Step 0: Get an API key

Every method on this page needs the same key. You only do this once.

  1. Sign up or log in at openrouter.ai.
  2. Open Settings → API Keys.
  3. Click Create API Key and copy the value — it starts with sk-or-v1-.

Keep the key out of your source code. Put it in an environment variable (OPENROUTER_API_KEY) or your editor's settings, not in a file you might commit.

Option 1: Chat with it in the browser

Fastest way to see what the model can do — no install, no key pasting.

  1. Open the model page at openrouter.ai/stealth/union-alpha.
  2. Use the chat entry on that page to start a conversation.
  3. Pick stealth/union-alpha as the model if the picker does not already have it selected.

Good for testing prompts, checking whether it handles your language or domain vocabulary, and comparing answers against other models before you commit.

Option 2: Call it from your own code

Union Alpha uses OpenRouter's OpenAI-compatible endpoint, so any client that speaks the OpenAI chat-completions API works. Three values are all you need:

SettingValue
Base URLhttps://openrouter.ai/api/v1
Model IDstealth/union-alpha
Auth headerAuthorization: Bearer $OPENROUTER_API_KEY

Code examples, the full parameter reference, and tool-calling details live on the Union Alpha API page — kept there so this page stays a setup guide rather than a second copy of it.

Option 3: Use it inside your coding agent

Two of the three setups below use OpenRouter as a built-in provider, which is the supported path. The third needs a caveat — read it before you spend time on it.

OpenCode (terminal and desktop)

  1. Install OpenCode: curl -fsSL https://opencode.ai/install | bash (or npm install -g opencode-ai, or brew install anomalyco/tap/opencode).
  2. In your project directory, start it with opencode, then run /connect and choose OpenRouter.
  3. Paste your OpenRouter API key when prompted. Run opencode auth list to confirm it was stored.
  4. If stealth/union-alpha is not in the model list yet, add it to your opencode.json (project root, or ~/.config/opencode/opencode.json for all projects):
{
  "$schema": "https://opencode.ai/config.json",
  "model": "openrouter/stealth/union-alpha",
  "provider": {
    "openrouter": {
      "models": {
        "stealth/union-alpha": {}
      }
    }
  }
}

OpenCode composes model IDs as provider/model, which is why the default-model line is prefixed with openrouter/ while the key in the models map is not. Restart OpenCode after editing the config — the provider catalog is read at startup. The desktop app and the terminal share the same config and credentials, so you only connect once.

Cline (VS Code extension)

  1. Open Cline's settings from the gear icon in the Cline panel.
  2. Set API Provider to OpenRouter.
  3. Paste your OpenRouter API key into the OpenRouter API Key field. Leave "Use custom base URL" unchecked.
  4. Open the Model dropdown and search for union alpha. If it is not listed, reload the Cline panel so it refetches OpenRouter's model catalog.

Claude Code

Read this first. OpenRouter supports Claude Code by pointing ANTHROPIC_BASE_URL at https://openrouter.ai/api — but OpenRouter's own documentation states that Claude Code is only guaranteed to work with Anthropic first-party models, and that Claude Code is optimized for Anthropic models and may not work correctly with other providers. Routing Claude Code to a non-Anthropic model such as Union Alpha is therefore untested and unsupported. If you want an agent experience, use OpenCode or Cline above instead.

If you still want to try it, this is the supported OpenRouter wiring — swap in the Union Alpha model:

export OPENROUTER_API_KEY="sk-or-v1-..."
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"
export ANTHROPIC_API_KEY=""          # must be explicitly empty

# route a model class to Union Alpha (experimental)
export ANTHROPIC_DEFAULT_SONNET_MODEL="stealth/union-alpha"
  1. Add the variables to your shell profile (~/.zshrc or ~/.bashrc) and reload it — otherwise you will keep testing the old environment.
  2. If you were previously logged into Claude Code with an Anthropic account, run /logout once and relaunch, or the cached login will conflict with the gateway credentials.
  3. Start claude in your project, then run /status to verify the auth token and base URL.

Two details that trip people up: the base URL must include the scheme and stop at /api (not /api/v1), and ANTHROPIC_AUTH_TOKEN must be defined after OPENROUTER_API_KEY in the same file, or it expands to an empty string and every request fails with an auth error.

Sending an image

Union Alpha takes image input alongside text. Pass it in the standard OpenAI-compatible content array — this works the same way through the API and through any client that supports multimodal input:

{
  "model": "stealth/union-alpha",
  "messages": [{
    "role": "user",
    "content": [
      { "type": "text", "text": "Describe what is wrong with this chart." },
      { "type": "image_url", "image_url": { "url": "https://example.com/chart.png" } }
    ]
  }]
}

Troubleshooting

SymptomCause and fix
Model not found The ID must be exactly stealth/union-alpha, with the stealth/ prefix and a hyphen. union-alpha alone, unionalpha, or union_alpha all fail.
401 / auth error Key missing, expired, or blanked out by an empty variable. Re-check it at OpenRouter → Settings → API Keys, and confirm OPENROUTER_API_KEY is defined before anything that references it.
429 / rate limited Free models share global rate limits tied to your OpenRouter account. Wait and retry, or spread requests out. See OpenRouter's rate-limit FAQ for the current rule.
Very slow responses It is a free stealth model on shared capacity, so latency varies. Fine for long-form and batch jobs; poor fit for latency-sensitive interactive use.
Model missing from a client's picker The client caches its model catalog at startup. Restart the app, or add the slug explicitly to the client's config (as shown for OpenCode above).
Where did my prompt go? Union Alpha is served by a third-party provider. OpenRouter states that prompts and completions may be retained by that provider but are not used for training. Do not send secrets or regulated data.

FAQ

What is the model ID for Union Alpha?

The OpenRouter model ID is stealth/union-alpha. It is case-sensitive and includes the stealth/ provider prefix.

How do I use Union Alpha for free?

Create an OpenRouter account, generate an API key, and call stealth/union-alpha — or chat with the model directly on its OpenRouter page. Union Alpha is free to use.

Can I use Union Alpha in OpenCode or Cline?

Yes. Both support OpenRouter as a built-in provider: connect your API key, then select stealth/union-alpha. In OpenCode you may need to add the slug to provider.openrouter.models in opencode.json if it is not in the default list.

Does Union Alpha work with Claude Code?

OpenRouter supports Claude Code through ANTHROPIC_BASE_URL, but only guarantees compatibility with Anthropic first-party models. Running Union Alpha through Claude Code is untested and unsupported — use Cline or OpenCode for agent work.

Does Union Alpha accept images?

Yes — it is multimodal, taking text and image input and returning text, using the standard OpenAI-compatible image_url content block.

Can I use Union Alpha in production?

Treat it as experimental. It is a free stealth model served by a third-party provider with no SLA, and it is not intended as a dependency for production workloads.

Next steps