Internal · Eon Labs

Using the Eon sub2api with OpenClaw

A setup guide for Chen Li (CEO) and May Wang (Staff Data Scientist).
Point your own OpenClaw at our self-hosted Claude API and run on the latest subscription models — currently Claude Opus 4.8.

What this is. We run a self-hosted gateway (sub2api, the Wei-Shaw/sub2api project) on our GPU workstation that turns our Claude Max subscription pool into a standard Anthropic-compatible API. Your OpenClaw uses it like the official Anthropic API — you point it at our endpoint with your personal key, and you get the same models your Claude Code subscription serves (Opus 4.8, Sonnet 4.6, Haiku 4.5, …).
Why we register a custom eon provider (don't skip this). OpenClaw ships a frozen built-in anthropic catalog that cannot be overridden in place (openclaw#56679) and is out of date. We instead register a separate provider id eon with an explicit model list. Because the gateway forwards any model the subscription serves, this lets you list and run Opus 4.8 even though older tooling may not know it yet.

Before you start

The endpoint

https://eon.25u.com:8450

This is the current working inference endpoint (Tier-1). If it is ever unreachable, the same service is also available at https://ccmax.myddns.me:8450 (fallback) — but use the eon.25u.com URL by default.

Setup

Step 1 — Put your key in the environment

Create ~/.openclaw/env:

OPENCLAW_SUB2API_KEY=sk-your-personal-key-here
CLAUDE_CODE_ATTRIBUTION_HEADER=0

Step 2 — Configure the custom eon provider

Create / edit ~/.openclaw/openclaw.json. The model list below is the current subscription set; default is Opus 4.8:

{
  "models": {
    "mode": "merge",
    "providers": {
      "eon": {
        "baseUrl": "https://eon.25u.com:8450",
        "apiKey": "${OPENCLAW_SUB2API_KEY}",
        "api": "anthropic-messages",
        "models": [
          { "id": "claude-opus-4-8",            "name": "Claude Opus 4.8" },
          { "id": "claude-opus-4-7",            "name": "Claude Opus 4.7" },
          { "id": "claude-opus-4-6",            "name": "Claude Opus 4.6" },
          { "id": "claude-sonnet-4-6",          "name": "Claude Sonnet 4.6" },
          { "id": "claude-sonnet-4-5-20250929", "name": "Claude Sonnet 4.5" },
          { "id": "claude-haiku-4-5-20251001",  "name": "Claude Haiku 4.5" }
        ]
      }
    }
  },
  "agents": {
    "defaults": { "model": { "primary": "eon/claude-opus-4-8" } }
  }
}
Three non-negotiables:
  1. Provider id is eon, not anthropic (same-name override is ignored — openclaw#56679).
  2. "mode": "merge" — keeps OpenClaw's other providers intact.
  3. "api": "anthropic-messages" at the provider level — without it OpenClaw falls back to api.anthropic.com and your key 401s (openclaw#23332).

Step 3 — Verify

# Confirm OpenClaw sees the eon models:
openclaw infer model list | grep '"provider":"eon"'

# Run the newest model (Opus 4.8) end-to-end:
openclaw agent --local --session-key test-1 \
  --model eon/claude-opus-4-8 \
  -m "Reply with exactly: IT-WORKS"

You should get IT-WORKS back from Opus 4.8. (The --session-key flag is required; any label works.)

Validated. This exact custom-eon-provider setup was tested end-to-end through OpenClaw against this gateway: all models registered as provider:"eon", and a live agent turn on Claude Opus 4.8 returned correctly. Your per-person key was confirmed working before delivery.

Staying on the latest models (managed for you)

You normally don't need to touch the model list — the operator runs an automatic sync that keeps the available models aligned with what the subscription serves, and you'll be told when the recommended default changes (e.g. when a new Opus ships). If you ever want to confirm what you can use right now, just run a quick turn against a model id; if it answers, it's available.

Note: the gateway's /v1/models listing can lag behind the real subscription (it depends on the gateway's build), so treat the eon list in your config (kept current by the operator) — not /v1/models — as the menu. A model can work for inference even if /v1/models doesn't list it.

Troubleshooting

SymptomCause / fix
Node.js v22.19+ is requiredUpgrade Node ≥ 22.19.
HTTP 401 / invalid x-api-keyYou're hitting official Anthropic — ensure provider id is eon and "api":"anthropic-messages" is set.
Model not found / unknown modelUse one of the ids in your eon config. If you need a newer one, ask the operator to add it (it'll be auto-synced).
403 INSUFFICIENT_BALANCEYour key needs a quota top-up — message the operator (Terry).
Slow / timeouts from mainland ChinaKnown China↔Canada link throttling — not a key issue. A closer relay is being set up; contact the operator.