dgx-spark-qwen38

One command turns a DGX Spark into a private AI server

dgx-spark-qwen38 is an open-source installer that turns an NVIDIA DGX Spark, or any GB10 machine (ASUS, Dell, HP, Lenovo, MSI, GIGABYTE, Acer), into a private AI server in one command: measured model lanes, OpenAI and Anthropic APIs, and a local cockpit.

No prompt, image or video leaves the box.

curl -fsSL https://raw.githubusercontent.com/hasso5703/dgx-spark-qwen38/main/get.sh | bash

Prefer to read it first? Clone the repo and run ./install.sh: that is all the one-liner does.

Nine lanes, one box, one at a time

A recipe starts one model. This repo installs nine, pinned and measured, and lets them take turns in the same 128 GB pool: load one from the cockpit, and it serves while the others wait on disk.

The 128 GB of unified memory, shared by the CPU and the GPU, held by Qwen3.8-27B while it serves. The other lanes wait on disk until you load one.

71.4tok/s

greedy median, one request

  • 135 to 148 tok/s in all at 8 streams
  • A window of a million tokens
  • GSM8K 94.0% on 200 problems

NVFP4 with a DFlash2 drafter, on SGLang.

Measured on
an ASUS Ascent GX10 with 128 GB, the project's reference box
How
./bench.sh, the v1.14.0 campaign
Source
BENCHMARKS.md

Every lane, measured on an ASUS Ascent GX10 with 128 GB

LaneHeadlineAlso measuredMethod
Qwen3.8-27B
NVFP4 with a DFlash2 drafter, on SGLang
71.4 tok/s
greedy median, one request
135 to 148 tok/s in all at 8 streams. A window of a million tokens. GSM8K 94.0% on 200 problems.BENCHMARKS.md
Qwen3.8-Flash-Next 176B
NVFP4 with NEXTN speculation, on SGLang
47.9 tok/s
on code, with FLASH_TIER=context
A 262K-token window. GSM8K 97.41% on 1,314 problems. HumanEval 95.73%, MMLU 90.8%.docs/flash-lane.md
Flash FP4-Local
on vLLM
55.4 tok/s
greedy median, at its default effort
106.6 tok/s in all at 8 streams, at the lean effort. GSM8K 97.64% on 1,314 problems. About half the disk of the flash lane.docs/flash-local-lane.md
Nemotron 3.5 Bolt
with its drafter, on vLLM
140 tok/s
rewriting code, one request, reasoning off
201.2 tok/s in all at 16 streams. Reads images and video. The lane a 64 GB Spark serves first.docs/nemotron-lane.md
Nemotron 3.5 Super VL
with its drafter, on vLLM
69.5 tok/s
rewriting code, one request, reasoning off
81.7 tok/s in all at 4 streams. A window of a million tokens. Reads images and video.docs/nemotron-super-lane.md
Ornith 1.5 122B
NVFP4 with its MTP head, on vLLM
42.4 tok/s
greedy median, one request
90.0 tok/s in all at 8 streams on five real jobs. GSM8K 98.8% on 250 problems, on a second GX10. A window of a million tokens.docs/ornith-lane.md
Kolibri-1
FP8, on vLLM
48.0 tok/s
one request
121.9 tok/s at 4 streams. 165.8 at 8, 202.0 at 16. Aleph Alpha's FP8 weights.docs/kolibri-lane.md
Qwen-Image 2.1
on SGLang
7.5 s
with its Turbo, per 1024×1024 image
34.3 s at 40 steps without it. The Turbo fetches 32.5 GB at its first switch. On the same box as the text lanes.docs/image-lane.md
MiniMax-H3
on SGLang
126.2 to 127.9 s
with the Turbo adapter, for 4 s of 480P video
622.8 to 632.5 s at 50 steps without it. Sound made with the picture. From a sentence.docs/video-lane.md

Also on the box: speech on the CPU, beside any lane (Qwen3-ASR hears 30 languages, Kokoro speaks seven), and a System One endpoint that answers with calibrated probabilities instead of text.

The GB10 unified-memory trap

On a Spark the hard part comes after the first model. SGLang's memory accounting misses 25 to 40 GB of transient allocations in the shared pool, and a pool pushed to zero freezes the box until a power cycle. Read how the trap works.

