Skip to content

Latest commit

 

History

389 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crow: the wordmark and composer over the window answering about its own release

CROW

Qwen3.8-Flash-Next at 200k context on one 32 GiB GPU.

An agent, not a chat box: 22 tools plus MCP servers, persistent memory, its own skills, a browser panel, and eyes.
Runs on this machine, or on a provider you choose.

License Version Platform Python Model Second model Vision Browser llama.cpp Memory

MoE
512 experts, 10 active
200k
context, one slot
73.45 GiB
model on disk
30,984 MiB
VRAM in use
41.76
tok/s decode
727.65
tok/s prefill
yes
vision

Decode and prefill: 2026-09-01 (#182), driver 616.56, pin 6c84c7d5d, one 33,494-token cold turn per boot, three rounds interleaved against the previous placement (539.98 / 35.74). Decode range 40.34–42.76. The two engine patches that followed, PR #28040 and PR #27880, were each measured at parity against this line. VRAM: settled after load, 2026-09-01.


Contents

Operating point what this build runs at
Second operating point Qwen3.8-27B, still shipped
Requirements card, disk, Windows
Install one line
Start server, then a client
Documentation everything else

Operating point

Default since 2.0.0. DEFAULT_BASE_URL is http://127.0.0.1:8083/v1.

Model Qwen3.8-Flash-Next-UD-Q2_K_XL, 3 shards, 73.45 GiB
Architecture qwen4exp MoE: 48 layers, 512 experts per layer, 10 active, full attention every 4th
Quant UD-Q2_K_XL, Unsloth
Context -c 200000, one slot (-np 1)
Placement -ncmoe 30 --fit off --load-mode none, -b 2048 -ub 2048
KV q8_0 / q8_0
Vision --mmproj mmproj-F16.gguf, 904,004,000 B (#170)
Reasoning low medium high; max, minimal and an explicit off return HTTP 500 (#160)
Thinking cap reasoning_budget 1024 per request, from the manifest (#176)
GPU RTX 5090, 32,607 MiB. 30,984 MiB in use, 1,059 MiB left
Decode 41.76 tok/s (40.34–42.76)
Prefill 727.65 tok/s
Build llama.cpp pin 6c84c7d5d (PR #27742) + PR #28040 + PR #27880, local. 62 graph splits per decoded token
License qwen-community-1.0 — not Apache-2.0
Source of truth manifests/operating-point.json

Conditions: 2026-09-01, driver 616.56, one 33,494-token cold turn per boot, 200 tokens out, three rounds interleaved against the previous placement -ncmoe 40 -ub 4096 (539.98 / 35.74); wall clock per turn 67.9 s → 51.3 s. Accepted live at 41.8 tok/s. Decode falls with context depth: ms/token = 24.06 + 0.0706 per 1,000 tokens (r² 0.93), i.e. ~41 tok/s at 30k and ~28 at 175k. Not measured: decode at a full 200k window, and whether an image prefill fits in the 1,059 MiB left on the card.

The engine is a local build. The packaged b10269 cannot load qwen4exp at all. The pin carries two patches, both measured at parity or better on this line: PR #28040 (the PLE n-gram lookup in O(log n) instead of a scan over every used KV cell) and PR #27880 (the PLE embedding hoisted into the token embedding's graph split: 62 splits per decoded token instead of 64, −0.99 ms on the fixed term in the one clean pair, inside the 1.35 ms spread of one arm).

The engine has nothing more to give, and that is measured (#159, #186). 67.1 % of CPU cycles per token are synchronization at the 62 CPU↔GPU handoffs; the RAM bus runs at 33.5 %. Every lever inside llama.cpp is dead by a direct measurement: bandwidth, expert cache, thread count, OMP_WAIT_POLICY, -ncmoe below 30, and the barrier implementation itself (GGML_OPENMP=OFF costs +4 to +6 ms per token).


Second operating point

Qwen3.8-27B is still shipped, still measured, and still bootable from the model menu — it is the faster one per token and the smaller download.

Model Qwen3.8-27B-UD-Q4_K_XL.gguf, 17,559,178,144 B
Architecture dense, no expert_count; hybrid attention + SSM, full_attention_interval 4
Quant UD-Q4_K_XL, Unsloth, imatrix 1,251 chunks
Context -c 200000, one slot (-np 1)
KV q8_0 / q8_0, 6,647.00 MiB measured against 6,645.8 predicted
Vision --mmproj mmproj-F16.gguf, 927,607,488 B; +1,124 MiB VRAM, text prefill unchanged
Speculation --spec-type draft-mtp, head ships in the GGUF
GPU RTX 5090, 32,607 MiB. 26,140 MiB in use
Decode 123.05 tok/s (11-round turn) · 133.18 (warm turn)
Prefill 2,262.96 tok/s
Port 8082
Build llama.cpp server 1c3c967 — the packaged engine runs it
License Apache-2.0

Requirements

GPU NVIDIA. 32 GB for this operating point. 16 GB is the installer's floor, unmeasured
System RAM 32 GB for the 27B. 64 GB for Flash-Next -- -ncmoe 30 keeps the experts of 30 of 48 layers in system RAM
Disk ~2 GB for Crow, 73.45 GiB for the model (3 shards) plus 0.9 GiB for the projector. The 27B is 16.35 GiB plus 0.9
OS Windows x64
Python 3.8+. Terminal client uses the standard library only
WebView2 Window only. Ships with Windows 11 and with Edge
pywebview Window only, ~2 MB. Installed by install.ps1
Node Only for MCP servers started with npx or node. Reported by the preflight, never required. NOT installed by install.ps1

Install

irm https://raw.githubusercontent.com/nibor1896/Crow/main/install.ps1 | iex

Preflight, download, extract, per-file sha256 against the release manifest, then the start lines with paths resolved. No elevation. Everything under %LOCALAPPDATA%\Crow.

Model, separately. Flash-Next, the default:

hf download unsloth/Qwen3.8-Flash-Next-GGUF --include "*UD-Q2_K_XL*" --local-dir $env:LOCALAPPDATA\Crow\models\qwen-next-gguf
hf download unsloth/Qwen3.8-Flash-Next-GGUF mmproj-F16.gguf --local-dir $env:LOCALAPPDATA\Crow\models\qwen-next-gguf

Three shards of 73.45 GiB total, plus 904,004,000 B for the projector.

The 27B, the second operating point:

hf download unsloth/Qwen3.8-27B-GGUF --include "*UD-Q4_K_XL*" --local-dir $env:LOCALAPPDATA\Crow\models\qwen38-gguf
hf download unsloth/Qwen3.8-27B-GGUF mmproj-F16.gguf --local-dir $env:LOCALAPPDATA\Crow\models\qwen38-gguf

One file of 17,559,178,144 B and one of 927,607,488 B.

The second line of each pair is the vision projector, and the glob of the first does not catch it — it sits in the repository ROOT, above the quant folder. Without it the server starts as a text model and read_image refuses with a sentence. hf prints ✓ Downloaded even when it could not reach the repository, so check the byte counts.


Start

Server

Crow boots it for you, from the manifest, with the log and the process group it needs:

python $env:LOCALAPPDATA\Crow\cli\crow.py --serve flash-next-q2-k-xl

Without a name it lists what is bootable. The window does the same from the model menu, and records the boot so a later window can revive the server.

By hand, the default operating point:

C:\path\to\your\llama-server.exe `
  -m $env:LOCALAPPDATA\Crow\models\qwen-next-gguf\UD-Q2_K_XL\Qwen3.8-Flash-Next-UD-Q2_K_XL-00001-of-00003.gguf `
  --port 8083 -c 200000 -b 2048 -ub 2048 -ctk q8_0 -ctv q8_0 `
  -ncmoe 30 --fit off --load-mode none -np 1 `
  --mmproj $env:LOCALAPPDATA\Crow\models\qwen-next-gguf\mmproj-F16.gguf --jinja

--load-mode none is what makes it reproducible: the expert weights are read once at boot (about a minute) instead of being paged off the disk during the turn.

This one needs a local engine. qwen4exp exists in llama.cpp only from PR #27742; the packaged b10269 cannot load it. Build the pin 6c84c7d5d and apply PR #28040 (one hunk by hand) and PR #27880 (applies cleanly) for the line above. Do not build b10687 or newer: it aborts during CUDA warmup on this card, and the cause is not attributed.

The second operating point runs on the packaged engine:

$env:LOCALAPPDATA\Crow\bin\llama-server.exe `
  -m $env:LOCALAPPDATA\Crow\models\qwen38-gguf\Qwen3.8-27B-UD-Q4_K_XL.gguf `
  --mmproj $env:LOCALAPPDATA\Crow\models\qwen38-gguf\mmproj-F16.gguf `
  --port 8082 -c 200000 -ctk q8_0 -ctv q8_0 -ngl 99 -np 1 --jinja `
  --slot-save-path $env:LOCALAPPDATA\Crow\session `
  --spec-type draft-mtp

Clients

python $env:LOCALAPPDATA\Crow\cli\crow_gui.py
python $env:LOCALAPPDATA\Crow\cli\crow.py

The window reads the --port off the running process. The terminal client defaults to http://127.0.0.1:8083/v1 since 2.0.0; --base-url http://127.0.0.1:8082/v1 points it at the second operating point.


Documentation

Configuration, features and measurements live under docs/.

Server flags what llama-server is started with
Client flags what crow and the window take
Reasoning levels low, medium, high, off
Tools the twenty-two built in -- git, read_image, render_page among them
Settings settings.json
mcp.json every key, both transports
Memory what is written, by whom, and the gate
Skills using and writing one
Session search the index
MCP servers stdio, elicitation, commands
MCP over HTTP headers, OAuth
Remote models subscriptions, dialects, routing
Window the GUI
Measurements every number with its conditions
Other models DeepSeek 0731 and Qwen3.8-27B, each with its measured line
Browser panel tabs, the address bar, and what render_page does
Architecture the four modules and the core/surface split
Testing three suites, five checkers, the manifest
Repo layout
Not built decided against, and why

Licence

MIT. See LICENSE.

Model: Qwen (Apache-2.0). Quantisation by Unsloth. Engine: llama.cpp. The optional third model, Qwen3.8-Flash-Next, is licensed qwen-community-1.0 — read it before redistributing; Crow does not ship the weights.

Earlier READMEs: v0.5.1, Qwen-first · v0.5.1, the one before it.

Ko-fi

Releases

Sponsor this project

Packages

Contributors

Languages