Ciru v4.1.2 — October 5, 2026. Applies the shared output-budget correction; Apodex retains its own native MTP4 implementation. Explicit 262,144-token output ceilings now use the fully rendered prompt's remaining context. Weights, pinned engine wheels and sampling defaults are unchanged. Patch notes · Upgrade existing installations.
OMP clients must advertise input: [text, image], reasoning: true, contextWindow: 262144 and maxTokens: 262144 to use vision and the full output ceiling.
Ciru v4.1.1 — September 30, 2026. Qualified repairs and a retained subset of community PR #2. Apodex retains its own native MTP4, model-specific state layout and released recurrence/attention implementation.
The recent improvements would not have been possible without Cinderblade from the toolbox discord.
Measured complete-output comparisons: both temporal mirrors improve by 7.9–12.4% at 8 GiB; the magnitude is classified as noisy. All compared core token IDs, reasoning and answers match. Results and limits.
Ciru v4 — runtime 4.0.0. This update carries the retained shared Ornith prefill, long-context attention, Q/K and native-tool runtime improvements into Apodex's own MTP4 stack. Apodex weights, BF16 MTP and vision tensors are unchanged. Validated with 15/15 naturally completed requests, covering eight concurrent tool calls, tool-result continuation, 64K prefix reuse, mixed-length workloads and vision, with full remaining-context reasoning budgets. Patch notes · Validation results.
Apodex1.1 mini Ciru Halo Agent
Eight local agents on AMD Strix Halo, with Apodex's own native MTP. This Ciru v4 build pairs a custom four-bit Apodex-1.1-mini checkpoint with the Ciru vLLM/ROCm serving stack, tuned for concurrent tools, coding and long working histories.
The default profile provides 262,144-token request capacity, eight active requests, a 44 GiB shared KV/state pool, prefix caching and MTP4. It uses Apodex's own retained BF16 MTP tensors. No external drafter download is needed.
On the retained Ciru v3 difficult 22-question diagnostic, the earlier repaired build scored 7/8 IFEval strict, 8/8 GSM8K and 6/6 HumanEval, with eight requests active at peak and no inference errors or truncated answers. These are selected diagnostics, not full-suite accuracy estimates. Benchmark details and limits.
This checkpoint requires the supplied runtime and plugin. Stock vLLM, Transformers and llama.cpp cannot directly serve this custom packed format. The default launcher accepts image input using the retained upstream BF16 vision encoder and projector. See vision usage.
Run
Read installation instructions for Linux prerequisites. The measured hardware is AMD Ryzen AI Max+ 395 / Radeon 8060S, gfx1151, with 128 GB unified memory.
uvx --from huggingface_hub hf download \
jcbtc/Apodex1.1-mini-Ciru-Halo-Agent-vllm-strix-halo \
--local-dir ./apodex-ciru-halo-agent
cd apodex-ciru-halo-agent
bash runtime/INSTALL-APODEX-RUNTIME.sh
bash bundle/serve.sh --host 127.0.0.1 --port 8081
Use the OpenAI-compatible base URL http://127.0.0.1:8081/v1, model main, in your preferred agent harness. The default launcher binds to 0.0.0.0; the command above restricts it to localhost. The server does not add authentication.
curl http://127.0.0.1:8081/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"main","messages":[{"role":"user","content":"Write a Python function that merges overlapping intervals, then explain its complexity."}]}'
Model and harness settings
| Setting | Release default |
|---|---|
| Native speculation | MTP4 |
| Active sequences | 8; excess requests queue |
| Per-request context | 262,144 tokens, including prompt and output |
| Shared KV/state allocation | 44 GiB |
| KV / recurrent-state precision | BF16 / FP32 |
| Prefix cache | Enabled; 1,120-token retention interval |
| Scheduler batch budget | 8,192 tokens |
| Long-prefill chunk | 4,480 tokens |
| Long-prefill scheduling | Cadence 4 for initial prompts over 8,192 tokens |
| Temperature / top-p / top-k | 1.0 / 0.95 / 20 |
| Repetition penalty | 1.05 |
| Thinking | Original template default, enabled |
| Output capacity | Remaining request context; clients may set a lower limit |
| Tool and reasoning parsers | Strict qwen3_xml / qwen3 adapters |
The sampler follows the source model's generic agentic recipe and is supplied in generation-defaults.json. Clients may override sampling values explicitly. Reasoning and the final answer share the remaining request context; an explicit client output limit can reduce that allowance. Preserve the bundled template, tool schemas, tool-call IDs and tool-result messages.
The memory pool is shared: eight requests do not each receive 44 GiB, and eight independent full 256K histories are not guaranteed to fit simultaneously. Reserve output space and compact or trim histories before the request limit. The launcher supports --context, --cache-gib and --max-seqs; the qualified profile above remains the default. Installation documents runtime, cache and state locations.
For streaming tools, accumulate argument fragments and wait for successful terminal completion before execution. Discard calls from a stream that reports an error. A parser error, timeout or output-length stop is not a completed tool call. Give the model real tool results when continuing a conversation; the runner cannot supply a browser, filesystem or harness implementation by itself.
The earlier Ciru v3 portable package completed 8/8 valid concurrent streamed tool calls, a returning tool-result conversation, and cancellation followed by successful slot reuse. The separate exact-text check scored 4/8: four calls omitted the requested final newline, while other text, quotes and Unicode matched. The original cases were not regenerated. The native Qwen XML codec treats one leading/trailing parameter newline as markup, so this release does not guarantee byte-for-byte boundary whitespace. Package check and platform scope.
Runtime repairs included
Shared prefill and attention updates: output32 expert tiles, six guarded GDN traversal changes, 4,480-token prefill chunks, half-D attention and repaired persistent long-context attention.
Exact target Q/K fusion: retains source and arithmetic guards around the combined reduction.
Native tool runtime: independent grammar chains can run in parallel; native grammar and buffered-stream usage changes retain strict schema and completion handling.
Graph-phase guard: prevents prompt-tail or mixed prefill batches from reusing speculative decode graphs with incompatible recurrent-state metadata. This fixes a reproduced cache-corruption crash while preserving normal decode graphs.
Native MTP slot repair: each draft step writes to its current attention-cache slot. The causal check improved from 0/51 to 51/51 correct slot observations.
Native tool schemas: automatic tool calls enforce required arguments during generation. Framing and streaming checks preserve complete tool payloads; explicit
strict: falseremains available.
The shared graph repair's causal test changed 1,105,793 cache values and produced 1,919 non-finite values without the guard; both counts were zero with it. The final parser refinement passed six ASGI replay checks. These demonstrate specific repaired failures, not universal workload correctness. Runtime repair details.
Measurements
Ciru v3 benchmark results. The following tables retain their original measured version; Ciru v4 validation is reported above.
All results below were collected on Strix Halo. Throughput includes reasoning tokens where the model generated them. Aggregate end-to-end throughput includes prefill and waiting; it is different from per-request decode-only TG.
Repaired build, publisher recipe, eight slots
| Retained difficult diagnostic | First-sample result |
|---|---|
| IFEval strict prompt adherence | 7/8 |
| GSM8K exact answer | 8/8 |
| HumanEval native base tests | 6/6 |
All 22 original responses completed naturally, with zero inference errors, cutoffs, outer retries or answer repairs. The queue reached eight running requests and zero waiting requests. The run generated 104,265 completion tokens in 716.123 seconds, or 145.60 aggregate tokens/s, including reasoning. One native grader dependency race was recovered by scoring the identical saved answer again; no new model sample was requested.
The sole failure repeated a forbidden comma in IFEval330. These questions were selected from earlier difficult cases and do not constitute complete suites. The three scores should not be combined into a general accuracy claim. Earlier Apodex scores on these questions were 4/8, 5/8 and 3/6, but used temperature zero, thinking disabled and an older runner: the improvement cannot be attributed to the MTP repair alone.
Matched MTP repair speed screen
| Fixed-output coding screen | Before slot repair | Repaired |
|---|---|---|
| C1, HE0–9, end-to-end tokens/s | 66.42 | 70.08 |
| C8, HE0–7, aggregate end-to-end tokens/s | 183.26 | 202.56 |
This was a short 256-output-token screen, not natural completion timing or general prose throughput. Across the retained balanced comparisons, 72 measured requests generated 18,432 tokens with zero errors. The primary comparison improved C1 by 5.5% and C8 by 10.5%; some individual prompts slowed down. There is no claim that every workload gets faster.
Earlier broader tests
These measure earlier serving builds and recipes, and were not rerun in full for this publication.
| Test | Historical result | Recipe / scope |
|---|---|---|
| Full IFEval strict | 444/541 | Temperature 0, thinking off; 5 output-length stops |
| Full HumanEval | 150/164 | Temperature 0, thinking off |
| Tool84, two retained runs | 149/168 | Temperature 0.6, top-p 0.95, top-k 20, thinking on, C8 |
| HermesAgent-20, MTP4 C8 | 91 mean native score | 17 pass, 1 partial, 2 fail; one trajectory per task, native retries retained |
The historical Hermes C8 workflow generated 20,575 tokens in 299.92 seconds, 68.60 aggregate tokens/s including tools and waiting. This custom 20-task protocol is different from a model-only speed screen. Its screenshot tasks encountered the recorded text-only capability limitation. The current release supplies the publisher recipe and the subsequent runtime repairs; those historical scores are not presented as a fresh evaluation of it.
Weights and sources
- Source: Apodex-1.1-mini, revision
4e4f109a5e32d1306dc6c75e4995a09c8b881811. - Routed and large dense matrices: H128-transformed affine W4/G256, fitted with uniform weight importance. Decode uses A8 paths; selected prefill operations use A4/IU4 kernels. Output head: Apodex-specific W8/G128.
- Protected BF16 tensors: router, embeddings, norms, small GDN controls, vision and the source model's native MTP. Selected Apodex BF16 prefill matrices are in
bundle/models/source-prefill.safetensorsand are required. - Target files total approximately 21.53 GB, with 1.76 GB of source-prefill matrices and the accompanying runtime. This download size is not the loaded memory requirement.
- Serving plugin source, pinned vLLM/AITER wheels and source archives, and native kernel sources. Exact file hashes and provenance are in RELEASE.json.
ornith_g256 and libornith_* are retained Ciru format/kernel compatibility identifiers. The checkpoint and MTP tensors in this release come from Apodex.
Limits and credits
This quantization does not promise BF16 equivalence. Fixed-history investigation still found target-probability differences under concurrency that are not fully attributed. Repairing graph dispatch and MTP cache ownership does not establish a universal numerical or quality improvement. Long context, tool correctness and generated programs remain workload dependent. No broad image capability claim is made.
The runtime package was installed and checked in isolation on an existing NixOS Strix Halo host. An Ubuntu 26.04 deployment recipe is provided; it has not been independently qualified on a fresh Ubuntu machine. See installation and validation scope.
Credit to the Apodex Team for Apodex-1.1-mini, Qwen for its base architecture, the vLLM, AMD ROCm/AITER, PyTorch, Triton, XGrammar and flash-linear-attention contributors, and Ciru for the quantization, kernels, serving integration, repairs and local evaluation. Source licenses and the original model card are retained under LICENSES and in the runtime source archives. The source model is Apache 2.0; third-party components retain their own licenses.
Sponsorship disclosure: Ciru is sponsored by AMD.