Skip to content

Repository files navigation

Whallm

Whallm App Icon

English 繁體中文 简体中文 日本語 한국어

Note

Whallm was previously named DeepSeekV4SSD. Releases published before the rename, including version 1.0.4, use the old app and archive names.

Inspired by Turbo Fieldfare, Whallm lets an M-series Mac run all 284B parameters of the pinned DeepSeek-V4-Flash-0731 checkpoint by streaming routed experts from SSD. It also supports the pinned Qwen3.8-Flash-Next-FP8 text checkpoint.

Memory guidance

Model Recorded peak memory
DeepSeek-V4-Flash-0731 32.84–35.70 GiB
Qwen3.8-Flash-Next-FP8 20.92–22.75 GiB

These v1.1.4 results cover chat prompts with 1,024 to 16,384 input tokens. They are measurements, not minimum memory requirements or performance guarantees. Prompt length, tools, cache state, and runtime settings can change peak memory. See the benchmark and validation record for the measured workloads.

Benchmark

These v1.1.4 results were measured on a MacBook Pro with an Apple M5 Pro, 64 GB of unified memory, and 1 TB of storage. The benchmark used mixed SPEED-Bench prompts, three runs per input size, and a 64-token output limit. With three runs, nearest-rank P95 equals the maximum. TTFT means time to first token.

DeepSeek V4 Flash 0731

Input tokens P95 total time P95 TTFT P95 prefill P95 decode Peak memory
1,024 27.10 s 17.75 s 59.9 tok/s 7.8 tok/s 32.84 GiB
2,048 27.35 s 17.60 s 117.3 tok/s 7.3 tok/s 33.26 GiB
8,192 50.12 s 40.47 s 206.3 tok/s 7.4 tok/s 34.50 GiB
16,384 88.27 s 78.61 s 209.0 tok/s 7.2 tok/s 35.70 GiB

Qwen3.8 Next Flash FP8

Input tokens P95 total time P95 TTFT P95 prefill P95 decode Peak memory
1,024 22.60 s 15.65 s 69.2 tok/s 10.4 tok/s 20.92 GiB
2,048 31.42 s 24.90 s 87.5 tok/s 9.8 tok/s 21.26 GiB
8,192 84.88 s 77.74 s 111.9 tok/s 10.4 tok/s 21.90 GiB
16,384 157.89 s 150.33 s 113.3 tok/s 9.7 tok/s 22.75 GiB

Performance changes with the prompt, SSD speed, and cache state. See the full benchmark and validation record for more details.

How to use it

Download the app → Open the app → Select and download a model → Start the server → Chat in the app or connect Codex

Important

Version 1.0.3 cannot install version 1.0.4 through automatic update because the previous Sparkle signing key is no longer available. Quit the app, download DeepSeekV4SSD-macOS-arm64.zip from the 1.0.4 release, and replace the existing app manually. Automatic updates work again after you install version 1.0.4.

  1. Download the latest Whallm-macOS-arm64.zip from GitHub Releases.
  2. Extract the ZIP and open Whallm.app.
  3. Open the Model page. Select DeepSeek or Qwen, and then select Download Model. The app checks the required storage. Qwen downloads the published MXFP4 installed model. You can stop the download and resume it later.
  4. Open the Server page and select Start Server. The server can start with no installed model, but generation needs an installed model.
  5. Open the chat and select a model. You can also connect Codex with the configuration below.

The local server starts at http://127.0.0.1:11434 by default.

Whallm app

Requirements

Item Requirement
Mac Apple Silicon M-series Mac
macOS macOS 15 or later
Unified memory 64 GiB or more
Free storage The app checks the selected model and existing partial data
Model storage A fast internal, Thunderbolt, or USB4 SSD
Internet Required to download the model and app updates

Important

Whallm is experimental. Model weights are not included with the app. Keep the default local server address unless another device must connect.

Codex config.toml

Start the server in Whallm. Then add this configuration to ~/.codex/config.toml:

