Skip to content

Releases: derekrparris/DynaMoE

DynaMoE 26.5

Choose a tag to compare

@derekrparris derekrparris released this 12 Oct 21:16
6c1f967

DynaMoE v26.5

High-Performance MoE Inference Engine for Apple Silicon


📦 What's New in 26.5

  • Conversation renaming: Rename any conversation inline from the sidebar or the active chat header. Titles you set are never overwritten by auto-generated ones, truncated auto-titles are marked with an ellipsis, and both survive /compact and relaunches.
  • Session token odometer: The chat header now tracks a live, cumulative token count for the whole conversation: prompt tokens plus everything the model generates (skipping pinned-prefix reuse), ticking during decoding, persisted with each chat, and reset by /compact. Conversations from before this feature pick the counter up automatically on their next full prompt.
  • Inline agent activity indicator: A pulsing "Working..." indicator now appears in the message stream while the model streams a tool call's arguments or the agent executes it, across all three supported tool-calling dialects, so long tool turns read as live work instead of a frozen transcript.
  • Chrome polish: A single centered app name in the window title bar replaces the duplicated sidebar branding, and the redundant header breadcrumb, sidebar toggle, and thumbs up/down feedback buttons are gone.

🐛 Fixes

  • Chat actions: Copy and speaker buttons no longer appear on thinking-only or tool-call-only turns; read-aloud is restricted to assistant replies and speaks only the visible text, never hidden tool markup.
  • Tool-stream rendering: Raw Qwen and Llama tool-call markup no longer leaks into the transcript mid-stream or reappears after a call parses, and tool-only turns keep their time-to-first-token, throughput, and token stats.
  • Title persistence: A conversation renamed before the startup history load finishes is no longer reverted to its previous title.
  • Token counting: Stopped, cancelled, and failed turns now commit their final token counts so the odometer never loses the tail; empty on-device responses no longer add a phantom token. Covered by new pure-logic unit tests.
  • Keyboard focus: No stray focus ring lights up a header button at launch, the rename button no longer steals focus on first open, and Full Keyboard Access users keep their focus indicators with no hidden tab stop.
  • Model guidance: The 16 GB settings profile now recommends native Ornith weights, agreeing with the README's preference for native weights over MLX quantizations.

🔗 View Release Tag · 📁 Repository

DynaMoE is an independent open-source inference engine. macOS, Metal, and Apple Silicon are trademarks of Apple Inc. Apache 2.0 licensed.

Full Changelog: v26.4...v26.5

DynaMoE 26.4

Choose a tag to compare

@derekrparris derekrparris released this 09 Oct 19:42
8699681

DynaMoE v26.4

High-Performance MoE Inference Engine for Apple Silicon


📦 What's New in 26.4

  • Apple Foundation Model support: Chat with Apple's on-device Foundation Model, with live activity indicator, smoothed streaming, and a per-turn history budget so the transcript honors its context window.
  • /compact conversation compaction: Manual /compact slash command (opencode-style) that folds the conversation into two AFM digests — a rolling general summary plus a detailed recap of recent work — injected into every later prompt on both backends. Transactional (a failed model leaves chat untouched), chunked for long histories, includes tool-call records. Auto-compact on context limits is deliberately deferred to a follow-up.
  • Settings glow-up: Reworked settings into a sidebar-driven layout matching macOS System Settings: sliders + editable numeric fields replacing steppers, shaded group backgrounds, three-per-row sampling controls with precise inputs, and an updated settings guide.
  • Composer polish: Chat composer default height reduced by a third; minimum fits one line with trimmed chrome.
  • Gemma 4 26B A4B support: DynaMoE now loads and runs google/gemma-4-26B-A4B-it end to end: architecture detection, the interleaved sliding/global attention layers (per-head q/k norms, proportional RoPE on global layers), the dense+MoE decoder block, and the <|channel>thought … <channel|> reasoning template. Verified element-for-element against the HF reference forward pass.

🐛 Fixes

  • RAM telemetry: "Process Heap" mislabeled RSIZE as the Activity Monitor/Xcode number (actuallyphys_footprint, overstated up to 5.2×), and Working Set RAM double-counted weight bytes (~12.9 GB shown was really ~5 GB), evicting experts early. Now shows genuine footprint + a new "Unified Memory Cache" line; budget decisions use RSIZE alone. Also removed the pread-into-read-only-mmap prefetch path that was a silent no-op (EFAULT).
  • FP8 slow at long context: FP8 KV-cache decode never got the FP16 path's flash-decoding split-K kernels — one thread per head over the whole context. Added FP8 chunked scan kernels for Spark and Ornith, and disabled JetSpec under FP8 (its verify kernels would corrupt a 1-byte-element cache with 4-byte writes). Added fused FP8 attention benchmark coverage.
  • Agent tool-call regressions: Fixed three tool-call regression causes from live runs, two Spark agent stalls (whitespace loop, missing turn reopen), KV splice relayout corruption on head-count padding / stride shrink, FP8 scale buffers going stale on spliced stride changes, Spark's end-of-text marker leaking into saved replies, and web_fetch now loading by default at session start.

