Atlas is partnering with Avarok Cybersecurity. Post quantum security and high performance inference across edge, workstation, and datacenter deployments. The model and your data stay on hardware you own. avarok.net ↗
Open source. Pure Rust and CUDA. Verified on GB10.

One inference engine, from the device in your hand to the datacenter rack.

Atlas is an open source LLM engine written in Rust and CUDA. One ~75 MB binary, no Python, no PyTorch. It runs on edge class accelerators today, scales across nodes with expert parallelism, and holds throughput at the concurrency a datacenter serves. What ships is what we verify, and we bench every release.

$ curl -fsSL https://atlasinference.io/install.sh | sh

Do not take our word for it. First token in under 90 seconds on a DGX Spark. Median of our GB10 runs, model cached, atlas 59616dc, Jul 2026. Same command below, run it and time it yourself.

concurrency ladder DGX Spark · GB10
unsloth/Qwen3.8-27B-NVFP4 vs vLLM + MTP
C=1 1.196×
C=8 1.012×
C=32 1.027×
C=128 1.225×
8/8 rungs 1.012–1.225×
MLPerf v6.1 submitted
atlas 8903c46 2026-08-27

Every number is a receipt.

The website is a build artifact of the repo. Models come from recipes, performance comes from committed gate enforced baselines, stamped with commit and date. If a number is not in the repo, it is not on this page.

Faster than vLLM at every concurrency, C=1 to 128

unsloth/Qwen3.8-27B-NVFP4 on one GB10. mean tok/s over 3 timed reps (1 warmup discarded). The matched baseline runs vLLM's own MTP speculative decoding at K=4, same as Atlas, on the same box, checkpoint, client and prompts. Margin ranges 1.012×–1.225× against whichever vLLM configuration is faster at that rung.

Atlas vLLM + MTP vLLM, no speculation config differs
0129258387516tok/s1248163264128concurrent requestsAtlas · C=1 · 23.59 tok/s · mean of 3 repsAtlas · C=2 · 41.02 tok/s · mean of 3 repsAtlas · C=4 · 74.21 tok/s · mean of 3 repsAtlas · C=8 · 125.95 tok/s · mean of 3 repsAtlas · C=16 · 203.36 tok/s · mean of 3 repsAtlas · C=32 · 291.01 tok/s · mean of 3 repsAtlas · C=64 · 386.63 tok/s · mean of 3 repsAtlas · C=128 · 478.11 tok/s · mean of 3 repsvLLM + MTP · C=1 · 19.72 tok/s · mean of 3 repsvLLM + MTP · C=2 · 37.11 tok/s · mean of 3 repsvLLM + MTP · C=4 · 71.61 tok/s · mean of 3 repsvLLM + MTP · C=8 · 124.48 tok/s · mean of 3 repsvLLM + MTP · C=16 · 197.03 tok/s · mean of 3 repsvLLM + MTP · C=32 · 283.48 tok/s · mean of 3 repsvLLM + MTP · C=64 · 361.39 tok/s · mean of 3 repsvLLM + MTP · C=128 · 358.57 tok/s · mean of 3 repsvLLM, no speculation · C=1 · 11.04 tok/s · mean of 3 repsvLLM, no speculation · C=2 · 21.34 tok/s · mean of 3 repsvLLM, no speculation · C=4 · 41.20 tok/s · mean of 3 repsvLLM, no speculation · C=8 · 78.18 tok/s · mean of 3 repsvLLM, no speculation · C=16 · 137.11 tok/s · mean of 3 repsvLLM, no speculation · C=32 · 219.50 tok/s · mean of 3 repsvLLM, no speculation · C=64 · 312.26 tok/s · mean of 3 repsvLLM, no speculation · C=128 · 390.42 tok/s · mean of 3 reps
Throughput in tok/s. Ratio is Atlas over the faster vLLM configuration at that rung; where the two disagree the losing one is not silently dropped.
CAtlasvLLM + MTPvLLM, no speculationRatio
123.5919.7211.041.196×
241.0237.1121.341.105×
474.2171.6141.201.036×
8125.95124.4878.181.012×
16203.36197.03137.111.032×
32291.01283.48219.501.027×
64386.63361.39312.261.070×
128478.11358.57390.421.225×
Exact configuration and provenance
Checkpoint
unsloth/Qwen3.8-27B-NVFP4
Hardware
NVIDIA GB10 Grace Blackwell, 121.7 GB unified — dgx2 (spark-43fa)
Workload
ISL 128 / OSL 1024, 3 timed reps + 1 warmup, temperature 0, seed 42
Parity
disabled on both engines via chat_template_kwargs.enable_thinking=false; presence_penalty and frequency_penalty pinned to 0.0 on both engines