What lets nine lanes live on one box

Pinned and proved

Engine images are pinned by digest and checkpoints by revision. The lane that serves proves it serves before the install ends, and an update is the same command.

One pool, lanes that take turns

The cockpit shows what holds the memory and loads a lane with one button, from a laptop or a phone.

Clients, wired or documented

OpenAI- and Anthropic-compatible APIs, opencode wired to the local model, Claude Code through claude-local, and VS Code Copilot, Open WebUI and Cursor in the clients guide.

Measured, not claimed

GSM8K 94.0% on the 27B and 97.41% on the flash lane, a tool-calling score of 91/100 on tool-eval-bench, every number with its method in BENCHMARKS.md.

Works with the tools you already use

Point your agent or your app at the box instead of a cloud API. Same calls, your hardware.

  • Claude Code
  • opencode
  • Hermes Agent
  • Open WebUI
  • Cursor
  • VS Code Copilot
  • LiteLLM
  • OpenAI SDK
  • Anthropic SDK
OpenAIhttp://your-spark:30001/v1
Anthropichttp://your-spark:30001

Built for every GB10 machine

Same chip, same DGX OS, same installer. It reads how much memory the box has, not which brand is on it.

Bought a 64 GB Spark? It installs what fits and serves NVIDIA's Nemotron 3.5 Bolt at 110.8 tok/s, measured at a 64 GB budget, with Qwen3.8-27B one Load away.

See what fits on 64 GB

Drive it from a laptop or a phone

The cockpit is installed by default. It shows what holds the memory, loads a lane with one button and runs a coding agent in the browser.

The cockpit's Now view: one pool of unified memory and what holds it, and the lanes in their rack with their makers' marks, the serving one edged in green
The Now view: the pool, what holds it, and the rack of lanes.
The cockpit on a phone
The same cockpit on a phone.

Proven before it ships

114

releases since 2026-08-15, each with its notes

55

CI steps every release passes on GitHub

56 of 56

real-client checks for v1.40.2: 8 clients on 7 lanes

21,967

views of the project's thread on NVIDIA's forum

Answers for Spark owners

Each guide answers one question owners ask, with the source of every number.

All guides and all nine models.

Questions owners ask

Does anything leave the box?

No prompt, image or video leaves the box. The installer downloads the pinned engine images and model weights, and the cockpit asks GitHub whether a newer release exists. Every request you send is answered on the machine itself.

Which machines does it run on?

It is built for the NVIDIA DGX Spark and every other GB10 machine on stock DGX OS: ASUS Ascent GX10, Dell Pro Precision with GB10 (launched as Dell Pro Max), HP ZGX Nano G1n, Lenovo ThinkStation PGX, MSI EdgeXpert, GIGABYTE AI TOP ATOM and Acer Veriton GN100. It reads how much memory the box has, not its brand, and it is measured on an ASUS Ascent GX10.

Does it work on a 64 GB DGX Spark?

Yes. On a 64 GB box it installs what fits: NVIDIA's Nemotron 3.5 Bolt serves at 110.8 tok/s (greedy median) and Qwen3.8-27B is one Load away at 67.2 tok/s, both measured at a 64 GB budget on the reference box. A lane that needs 128 GB is refused before a byte is downloaded.

Can I use Claude Code, opencode or Open WebUI with it?

Yes. The box serves OpenAI- and Anthropic-compatible APIs. opencode is wired to the local model at install, and Claude Code, VS Code Copilot, Open WebUI and Cursor are set up in the clients guide of the repo.

How do I update it?

Run the same command again. An update pins the new images and weights the same way, and the lane that serves proves it serves before the update ends.

How fast is it?

Qwen3.8-27B answers at 71.4 tok/s (greedy median of ./bench.sh) and 135 to 148 tok/s in all at 8 streams, with a window of a million tokens. Every lane has its numbers and its method in BENCHMARKS.md.

Is it free?

Yes. It is open source under the MIT license.

Is it made by NVIDIA?

No. It is an independent open-source project. It runs on NVIDIA DGX OS and serves models with engines such as SGLang and vLLM.

Your own AI lab, in one box.

curl -fsSL https://raw.githubusercontent.com/hasso5703/dgx-spark-qwen38/main/get.sh | bash