🔗 View Release Tag · 📁 Repository

DynaMoE is an independent open-source inference engine. macOS, Metal, and Apple Silicon are trademarks of Apple Inc. Apache 2.0 licensed.

Full Changelog: v26.3...v26.4

DynaMoE 26.3

Choose a tag to compare

@derekrparris derekrparris released this 01 Oct 18:55
bfb7c58

DynaMoE v26.3

High-Performance MoE Inference Engine for Apple Silicon


📦 What's New in 26.3

  • Removed the ETA counter from UI
  • Multiple harness refinements
  • Sessions are now saved + new setting for auto-deleting old sessions

🐛 Fixes

  • Chat Formatting: Stop chat messages from truncating and overlapping when selected

⚙️ Under the Hood

Feature Detail
Engine dynamoe_core · Rust + Metal
Update size 19.4 MB
Requires macOS 15.6+ · Apple Silicon

🔗 View Release Tag · 📁 Repository

DynaMoE is an independent open-source inference engine. macOS, Metal, and Apple Silicon are trademarks of Apple Inc. Apache 2.0 licensed.

Full Changelog: v26.2...v26.3

DynaMoE 26.2

Choose a tag to compare

@derekrparris derekrparris released this 27 Sep 19:14
a9226f8

DynaMoE v26.2 Build 26.2

High-Performance MoE Inference Engine for Apple Silicon


📦 What's New in 26.2

  • Thinking Accordion Settings: Added a new default setting for the thinking accordion (open or collapsed).

🐛 Fixes

  • Tool calls: Numerous bug fixes around shell commands and tool calls.

⚙️ Under the Hood

Feature Detail
Engine dynamoe_core · Rust + Metal
Update size 19.2 MB
Requires macOS 15.6+ · Apple Silicon

🔗 View Release Tag · 📁 Repository

DynaMoE is an independent open-source inference engine. macOS, Metal, and Apple Silicon are trademarks of Apple Inc. Apache 2.0 licensed.

Full Changelog: v26.1...v26.2

DynaMoE 26.1

Choose a tag to compare

@derekrparris derekrparris released this 25 Sep 21:21
333f9fa

What's Changed

Full Changelog: v26.0...v26.1

DynaMoE 26.0

Choose a tag to compare

@derekrparris derekrparris released this 22 Sep 21:11

New release!

Big breakthrough in streaming speeds, the addition of auto-update, and many bug fixes and slight UI changes (more of those to come soon).

I also took the opportunity to adopt a new versioning system. Starting with the year (Apple style) but will not be strictly semantic based. Each version will just be a +.1

What's Changed

Full Changelog: DynaMoE_0.8.4...v26.0

DynaMoE 0.8.4

Choose a tag to compare

@derekrparris derekrparris released this 18 Sep 12:24

New release!

Things that changed:
Added support for XHToken/Spark-X2.5-4B
Some bug fixes in dynamoe_core and the harness while I was at it.

Full Changelog: DynaMoE_0.8.3...DynaMoE_0.8.4

DynaMoE 0.8.3

Choose a tag to compare

@derekrparris derekrparris released this 17 Sep 12:12

New release - DynaMoE 0.8.3!

This release fixes some pretty serious bugs related to tool calls associated with reading practically every type of file other than plain text, including web searching. The fix was rather elusive, but now models can complete meaningful web research and read various files that handle formatting dramatically differently with no signs of confusion or hallucinations that previously plagued workflows.

Full Changelog: DynaMoE_0.8.2...DynaMoE_0.8.3

DynaMoE 0.8.2

DynaMoE 0.8.2 Pre-release
Pre-release

Choose a tag to compare

@derekrparris derekrparris released this 14 Sep 21:46

I'm happy to announce the first usable beta release (the last one had more issues than I would like to admit!)

Quick start steps for jumping right in after dragging and dropping the app from the disk image into your applications folder:
First, install the hugging face cli tool if you don't already have it.
Easiest way is via homebrew if you use it.
in the terminal:

brew install hf

also, I would recommend generating a hf API key to authenticate with. It generally speeds up model downloads. More info can be found here: https://huggingface.co/docs/huggingface_hub/guides/cli#getting-started

Play around with the models that have been tested, which are Ornith 1.5 35B A3B FP8 and Ling 3.0 Tiny

in the terminal:

hf download ornith-ai/Ornith-1.5-35B-A3B-FP8

hf download inclusionAI/Ling-3.0-tiny

when you load DynaMoE, it will read your hugging face cache automatically and show the models you have in your hugging face cache.

For fastest results on Macs with 16 Gigs of Ram or lower:
use the flash MoE repacking option in the models section in settings for both models. This repacks the safetensors into files of equal size, which streamlines the SSD streaming process.

Also, for Macs with not much RAM, I recommend running at FP16 or even FP8 quantizations to speed them up. Initial testing hasn't shown degradation at FP8 for Ornith. NOTE: Ling 3.0 does not support FP8 quantization, so if that is selected in the settings, DynaMoE will fall back to running it at FP16.

Please share any results you get to help me improve!

No individual changelogs will be provided until I decide we've reached beyond version 1.