Atlas Atlas 1.0.0-beta-preview

Round 11 throughout, except C=2. C=2 is the 2026-08-18 hardening run (c2_atlas_dgx2_20260818.json), not round 8: the certified table originally carried round 8's 38.95 there, which won by 1.004x -- a margin inside either engine's run-to-run spread. Both legs were re-measured back to back on dgx2 on 2026-08-18 (Atlas 15:05, vLLM+MTP 15:20) and that PAIR replaced the earlier pair, which is why the Atlas number rose to 41.02 while the paired vLLM number fell to 37.11 and the margin moved to 1.105x with non-overlapping distributions. A round-11 C=2 exists at 40.42 (l38_r11_c2.json) but has no same-day vLLM leg, so it is not publishable as a pair. See RESULTS.md, C=2 HARDENED.

Buildbce152b18

Certified at 4012c9b7e1, which differs only in doc comments and gate machinery -- no executable change. Merged to main as 60370b9532.

SpeculationMTP, K=4 (--num-drafts 3); self-disables above 32 concurrent sequences
EnvATLAS_PREFILL_CODISPATCH=1 ATLAS_FP8_ROWWISE=1 ATLAS_MTP_DCUT_RATIO=1.0 ATLAS_MTP_K_LADDER=1:3,2:1,4:2,8:2,16:1
Commandspark serve unsloth/Qwen3.8-27B-NVFP4 --host 0.0.0.0 --port 8888 --model-name unsloth/Qwen3.8-27B-NVFP4 --max-seq-len 2048 --max-batch-size 128 --gpu-memory-utilization 0.85 --kv-cache-dtype fp8 --enable-prefix-caching true --ssm-cache-slots 8 --ssm-checkpoint-interval 32 --speculative --num-drafts 3 --mtp-quantization bf16 --scheduling-policy fifo --tool-call-parser qwen3_coder --disable-tool-grammar true --disable-thinking --request-timeout 0 --ssm-h-dtype f16-pool --gdn-fused-norm --ssm-batched-recurrent --ssm-tail-midchunk false --mtp-gate force --prefill-varlen-batch --no-tui

vLLM + MTP vLLM 0.27.1

The apples-to-apples reference: ctx 2048, batch cap 128, util 0.85, fp8 KV, prefix caching, thinking off and MTP K=4 -- every axis matched to Atlas. vLLM at its best, not a handicapped baseline.

Buildvllm/vllm-openai:latest @ sha256:0a51ea5b4ae2dc5d81890e5173f54203d2a3ae0cfffe51b8fd2afd4391bfd967
SpeculationvLLM's own Qwen3_5MTP, K=4 (num_speculative_tokens=3)
EnvHF_HUB_OFFLINE=1
Commandvllm serve --model unsloth/Qwen3.8-27B-NVFP4 --served-model-name unsloth/Qwen3.8-27B-NVFP4 --host 0.0.0.0 --port 8001 --max-model-len 2048 --max-num-seqs 128 --gpu-memory-utilization 0.85 --enable-prefix-caching --dtype bfloat16 --kv-cache-dtype fp8 --speculative-config '{"method":"mtp","num_speculative_tokens":3}'

vLLM, no speculation vLLM 0.27.1

Not matched to Atlas: bf16 KV cache (Atlas and the MTP leg use fp8); ctx 4096 (the matched legs use 2048); no speculative decoding. Shown because it is the faster vLLM configuration at C=128.

