This release does five things:
- New AMD GPU backend (preview). On Windows, the new
oga-hipepbackend runs 13 models on the Radeon GPU, from Gemma 3 4B up to GPT-OSS 120B and Qwen3.8-Flash-Next 125B. - New NPU models.
hy-memory:30b-a3b, a MoE model built to drive memory frameworks, andminicpm-ocr:1.0, a 1B OCR model. - Faster models. MiniCPM-V 4.7 1B prefills about 2ร faster. Gemma 4 E4B prefills up to 2ร faster on long prompts. MoE models prefill up to 2ร faster on HRX. Hy-MT2, Nemotron 3.5 Bolt, Qwen3.6 MoE and Gemma 3 1B are faster too.
- A safer, stricter server. Browser requests from other machines are refused by default. Bad requests get a clear 400 instead of a crash, a 500, or a silent wrong answer.
- Many fixes. Request settings no longer leak between requests, vision models no longer answer about the wrong image, and 15 models get a decoding-layer rounding fix.
โ ๏ธ Some of these changes can affect existing setups. See Before You Upgrade.
โ ๏ธ Before You Upgrade
- Web UIs on another machine need
--cors-origins. The server now only answers browser requests from local origins. A web UI served from another machine (for example Open WebUI athttp://nas:3000) gets HTTP 403 until you start the server with its origin:flm serve qwen3:8b --cors-origins "http://nas:3000" flm serve qwen3:8b --cors-origins "*" # old behaviour: allow every origin
- Clients that send no
Originheader are not affected. This includes curl, the OpenAI SDKs and a web UI's backend. - Pages opened from a local file need
--cors-origins "null". - Tunnels and reverse proxies that keep their own
Hostheader need their origin listed too. - Clients pointed at
http://0.0.0.0:52625keep working.
- Clients that send no
qwen3.5-flash:2bis removed. Useqwen3.5:2binstead. It uses the same weights, so there is nothing new to download.- Request settings no longer stick. Every request now starts from the model's defaults. If you relied on an earlier request's
think,temperatureor similar, send it with each request. - Two models must be downloaded again. Older copies show as outdated and are pulled again.
minicpm-v-4.7:1b: its vision weights (about 1.1 GB) were re-converted.hy-mt2-flash:1.8b: it moved to new Q4_K weights (about 1.8 GB). The new engine can't read the old ones.
/v1/embeddingsnow uses themodelyou send. Before, the field was ignored. An unknown tag, or a tag that isn't an embedding model, gets 400.qwen3.8-mtp:27bonly speculates on greedy requests. Its default requests now decode at normal speed. Sendtemperature: 0(ortop_k: 1) to keep speculative speed.- Stricter HTTP errors. Some requests that used to return 200 now return an error:
- Unusable images (GIF,
http(s)URLs, images in system messages, corrupt files) get 400. - Failed prefill on
/v1endpoints now returns an error instead of a 200: a prompt longer than the context gets 400, and other prefill failures get 500. - Connections over the
--socketlimit get 503 instead of a connection reset.
- Unusable images (GIF,
top_k: 0or-1now turns top-k off. Before, it was ignored and the model's default top-k stayed on.- Seeded sampling now gives the same result on Windows and Linux. On Linux, a request with a fixed
seedmay give different text than in v1.0.12. - Hy-MT2 replies without
max_tokensare capped. Ahy-mt2-flash:1.8breply now stops at about twice the prompt length plus 64 tokens (finish_reason: "length"). Sendmax_tokensfor longer replies.
๐ New Models
๐ฎ AMD GPU Backend: oga-hipep (Preview, Windows)
FastFlowLM can now run models on the AMD GPU, not just the NPU. The new oga-hipep backend uses ONNX Runtime GenAI with AMD's hip-ep runtime. It is part of the standard Windows ZIP and MSI.
๐งช Preview. The
oga-hipepbackend is an early release. Model tags, options and behaviour may change in later releases, and it has the known limitations listed below. Please report problems on GitHub.
- Pull, run and serve these models like any other tag. Tags ending in
-oga-hipeppick the GPU backend automatically. - The first
flm runorflm serveof a GPU model downloads the hip-ep runtime (about 137 MiB) into your user profile. - The REST/SSE server, logprobs and streaming work as on the NPU. Tool calling works on the Qwen3.5/3.6/3.8 and Gemma 4 GPU models, and reasoning on the Qwen3.x, Gemma 4 and GPT-OSS ones.
- In multi-turn chats, the GPU models skip the part of the conversation they have already processed instead of starting over (Qwen3.x and GPT-OSS always; Gemma and Qwen2.5 when the previous reply comes back unchanged).
- Ctrl+C and
/byeend flm and free GPU memory. qwen3.5-oga-hipep:9bon a Ryzen AI MAX+ 395 decodes at about 36 tok/s and prefills at about 1,150 tok/s.
| Tag | Input | Download |
|---|---|---|
gemma3-oga-hipep:4b
| Text | 4.4 GB |
qwen3.5-oga-hipep:9b
| Text + image | 7.5 GB |
qwen2.5-it-oga-hipep:14b
| Text | 8.8 GB |
qwen2.5-coder-it-oga-hipep:14b
| Text | 8.8 GB |
gemma4-it-oga-hipep:12b
| Text | 9.4 GB |
gemma4-it-oga-hipep:26b-a4b
| Text | 16.6 GB |
qwen3.8-oga-hipep:27b
| Text + image | 16.9 GB |
qwen3.6-oga-hipep:27b
| Text + image | 18.0 GB |
qwen3.5-oga-hipep:35b-a3b
| Text + image | 22.1 GB |
qwen3.6-oga-hipep:35b-a3b
| Text + image | 22.1 GB |
gpt-oss-oga-hipep:120b
| Text | 69.3 GB |
qwen3.5-oga-hipep:122b-a10b
| Text + image | 71.8 GB |
qwen3.8-flash-next-oga-hipep:125b-a6b
| Text + image | 124.0 GB |
All have a 32k default context.
flm run qwen3.5-oga-hipep:9b
flm serve qwen3.5-oga-hipep:9b- Qwen3.8-Flash-Next has 125B parameters with 6B active. It decodes at about 34.5 tok/s, and needs about 78 GiB of GPU memory.
- Images share a budget of about one 1440ร1440 picture per prompt. Several images are scaled down to fit.
flm uninstall hipepremoves the runtime that flm installed. It keeps your models and any runtime you installed yourself. Stop runningflmprocesses first.HIPEP_PKG_ROOTpoints flm at a hip-ep package you installed yourself. When set, it is the only place flm looks.
โ ๏ธ Limitations:
- Windows only. Not available on Linux or HRX builds.
- The machine must still have an NPU. GPU-only machines are not supported yet.
- Gemma and GPT-OSS GPU models are text only. Gemma requests with images or audio get HTTP 400.
- A new or changed image, or a Gemma 4 follow-up with thinking on, re-processes the whole conversation.
- On
gemma4-it-oga-hipep:12b, a tool-call round trip (a reply after a tool result) can fail.
๐ CLI: backends
๐ง Hy-Memory 30B-A3B: hy-memory:30b-a3b
tencent/Hy-Memory-30B-A3B is a MoE model with about 3B active parameters. It is built to be the language model behind memory frameworks such as Mem0, MemOS and Hy-Memory.
- Takes one extract or reconcile prompt and answers in JSON.
- Text only. No thinking, no tool calling.
- Greedy decoding by default.
- The prefix cache reuses the shared part of repeated requests.
- Download: about 17.9 GB. 32 GB of system RAM or more is recommended.
- Speed on Strix Halo: decode 19.3 tok/s at 1k and 14.5 tok/s at 8k.
โ ๏ธ Prefill runs at about 200 tok/s, so a 16k prompt takes over a minute to the first token. Keep prompts short, or reuse a shared system prompt through the prefix cache.
flm run hy-memory:30b-a3b๐ Hy-Memory ยท Hy-Memory benchmarks
๐ MiniCPM-OCR 1.0: minicpm-ocr:1.0
A 1B OCR model that reads text from images. It pairs the MiniCPM-V 4.7 text model with a SigLIP vision encoder.
- Takes images and text.
- Supports tool calling and the prefix cache. No thinking.
- Context: 32k by default.
- Download: about 2.0 GB.
- Speed on Strix Halo: decode 65 tok/s at 1k and 47 tok/s at 24k.
flm run minicpm-ocr:1.0โจ Improvements
๐ Faster Models
MiniCPM-V 4.7 1B (minicpm-v-4.7:1b)
- Prefill is about 2ร faster on XRT and 1.6โ1.8ร faster on HRX.
- XRT at 1k: 1,545 โ 3,337 tok/s.
- Decode is 18โ44% faster.
- XRT at 1k: 50.7 โ 72.4 tok/s.
- The vision encoder is about 2ร faster on requests with many images or video frames.
- 120 frames: 14.3 s โ 7.6 s.
- On Windows, prefill is now close to Linux speed.
- Text, 3,359 tokens: 1,124 โ 666 ms.
- 32 images: 860 โ 483 ms.
- โ ๏ธ Needs a re-download (see above).
Gemma 4 and Nemotron 3.5 Bolt
gemma4-it:e4bprefill is much faster on long prompts. Decode is about 9% faster.- Prefill: 527 tok/s at 1k (was 419), 1,243 tok/s at 16k (was 573).
- Time to first token on a 4k prompt: 6.2 s โ 2.6 s.
- Image: 1.9 s โ 0.9 s to the first token. A 30-second audio clip: 2.7 s โ 1.1 s.
nemotron3.5-bolt:e4bandnemotron3.5-bolt-dflash:e4bprefill faster too (about 30โ40% for Bolt). Decode is unchanged.- Bolt time to first token: 1.45 โ 0.83 s at 1k, 3.57 โ 2.51 s at 4k.
- Images start about 20% sooner, audio 15โ40% sooner.
nemotron3.5-bolt-dflash-flash:e4bstarts images and audio sooner. Its prefill is unchanged.gemma4-it:e2bis faster from 2k tokens up.- No re-download needed.
MoE models on HRX
gpt-oss:20bandqwen3.6-moe:35b-a3bprefill much faster on the HRX runtime. They now match or beat XRT.gpt-oss:20b: 80.8 โ 126.2 tok/s at 1k.qwen3.6-moe:35b-a3b: 25.9 โ 52.5 tok/s at 1k.
qwen3.6-moe:35b-a3balso prefills faster on both runtimes: up to 22% on XRT and up to 18% on HRX.
Hy-MT2 (hy-mt2-flash:1.8b)
- New engine and new Q4_K weights. At 1k on XRT, prefill is about 1.5ร faster and decode about 6% slower than in v1.0.12.
- Prefill: 1,117 โ 1,686 tok/s.
- Decode: 52.9 โ 49.8 tok/s. The new weights have a larger output layer.
- Inputs longer than 1k tokens are no longer cut off, and translations no longer stop early on inputs of a few thousand tokens.
- Past about 4kโ6k prompt tokens the model itself starts to drop text, so translate long documents in pieces of 3kโ4k tokens.
- Default context is now 32k (was 1k).
- On Windows, prompts of 512 tokens or fewer start about 20ร sooner.
- โ ๏ธ Needs a re-download (about 1.8 GB).
More
gemma3:1bdecodes 4โ8% faster.qwen3.8-mtp:27bdecodes about 2ร faster without speculation. Withresponse_formator tools andtemperature: 0, it now keeps speculation on: a JSON reply takes 11.8 s instead of 28.9 s.qwen3.8-mtp:27bandqwen3.8-dflash2:27btake contexts up to 16,377 tokens (was 8k). Any--ctx-lenfrom 8193 to 16384 used to fail to load. 16k uses about 0.5 GB more memory than 8k.- Sampling is faster when top-k is off (
top_k: 0or-1): about 2.5 ms per token instead of 14 ms on a 152k vocabulary, and less withmin_p. The same seed gives the same tokens as before.
๐ ๏ธ Server and CLI
- Raw RGB8 frames for
minicpm-v-4.7:1b. Video pipelines can send decoded frames directly as animage_rawpart on/v1/chat/completions. There's no image encoding on the client.- New
flm serveoptions:--max-raw-frames,--max-raw-mb,--allow-raw-path DIR. --allow-raw-pathreads only regular local files inside DIR. Network and device paths are refused.- About 73 tokens per frame.
- New
flm benchdownloads missing models first, likeflm runandflm serve.- Model extensions. The new
--model-extension <extension.json>option loads externally built model extensions. They can add new model families, including embedding models, without rebuilding FastFlowLM. This is aimed at developers. - Embeddings:
/v1/embeddingsloads and downloads the requested embedding model on demand, even without-e.embed-gemma:300mtakes the optionaltaskanddimensionsrequest fields.taskpicks the prompt prefix (query,document,clustering,classification, โฆ).flm runandflm benchrefuse embedding tags and tell you to use the server.
- WebP images sent as
data:image/webp, and upper-case types such asdata:image/PNG, now work. - Shorter server logs. Long strings in logged requests (images, frames, audio) and JSON parse errors are cut short.
- Building on Windows. A new
WinSetup.ps1script sets up the tools and buildsflm.exein one step.
๐ Raw RGB8 frames ยท Request parameters ยท Build on Windows
๐ Bug Fixes
Server
- Bad requests no longer take the server down.
- A request body with invalid UTF-8 used to kill a server thread. After 10 of them the server stopped answering everything. It now gets a 400.
- Malformed JSON gets 400 instead of 500.
- A missing required field on
/api/show,/api/generate,/api/chator/api/embeddingscould crash the server on Windows. It now gets a 400.
- Unusable images are refused, not silently dropped. Before, the request returned 200 and the model answered about an image it never saw. Now the 400 names the bad part.
- Connections over the
--socketlimit get 503 withRetry-After: 1instead of a connection reset. - Prefill failures on
/v1return a real error. Before, streaming clients saw an empty reply. A prompt longer than the context now gets a clear message. --cors 0now really sends no CORS headers. Before, it still sentAccess-Control-Allow-Origin: *./v1/models/and/v1/models?x=1now work. 404 replies are JSON.
Request settings
- Settings no longer leak between requests. Before,
think,temperature,top_p,top_k,min_p, the penalties,reasoning_effort(GPT-OSS, Hy-Memory) and Gemma 4'sconversational_modestayed applied for later requests from any client. For example, after one request with"think": true, later requests kept thinking. top_k: 0or-1turns top-k off. Before, it was ignored.- A tiny
temperature(below 1e-6) is treated as greedy. A value such as1e-38used to produce a wrong token. ignore_eosworks with tools andresponse_format. The reply now runs tomax_tokens.
Models
- Vision models no longer answer about the wrong image.
- Asking about a second image of the same size could give an empty reply, a refusal, or a wrong answer.
- Resending a conversation with a different picture in place of an earlier one gave an answer about the old picture.
- Cached images and audio are now matched by their content. This affects the CLI and the server.
- Decoding-layer rounding fix for 15 models. Since v1.0.10, generated text could drift slightly from the reference result, usually a few hundred tokens into a reply. No re-download needed. Affected tags:
llama3.1:8b,llama3.2:1b,llama3.2:3bqwen3:0.6b,qwen3:1.7b,qwen3:4b,qwen3:8b,qwen3-it:4b,qwen3-tk:4b,qwen3vl-it:4b,qwen3vl-flash:4bphi4-mini-it:4b,nanbeige4.1:3b,hy-mt2-flash:1.8b,deepseek-r1:8b,deepseek-r1-0528:8b
lfm3:1.7bno longer leaks tool-call tags such as</tool_call>intocontent. Tool calls with no arguments, and string arguments that contain XML, now work too.- Gemma 4 tools with nullable parameters work. A parameter typed
["string", "null"], common in MCP tools, made every request fail with a 400. - Gemma 4 puts audio after the text, as the model card recommends.
- Hy-MT2 no longer loops on junk input. Repeated characters or base64 used to run until the context was full. The reply now stops on repetition, or at about twice the prompt length plus 64 tokens when the request sets no
max_tokens. Both stops reportfinish_reason: "length". - MiniCPM-V requests with too many pictures (over about 17,300 picture tokens) get a 400 instead of a 500.
CLI
- Linux
flm runaccepts non-ASCII input. Cyrillic and other non-ASCII characters were dropped.
๐ Community Contributions
Thank you to our contributors:
- @NVolcz made request settings reset on every request (#978), fixed Gemma 4 nullable tool parameters (#977), and moved Gemma 4 audio after the text (#979).
And to everyone who reported the issues fixed in this release:
- @tranrn reported the Linux CLI dropping Cyrillic input (#964).
- @mitar reported
qwen3.8-mtpturning speculation off forresponse_formatand tools, and failing to load with contexts above 8k (#1016, #1001).
๐ Summary
| Highlight | |
|---|---|
| ๐ฎ | New AMD GPU backend on Windows (preview): 13 -oga-hipep models, up to 125B
|
| ๐ง | New model: hy-memory:30b-a3b (MoE for memory frameworks)
|
| ๐ | New model: minicpm-ocr:1.0 (1B OCR)
|
| ๐ | ~2ร faster prefill on MiniCPM-V 4.7 1B, Gemma 4 E4B and HRX MoE; faster Hy-MT2, Bolt, Qwen3.6 MoE, Gemma 3 1B |
| ๐ | Local-only browser access by default (--cors-origins), clear 400/503 errors, no server crashes on bad input
|
| ๐ | No settings leaking between requests, no wrong-image answers, rounding fix for 15 models |
| โ ๏ธ | qwen3.5-flash:2b removed (use qwen3.5:2b); minicpm-v-4.7:1b and hy-mt2-flash:1.8b need a re-download
|
Thanks for your support โ see you in the next one! ๐