Ox Alpha has a formal identity now. Zhipu AI says in its August 26 launch announcement that GLM-5.3-Flash was tested anonymously as Ox-Alpha on OpenCode and OpenRouter before release. The production model code is glm-5.3-flash.
That is enough to preserve your Ox Alpha results as an evaluation baseline. It is not enough to assume that a preview URL, provider-side cache, price, rate limit, or response event was renamed in place. A safe move treats the official release as a new provider contract.
There are also three different products behind the same model name:
| Route | What you buy or operate | The number that matters first |
|---|---|---|
| Z.AI Model API | Metered hosted inference | Input, cached input, and output tokens |
| GLM Coding Plan | A subscription with points and supported coding tools | Quota consumption, including off-peak rules |
| Open weights | Your own serving stack | Weight storage, accelerator memory, cache, concurrency, and operations |
The official claim that Flash offers three times the usable Coding Plan quota does not mean its API is “three times cheaper.” Likewise, 18B activated parameters does not mean the open model fits in 18 GB.
Make the migration observable before moving traffic
Start with 10–20 accepted Ox Alpha sessions from your own workload. Keep the input, tool permissions, timeout, maximum turns, artifacts, and pass/fail decision. Do not keep only the final prose: tool arguments, partial streams, and retry behavior often expose the real incompatibility.
Build the formal path alongside the old one:
- use the exact
glm-5.3-flashmodel code; - select either the metered Model API or the dedicated Coding Plan endpoint rather than mixing credentials and base URLs;
- send thinking as enabled and choose
low,high, ormaxdeliberately; - parse reasoning content separately from the final answer;
- when tools stream, concatenate their JSON arguments before execution;
- validate images, videos, files, and structured output with the same fixtures your product actually uses.
The official model page specifies video, image, text, and file input with text output, a 1M-token context window, and up to 128K output tokens. On the hosted API, thinking cannot be disabled. The recommended defaults are temperature: 1, top_p: 0.95, and reasoning_effort: max; simpler work should still be measured before lowering effort becomes a production default.
For the general metered API, Z.AI documents https://api.z.ai/api/paas/v4 as the base URL. This Python request uses the OpenAI client while retaining the GLM-specific thinking fields:
pythonimport os from openai import OpenAI client = OpenAI( api_key=os.environ["ZAI_API_KEY"], base_url="https://api.z.ai/api/paas/v4/", ) result = client.chat.completions.create( model="glm-5.3-flash", messages=[{ "role": "user", "content": "Review this migration plan. Return risks, acceptance checks, and the first change." }], temperature=1, max_tokens=4096, extra_body={ "thinking": {"type": "enabled", "clear_thinking": False}, "reasoning_effort": "high", }, ) print(result.choices[0].message.content)
This is a contract-aligned request, not a claimed live acceptance result: no usable Z.AI key was present in the test environment. When you run it, capture the HTTP status, first-token and total latency, all three token counters, retries, tool-loop completion, and the business acceptance result. A 200 response alone does not complete a migration.

Price a workload, not a model name
Z.AI's pricing page currently publishes list and promotional prices per million tokens:
| Meter | List price | 50% promotion |
|---|---|---|
| Uncached input | $0.15 | $0.075 |
| Cached input | $0.03 | $0.015 |
| Output | $0.50 | $0.25 |
The promotion ends at 24:00 on September 9, 2026 (UTC+8). Plan durable budgets with the list rate. Cached-input storage is separately marked limited-time free, so do not silently treat storage as permanently free either.
Suppose one accepted agent run consumes 2 million input tokens, 80% of which are cached, and 200,000 output tokens. The promotional model charge is:
0.4 × $0.075 + 1.6 × $0.015 + 0.2 × $0.25 = $0.104
At list price, the same shape costs:
0.4 × $0.15 + 1.6 × $0.03 + 0.2 × $0.50 = $0.208
That still excludes paid tools, web search, retries, tax, exchange rates, and human repair. The operational comparison should be total spend divided by accepted tasks. A lower token rate can lose if the route creates more failed tool loops or manual fixes.
The local test can stop before a 300 GiB download
GLM-5.3-Flash is a 320B-total, 18B-active mixture-of-experts model. The active count describes per-token computation; storage must still account for the whole checkpoint.
The official Hugging Face repository is MIT licensed. Querying its public file metadata returned 62 safetensors totaling 328,337,455,672 bytes, or 305.79 GiB. The official vLLM recipe independently rounds the native FP8 weights to 306 GiB before runtime and KV-cache overhead; it says BF16 needs roughly twice the weight memory.
You can reproduce the repository measurement without downloading the weights:
bashcurl -fsSL \ 'https://huggingface.co/api/models/zai-org/GLM-5.3-Flash?blobs=true' | jq '[.siblings[] | select(.rfilename | endswith(".safetensors")) | .size] | {files: length, bytes: add, GiB: (add / 1073741824)}'
The test machine was an Apple M4 laptop with 16 GB of unified memory and about 135 GiB free on its root volume. It fails twice before inference: the native repository does not fit on the available disk, and the weights cannot fit in memory. No tokens-per-second or quality figure can honestly follow from that environment. Stopping at this gate is the useful result—it avoids a multi-hundred-gigabyte transfer that cannot lead to a runnable native deployment.
This does not prove that every community quantization is impossible on every Mac. No third-party quantization was downloaded or validated, so it would be misleading to attach the official model's quality or support promise to one.
Passing storage is only the first gate
The model card lists SGLang, vLLM, TokenSpeed, Transformers, KTransformers, and Unsloth. Their hardware coverage and maturity differ. The current vLLM recipe begins with accelerator deployments such as FP8 tensor parallelism across four GB200 GPUs. The SGLang cookbook separates KV memory from a KDA state pool and documents different cache/backend combinations for Blackwell, H100/H200, and AMD paths—some of them explicitly unverified.
Before calling a server “deployed,” require all of the following:
- The complete checkpoint, container images, temporary files, and logs fit with headroom.
- Accelerator memory covers weights plus runtime, KV cache, KDA state, multimodal encoder spikes, and intended concurrency.
- The exact framework build supports the chosen GPU, precision, sparse attention, reasoning parser, and tool parser.
- A fixed benchmark records startup, first-token latency, throughput, concurrency, tools, and representative multimodal inputs.
- The accepted-task cost beats the hosted route after hardware, energy, engineering, and idle capacity are included.

One subtle contract difference deserves its own check. Hosted Z.AI says thinking cannot be disabled. Some local serving recipes expose chat-template controls that can change thinking behavior. A local template feature does not imply that the hosted API accepts the same option.
Use the Model API first when the goal is to establish quality, migration risk, and real workload cost quickly. Consider self-hosting after data-control requirements or sustained utilization justify a multi-accelerator system. If the decision expands to another provider, the English GLM-5.3 versus DeepSeek V4 Pro guide handles that separate comparison.
The migration is complete when the formal route passes your old acceptance set, invoices can be reconstructed from token counters, and the chosen hosting path has no hidden endpoint or memory assumption—not when a configuration file merely contains the new model name.