Published because it beats vLLM+MTP at C=128 (390.42 vs 358.57): MTP verification costs vLLM more than it gains 128-wide. Quoting only the MTP leg there would overstate our margin, so the headline ratio is taken against whichever vLLM configuration is faster at each rung.

Buildvllm/vllm-openai:latest @ sha256:0a51ea5b4ae2dc5d81890e5173f54203d2a3ae0cfffe51b8fd2afd4391bfd967
Speculationnone
EnvHF_HUB_OFFLINE=1
Commandvllm serve --model unsloth/Qwen3.8-27B-NVFP4 --served-model-name unsloth/Qwen3.8-27B-NVFP4 --host 0.0.0.0 --port 8001 --max-model-len 4096 --max-num-seqs 128 --gpu-memory-utilization 0.85 --enable-prefix-caching --dtype bfloat16 --kv-cache-dtype bfloat16

Per-rung detail

SeriesCtok/smedianspreadTTFT p50TPOT p50source file
Atlas123.5923.552.78%682.54 ms41.84 msl38_r11_c1.json
Atlas241.0241.374.15%795.2 ms47.53 msc2_atlas_dgx2_20260818.json
Atlas474.2174.292.79%1296.3 ms51.76 msl38_r11_c4.json
Atlas8125.95125.832.92%2331.47 ms59.01 msl38_r11_c8.json
Atlas16203.36203.451.23%4252.58 ms72.67 msl38_r11_c16.json
Atlas32291.01292.502.43%8281.81 ms98.91 msl38_r11_c32.json
Atlas64386.63387.481.68%16052.93 ms148.81 msl38_r11_c64.json
Atlas128478.11480.052.05%31760.85 ms234.6 msl38_r11_c128.json
vLLM + MTP119.7219.721.89%286.71 ms50.37 msvllm_fp8_mtp_reference.json
vLLM + MTP237.1137.182.94%390.84 ms53.22 msc2_vllm_mtp_dgx2_20260818.json
vLLM + MTP471.6172.052.82%604.84 ms54.51 msvllm_fp8_mtp_reference.json
vLLM + MTP8124.48124.311.25%936.14 ms60.8 msvllm_fp8_mtp_reference.json
vLLM + MTP16197.03197.853.51%1620.35 ms76.25 msvllm_fp8_mtp_reference.json
vLLM + MTP32283.48284.201.27%3066.96 ms107.45 msvllm_fp8_mtp_reference.json
vLLM + MTP64361.39361.180.21%5278.74 ms167.48 msvllm_fp8_mtp_reference.json
vLLM + MTP128358.57358.610.44%8500.7 ms269.54 msvllm_fp8_mtp_reference.json
vLLM, no speculation111.0411.050.32%155.95 ms90.4 msvllm_latest_reference.json
vLLM, no speculation221.3421.340.04%235.35 ms93.52 msvllm_latest_reference.json
vLLM, no speculation441.2041.200.03%419.59 ms96.77 msvllm_latest_reference.json
vLLM, no speculation878.1878.180.02%729.44 ms101.71 msvllm_latest_reference.json
vLLM, no speculation16137.11137.110.04%1176.06 ms115.56 msvllm_latest_reference.json
vLLM, no speculation32219.50219.450.09%2240.16 ms143.58 msvllm_latest_reference.json
vLLM, no speculation64312.26312.310.12%4009.21 ms200.87 msvllm_latest_reference.json
vLLM, no speculation128390.42390.150.31%6710.78 ms320.84 msvllm_latest_reference.json

Harness bench/ladder38/harness_w55_conc_ladder.py. Two harness revisions appear above: 6412b12d4d — vLLM legs. Does not send the penalty keys.; 1c77e1d8e9 — Atlas legs (rounds 7-11). Adds explicit presence_penalty/frequency_penalty = 0.0. The only difference is those two keys. vLLM already defaults both to 0.0, so its sampling is byte-identical either way; the keys exist to stop Atlas's non_thinking preset injecting presence_penalty=1.5. Both engines therefore ran identical sampling.

