Muse-Glimmer, on both engines
Neither engine knew this architecture. llama.cpp had no
muse-glimmer at all and refused every GGUF outright; MLX answered
unsupportedModelType. Both now run it — chat, code, vision, and
its four native reasoning rungs — and they agree on what they
produce.
Two of the departures are invisible in the checkpoint, which is
what made an implementation built from shapes alone produce noise.
The attention scale is qk_scale_factor / head_dim, the folded form
of scaling the QK-normalised queries and then letting attention
scale again; the same key names a different quantity in the two
configurations this model ships under, and reading one convention's
constant through the other's formula leaves the attention 11 times
too sharp. The token embeddings also pass through a
parameter-free RMS norm — parameter-free, so it leaves no weight
behind to notice is missing. Both weight layouts load: a packaged
MLX artifact fuses the attention gate into the queries and has its
norms folded, while a multimodal export keeps them apart and names
the four norms positionally, so the renames must not cascade.
It reads images. A 50-layer vision tower attends inside
32×32-patch windows except on every fourth layer, and a learned
position table is resampled to whatever grid the image actually
has. Each image expands to <|image_start|>, one token per merged
patch, then <|image_end|> — the markers are not decoration:
without them two images share one unbroken run of placeholders and
the cache cannot tell where the first one ends. With them, a
follow-up question after two pictures reuses 68% of the window,
the same as the other engine.
Its reasoning arrives as reasoning. ATEM addresses each span to a
recipient rather than tagging it, so a whole turn's deliberation
used to be shown as the answer. It now travels in a field of its
own, which is where the model's own template looks for it.
A model's own thinking ladder is drawn as it is
Chat listed 高 twice on a four-rung model, because anything that was
not low or medium took the same label — high and xhigh now have
names of their own. Code had the ladder written into the component:
four fixed tabs mapped to three rungs, so a four-rung model lost one
outright. The tabs now come from the model, however many rungs it
has. Off stays Chaty's, because a ladder has no rung for not
thinking at all.
Under it
llama.cpp moved forward to a build that carries the architecture,
and every local GGUF was re-checked on it: ten models, unchanged
answers, prefix reuse from 75% to 93%. A model it refuses now says
why — whether the file is not a GGUF at all, or the build does not
know its architecture, or the converter wrote the model's name where
the architecture belongs. It also says why an embedded chat template
was rejected instead of silently falling back to ChatML, which is
what let a model speak the wrong protocol while looking like it
worked.
The renderer no longer reports a restart that did not happen: a page
replaced within the first seconds of a window's life is the window
opening, not a crash. And the interface is now available in
Brazilian Portuguese, placeholders included — thanks to the
community contributors on those PRs.
Install
| Platform | File |
|---|---|
| Windows x64 | Chaty_*_x64-setup.exe — per-user installer, no admin
|
| macOS (Apple Silicon) | Chaty_*_aarch64.dmg
|
| Linux x64 (beta) | Chaty_*_amd64.AppImage — chmod +x and run. First Linux release — please report anything odd
|
⚠️ macOS first launch — "Apple could not verify…" / "damaged"
Chaty is ad-hoc signed but not notarized (no paid Apple Developer
account), so Gatekeeper flags it on first launch. The app is safe —
everything runs locally. Clear the download quarantine once, in Terminal:
xattr -dr com.apple.quarantine /Applications/Chaty.appThen open Chaty normally. (Alternatively: try to open it once, then go to
System Settings → Privacy & Security → Open Anyway.)
What's Changed
- i18n(pt-BR): complete UI localization (100% coverage) by @magisph in #10
- i18n(pt-br): translate remaining placeholder strings by @magisph in #11
Full Changelog: v2.1.4...v2.1.5