| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| basert-engine-linux-arm64-cuda-0.2.3.tar.gz | 2026-08-19 | 21.8 MB | |
| basert-engine-linux-arm64-cuda-0.2.3.tar.gz.sha256 | 2026-08-19 | 110 Bytes | |
| basert-engine-macos-arm64-0.2.3.tar.gz | 2026-08-19 | 15.4 MB | |
| basert-engine-macos-arm64-0.2.3.tar.gz.sha256 | 2026-08-19 | 105 Bytes | |
| BaseRT engine 0.2.3 source code.tar.gz | 2026-08-19 | 524.5 kB | |
| BaseRT engine 0.2.3 source code.zip | 2026-08-19 | 630.1 kB | |
| README.md | 2026-08-19 | 4.8 kB | |
| Totals: 7 Items | 38.4 MB | 1 | |
BaseRT 0.2.3
Model pulls that finish. basert pull downloads over many connections at
once and resumes where it stopped — a 20 GB bundle interrupted at 90% picks
up at 90%, including after the process has exited. The 19.8 GB
Qwen3.5-35B-A3B Q4 bundle measured 17.6 MiB/s before and 54–84 MiB/s
after on the same link, roughly 19 minutes down to 5. A transfer that stalls
without closing is cut off and retried instead of hanging, and a short transfer
is caught rather than installed. Tool calling is fixed on two fronts as well: Muse Glimmer's
dialect is parsed rather than printed, and templates that use is undefined
(Qwen 3.8 among them) render instead of silently falling back.
Added
Xet transfers
- Xet is supported, behind
BASERT_HF_XET=1. Its advantage is deduplication across models: chunks shared with something already fetched never cross the wire. It cannot resume, though — an interrupted transfer starts over — so it is not whatbasert pullreaches for by default.
bash
basert pull basecompute/Qwen3.5-35B-A3B # resumable (default)
BASERT_HF_XET=1 basert pull basecompute/Qwen3.5-35B-A3B # dedup, no resume
Parallel, resumable downloads
-
Files are fetched over many connections at once, in fixed chunks, instead of through one stream.
-
An interrupted pull resumes where it stopped, per chunk: completion is recorded next to the partial file as each chunk lands and fsynced, so a crash, a
^C, or a link that drops overnight continues from what is on disk, across process restarts. Just re-run the samebasert pull. -
A stalled transfer fails instead of hanging. Connections that stop delivering bytes without closing are now cut off and retried, and a transfer shorter than the size the Hub advertised is reported as an error rather than installed as a truncated model that fails later at load time.
-
Tunable when the defaults do not suit a link:
| Variable | Default | Meaning |
|---|---|---|
BASERT_HF_CONNECTIONS |
24 | Concurrent range requests |
BASERT_HF_CHUNK_MB |
16 | Bytes per range request |
BASERT_HF_READ_TIMEOUT_SECS |
60 | Stall timeout for a single read |
BASERT_HF_MAX_RETRIES |
5 | Retries per chunk (0 disables) |
BASERT_HF_XET |
unset | Use Xet's CAS path for large files (dedup, no resume) |
Peak memory is connections × chunk — 384 MB at the defaults, since each
worker holds one chunk in flight. Lower either knob on a constrained
machine.
Fixed
- Muse Glimmer's tool calls are parsed, not printed. The model frames a call as a message addressed to the tool:
<|start|>assistant to=fn<|message|><atem:function_calls>
<atem:invoke name="fn">…</atem:invoke></atem:function_calls><|eot|>
which matched none of the dialects the parser knew (Gemma-native, ChatML
JSON, Qwen XML), so it fell through to content and the raw markup was
streamed to the user — the reported symptom was a reply that read
<atem:invoke name="bash">. The dialect is now recognized and emitted as a
proper tool call.
-
--kquant-passthroughembeddings on non-Glimmer models. Every model but Muse Glimmer handed k-quant embedding lookups the slab parameter struct, whose second field is the vocabulary size where the k-quant kernels expect the row width. Rows were read at the wrong stride, and the output was incoherent — Qwen3-0.6B was the reported case. -
developerandfunctionroles no longer break the native template. A model's chat template accepts the roles it was written for — Qwen 3.8's takessystem,user,assistant,tooland raises on anything else — and a raise drops the whole request into the generic ChatML fallback, quietly costing the model its think prefill and tool-call dialect.developer(which supersededsystemin the newer OpenAI API, and is what agent clients send) andfunction(the deprecated spelling oftool) are now resolved before rendering. When a template does reject a role, the warning names the roles the request carried instead of suggesting a re-convert that would not help. -
Chat templates using
is undefinedno longer fall back to ChatML. Qwen 3.8's template gates its reasoning-effort block onenable_thinking is undefined, a standard Jinja2 test the bundled template engine did not implement. Rendering threw on every request and the server quietly fell back to generic ChatML — which still looked right for ChatML-shaped models while silently dropping the reasoning-effort system block, the think prefill, and the model's entire tool-call dialect. Tool calling on affected models works again.
Changed
- Building
tools/base-convertnow requires Rust 1.85+ (was 1.80).