Full campaign log, including every rung we lost on the way and the three claims we retracted: bench/ladder38/RESULTS.md. Generated 2026-08-27T11:06:59Z from the committed measurements.

The top of the ladder is the part that matters.

Agentic work does not arrive as one conversation at a time. It arrives as fleets of tool calling agents sharing a context bus, fanning out and rejoining, and the engine underneath them is judged where the requests pile up rather than at a single stream.

From C=64 to C=128, Atlas adds +23.7% throughput while vLLM + MTP adds -0.8%.

That gap is the whole thesis. An engine that flattens under load caps how many agents you can actually run, on any hardware you put it on. Holding the curve is what turns one accelerator into a swarm, and it is why the same engine is worth running on a rack.

What the gate checks

An Atlas image ships only after the serve matrix passes: every model boots, stays coherent (greedy determinism, no token leakage, tool reliability), and holds throughput within 10% of its committed baseline. What “verified” means · gate_results.py

A release that ships slower than the committed baseline fails our gate. That one sentence is the whole positioning.

Submitted to MLPerf Inference v6.1 in the closed edge division, the same CUDA source across NVIDIA GB10 and AMD gfx1151. Results are under embargo until MLCommons publishes them.

Atlas is a member of MLCommons and sits on the Edge LLM taskforce, where we helped shape the new v6.1 edge agentic benchmark. MLCommons names Atlas Inference as a contributor in the announcement. read the announcement.

The MLPerf name and logo are registered and unregistered trademarks of MLCommons Association in the United States and other countries. All rights reserved. Unauthorized use strictly prohibited. See mlcommons.org for more information.

python3 tests/run_all_models.py && python3 tests/gate_results.py --update-baselines

Beat these numbers or catch a regression, open an issue and we will feature it.

Every model card comes from a recipe in atlas-recipes.

serve matrix DGX Spark · GB10
▷ MLPerf v6.1 submitted

Our MLPerf Inference v6.1 submission is in, closed edge division, on both GB10 and gfx1151. The numbers render right here in this receipt the moment MLCommons publishes them, gate enforced, reproducible, stamped. Until then the release gate holds every image to liveness and coherence, and you can reproduce any run yourself.

liveness + coherenceenforced
throughput baselinesawaiting submission
atlas 8903c46 2026-08-27
03 news every card links its primary source

What just happened.

Three things landed this month and every card links straight to the primary source.

AMD July 2026

Atlas running on AMD Strix Halo

AMD provided a Strix Halo desktop and we brought Atlas to it through SCALE, custom kernels and all. That machine is the box we ran and submitted MLPerf on. One codebase now covers both vendors with no HIP port and no second kernel tree.

See the post on X →
MLPerf v6.1 Submitted

Our MLPerf submission is in

Atlas is submitted to MLPerf Inference v6.1 in the closed edge division, the same CUDA source across NVIDIA GB10 and AMD gfx1151. Results stay under embargo until MLCommons publishes.

Follow along in Discord →
04 hardware

One engine, every tier.

The same Rust and CUDA source runs on both platforms below, compiles for NVIDIA and AMD without a second kernel tree, and scales from a single accelerator to expert parallel across nodes. These are the parts we have verified. The range is the design, and the list grows.

NVIDIA DGX Spark

GB10 · SM121
Verified today

One multi model binary serves a full matrix of hand tuned targets on a single GB10. NVFP4 and FP8, MTP speculative decoding, EP=2 across two Sparks. Every target passes the serve matrix before we cut an image.

AMD Strix Halo

gfx1151 · RDNA 3.5
MLPerf submitted

One codebase, both vendors. Our CUDA kernels compile straight for AMD gfx1151 with SCALE by Spectral Compute. No HIP port, no second kernel tree. AMD provided the Strix Halo desktop we ran and submitted our MLPerf Inference v6.1 numbers on.

05 models

Every model here has a recipe.

Pick a vendor, then a family. Every card maps to one recipe in atlas-recipes, so the site cannot list a model we do not ship. Copy the command and run it as is. Qwen3.6 leads because it is our flagship.

Every recipe is the single source of truth in atlas-recipes, so the site cannot list a model we do not ship. EP=2 is Expert Parallelism across two GB10 nodes.
Our fused Qwen3.6 Gated DeltaNet kernel ships in Hugging Face Transformers. transformers #46423 · kernel repo on the Hub. We are Qwen Dev Ambassadors and we ship a recipe for every Qwen release. Qwen ambassadors ↗
06 get running

Up and running in one command.

This is the first 60 seconds. Everything after, per model recipes, EP=2, tuning, lives in the docs.

bash
$ curl -fsSL https://atlasinference.io/install.sh | sh
# downloads atlasctl, verifies its checksum, installs to ~/.local/bin

The script downloads a prebuilt atlasctl, verifies its checksum, and installs it to ~/.local/bin. No Python, no Rust toolchain. Run it with --uninstall to reverse it.

Prefer to inspect first?

Rather not pipe curl to a shell. Install atlasctl from crates.io, then run the flagship recipe direct.

$ cargo install atlasctl
$ atlasctl run qwen3.6-35b-a3b-fp8-mtp

The first 60 seconds live here. Everything after, per model recipes, EP=2, tuning, lives in the docs. Read the deployment guide · README

Built in the open, starred in the open.

Atlas went from one Reddit post to a community running it on their own hardware. The curve below is live, regenerated from the GitHub API on every deploy.

670
GitHub stars and climbing, live from the API.
0350700670 ★MayJunAug
// come build with us

The action is in Discord.

Hundreds of builders are running Atlas on their own hardware right now. We are in there every day, shipping fixes, taking model requests, and tuning kernels in the open. Your machine is the test fleet and your voice sets the roadmap.

Join the Discord Active every day.
“Night and day compared to the 10 minute torch.compile cycle. Startup in about 15 seconds and it just stays coherent in an agentic loop.”
ronald_15496, #general
“Testing Atlas on a DGX Spark in an agentic workflow for over an hour. Super impressed. Spark is actually awesome with Atlas.”
PersonWhoThinks, r/LocalLLaMA
“I had grown tired of the usual stack and was hoping for something like this. Really surprised and impressed. So glad I bought a Spark.”
tetsuro59, #general
08 build with us

Your machine is the test fleet.

Atlas grows from the machines it runs on. Every path below is real and linked. Contributions ship in the Community Edition under AGPLv3, and the CLA lets us re license for the Enterprise Edition.

Run the serve matrix

Boot the matrix on your own GB10 and report what you see. Regressions and wins both get featured.

Deployment guide →

Add or tune a recipe

Recipes are the model SSOT. Add a model, tune a quant, open a PR against atlas-recipes.

atlas-recipes →

Kernels in Rust and CUDA

Hand tuned attention, MoE, GDN, Mamba-2 for Blackwell. Register level work, no generic fallbacks.

Good first issues →

Docs, triage, ideas

Improve the guide, triage issues, or just tell us what you are running in Discord.

Discussions →

Contributions are AGPLv3 and the CLA permits Enterprise re licensing. See CONTRIBUTING.md.

What we are building next.

Everything shipped links to an issue, a PR, or the Discord where the work happens. Anything not yet committed carries its status, and we do not round it up.

Three node GB10 topology

Next up

Three GB10s in one rig for models that will not fit across two. More memory, more experts, more concurrency headroom. We are wiring up the topology now.

Discuss the topology in Discord →

Intel Arc Pro B70

In talks

Active conversations with Intel about bringing Atlas to the Arc Pro B70. Nothing is signed yet, and this card will say so until it is.

Follow along in Discord →

AMD Strix Halo

MLPerf submitted

Native gfx1151 through SCALE. AMD provided a Strix Halo desktop and we brought Atlas to it, custom kernels and all.

PR #187 →

MLPerf Inference v6.1

Submitted

The same CUDA source submitted across GB10 and gfx1151, closed edge division. No numbers until MLCommons publishes.

Read the benchmark announcement →

Qwen GDN kernel upstream

Merged

Our fused Gated DeltaNet kernel for Qwen3.6 landed in Hugging Face Transformers.

transformers #46423 →

Bigger model support

Tracking

Large MoE NVFP4 ports across EP topologies, DeepSeek and Kimi class, tracked in the open.

Open issues →

AI worth having, on hardware you own.

AI worth having should run on hardware you own, whether that is an accelerator at the edge, the workstation under your desk, or a rack you operate. We build one engine for the whole range, and we verify it on the silicon we can put our hands on.

Pure Rust because the whole stack should be inspectable by one person, HTTP to kernel dispatch, no interpreter in the hot path. That is also what makes one binary portable across the range, from a part measured in watts to a node measured in kilowatts. We develop on machines provided by NVIDIA and AMD, and the test fleet is the community running it. If a model matters to you, it matters to us.

09 questions

The questions we actually get asked.

Short answers, each one backed by something on this page or in the repo.

What is Atlas?

An open source LLM inference engine written in pure Rust and CUDA. It serves an OpenAI-compatible API from a single binary, with no Python and no PyTorch in the serving path. One codebase covers the range, from edge-class accelerators through workstations to expert-parallel deployments across nodes.

What hardware does Atlas run on?

NVIDIA DGX Spark (GB10) is verified today, and AMD Strix Halo (gfx1151) runs the same CUDA source compiled through SCALE by Spectral Compute — one codebase, no HIP port. Both were submitted to MLPerf Inference v6.1 in the closed edge division.

Is Atlas faster than vLLM on a DGX Spark?

On the published concurrency ladder, yes at every rung from C=1 to C=128, by 1.012x to 1.225x against whichever vLLM configuration is faster at that concurrency. The margin is widest at the top, because between C=64 and C=128 Atlas keeps scaling and the vLLM configuration that leads the mid-ladder stops. Same box, same checkpoint, same client, same prompts, greedy sampling with matched penalties. The full campaign log, including the rungs we lost on the way, is in the repo.

How do I install it?

One command: curl -fsSL https://atlasinference.io/install.sh | sh. It downloads a prebuilt atlasctl, verifies its checksum, and installs to ~/.local/bin. If you would rather not pipe curl to a shell, cargo install atlasctl does the same thing from source.

Which models can I run?

Every model on this page maps to a recipe in the atlas-recipes repository, which is the single source of truth — the site cannot list a model that has no recipe. Qwen3.6 is the flagship family, alongside Gemma, Nemotron, Mistral, MiniMax and DeepSeek.

What does “verified” mean here?

An image ships only after the serve matrix passes: every model boots, stays coherent under greedy determinism with no token leakage and reliable tool calls, and holds throughput within 10% of its committed baseline. A release that ships slower than its baseline fails the gate.

Why does concurrency matter more than single-stream speed?

Because agentic systems do not send one request at a time. A fleet of tool-calling agents sharing a context bus arrives as many concurrent streams, so the engine is judged where the requests pile up. On the published ladder Atlas keeps gaining throughput from C=64 to C=128 while the leading vLLM configuration does not, and an engine that flattens under load caps how many agents a given box can actually run.

What license is Atlas under, and can I use it commercially?

The Community Edition is AGPL-3.0-only. Contributions are covered by a CLA that permits re-licensing for the Enterprise Edition. If you are running Atlas in production or need different terms, email us.

Does Atlas run multi-node?

Yes. EP=2 expert parallelism across two DGX Sparks is supported and shipped as recipes; those cards are marked EP=2 in the model list. A three-node GB10 topology is being wired up now.

10 reach out

Come work with us.

Building on Spark or Strix, deploying at rack scale, bringing hardware to the table, or wanting to partner. We want to hear from you.

Business

Running Atlas in production or evaluating the Enterprise Edition. Tell us what you need and we will scope it with you.

Partnerships

Frameworks, benchmarks, standards bodies. If it advances inference on hardware people own, we want the conversation.

Hardware

Silicon you want Atlas running on. Tell us about it and we will scope a bring up.