model = "deepseek-v4-flash-0731"
model_provider = "deepseek-v4-ssd"
model_reasoning_effort = "high"

[model_providers.deepseek-v4-ssd]
name = "Whallm"
base_url = "http://127.0.0.1:11434/v1"
wire_api = "responses"
requires_openai_auth = false

Restart Codex after you save the file. The local address does not need an API key. The provider settings must be in the user-level config file. See the official Codex configuration reference for more options.

Other technical details

How it works

  • The main model has 284B total parameters and about 13B active parameters per token.
  • Common tensors stay in unified memory.
  • Routed experts use checkpoint-native FP4 weights and stream from SSD when needed.
  • The runtime uses an FP8 KV cache and a bounded expert cache to control memory use.
  • The installed model is verified against the pinned checkpoint revision.
  • Server startup reads the installed model list but does not load model weights. The first generation request loads its selected model.
  • The server keeps one model loaded. A request for another model closes the old runtime before it loads the new runtime.
  • The Model page can load or unload a model. A loaded model moves to the Loaded section.
  • The DeepSeek layer-major prefill threshold is configurable. Its default is 1,024 uncached prompt tokens.

Model storage and DSpark

  • The main model uses about 145 GiB.
  • DSpark adds about 10.12 GiB. Every new DeepSeek download includes it.
  • Installing DSpark does not enable it. Enable Use DSpark in the runtime settings when you want to test speculative decoding.
  • You can remove DSpark without reinstalling the main model.
  • Qwen installed weight files use 125,268,506,112 bytes. Qwen does not support DSpark.
  • Qwen downloads a verified MXFP4 installed model. Model installation does not quantize the Qwen checkpoint on the user's Mac.

OpenAI-compatible server

The server supports these endpoints:

  • GET /healthz
  • GET /v1/models
  • POST /v1/responses
  • POST /v1/chat/completions
  • POST /v1/completions
  • POST /api/models/load
  • POST /api/models/unload

The fixed API model IDs are deepseek-v4-flash-0731 and qwen3.8-flash-next-fp8. Each model's Advanced Settings view lets you set an optional Alias. Valid changes are saved automatically. Generation requests accept the API model ID or its Alias. The chat model picker shows only the installed models that were available when the server started. Restart the server after a download finishes while it is running.

The Responses API supports Codex tools and OpenAI function tools. The client must run each tool and send the result back to the server. Read the API guide for fields, examples, and current limits.

Metrics and privacy

The app shows prefill speed, decode speed, token counts, memory use, SSD read speed, cache hit rate, first-token wait time, and completion time. The app clears metric history when the loaded model changes.

Inference runs on your Mac. Prompts and generated text stay in the local runtime unless the connected client sends them elsewhere. The app uses the network to download the model, check for updates, and accept configured API requests.

Current limits

  • The runtime supports only the two pinned checkpoint revisions in the current documentation.
  • Qwen supports text only. Qwen vision, video, MTP, and DSpark are not supported.
  • Qwen full-model SHA-256, text, thinking, tool call, greedy 4K, prompt cache, and packaged App validation passed on the recorded M5 Pro environment. See the Qwen support status.
  • The server keeps one model loaded and processes one generation request at a time. Other generation requests wait until the full request stream ends.
  • Images, audio, logprobs, response_format, and stop are not supported.
  • Request bodies are limited to 1 MiB.
  • Very long input and output need more KV cache memory.
  • Performance depends on SSD speed, input length, and cache state.

Read the current documentation for the model contract, runtime design, validation, performance, and research conclusions.

Whallm is not affiliated with DeepSeek. Review the model terms before you download and use the model.

License

The Whallm source code is available under the MIT License. Model weights are not included and remain subject to their own terms.

About

DeepSeek-V4-Flash-0731 284B inference in ~30 GB of RAM / Qwen3.8-Next-Flash-FP8 inference in ~20 GB of RAM on any M-series MacBook

Topics

Resources

Stars

72 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages