Blockway

OPEN SOURCE (MIT) · v1.3.5

Agens Engine

The inference engine we built for Agens Volundr. Volundr's full 262K-token context within a 16 GiB GPU memory budget.

  • OpenAI-compatible API
  • 262K context
  • 16 / 24 / 48 GB profiles
  • Speculative decoding
  • Image input
  • Multi-GPU

Volundr has a 262K-token context window. Retrieval is validated to 107K tokens (needle-in-a-haystack 100/100); the full 262K window has not been re-validated on this checkpoint.

WHERE THE MEMORY GOES

Built around the model, not bolted on

Only 18 of Volundr's 72 layers keep a KV cache; the other 54 hold a fixed-size state. The engine is built around that shape: compute stays on the GPU, lookup tables live in system RAM, and long-context KV moves to host memory instead of growing GPU memory. You set the budget; the engine never overruns it.

GPU

16 GiB budget

  • Compute weights incl. output layer, mixed 2/3/4-bit~11 GB
  • KDA states, 54 layersfixed size
  • Recent KV of the 18 attention layers, drafterin budget

System RAM

32 GB+ for 262K

  • Embedding table~2.5 GB
  • Engram n-gram tables~4.3 GB
  • Long-context KV, tieredup to ~24 GB

16 GB build on the 16gb profile. Sizes are approximate.

WHAT IT DOES

One model, served properly

OpenAI-compatible API

/v1/chat/completions and /v1/completions. Point existing tools and agent frameworks at it.

Mixed 2/3/4-bit weights

Bit width chosen per layer, repacked at load time so the compute weights fit in about 11 GB of GPU memory.

KV cache tiered to host memory

At long context the KV cache moves to pinned system RAM. A follow-up turn reuses the conversation instead of re-reading it.

Speculative decoding

A companion drafter plus the model's own MTP head, for greedy and sampled requests. Outputs are unchanged; drafting only changes speed.

Image input

Send images with the same API. On by default in the 24 GB and 48 GB profiles.

Multi-GPU

Tensor parallel across 2 or 4 identical GPUs in one machine with --tp 2 or --tp 4.

MEASURED

What it does on a 16 GiB budget

Measured on one 48 GB GPU (compute capability 8.9) held to a 16 GiB budget by the engine's hard cap, single conversation. Not measured on a physical 16 GB card.

98–150

tok/s, greedy, short context, with drafter

67–93

tok/s, greedy, after a 219K-token document

108–155

tok/s, greedy, short context, drafter + MTP

93–136

tok/s, sampled (T 0.6), short context, drafter + MTP

15.5 GiB

peak GPU memory with the conversation at 239K tokens

239K

tokens in one conversation, inside the 16 GiB cap

From the community

Community contributor @mmssix ran the 16 GB build on the 24gb profile on a 24 GB card (compute capability 8.6), one stream, thinking off, greedy:

Engine 1.1.0, drafter

chat 65.0 · code 52.9 · reasoning 79.0 tok/s

Engine 1.3.0, drafter + MTP

chat 70.7 · code 59.4 · reasoning 93.5 tok/s

Follow-up turn on a 54K-token conversation

5.7 s with a session ID, 77 s without

And at the other end

Agens Engine 1.3.5 on two 141 GB GPUs (compute capability 9.0), --tp 2, Volundr INT4, server mode, --gpu-gib 128 --max-batch 48 --max-convs 48 --vision 1, with --mtp and MTP head v1.1 (Blockway/Agens-Volundr-32B-v1-MTP).

~375

tok/s, greedy, one request, short prompt (~320 at a 6K-token prompt, ~327 at 22K)

1,857

tok/s aggregate, 48 concurrent requests

0

failed requests across 48 concurrent ~30K-token agent sessions (1.1 s median time to first token)

1,329 / 1,620

tok/s aggregate at 16 / 32 concurrent requests, default sampling

~7,000

requests in 3 hours of mixed traffic (chat, images, documents, agent sessions), none failed

0.49 s

median time to first token for short chats during that run

QUICKSTART

Running in two commands

Download the model and drafter from Hugging Face, then start the server with a profile that matches your GPU.

# 16 GB GPU: 262K context, one conversation, speculative decoding
scripts/agens-run.sh --profile 16gb --model /path/to/model --drafter /path/to/drafter

# the same with the MTP head as a second draft source (context ~237K)
scripts/agens-run.sh --profile 16gb --model /path/to/model --drafter /path/to/drafter --mtp /path/to/mtp

# then, from another shell
curl http://localhost:30000/v1/chat/completions -H 'Content-Type: application/json' \
  -d '{"model": "agens", "messages": [{"role": "user", "content": "Hello!"}]}'

Or with Docker directly

docker run --gpus device=0 --ipc=host -p 30000:30000 \
  -v /path/to/model:/model:ro -v /path/to/drafter:/drafter:ro \
  ghcr.io/blockwayz/agens-engine:1.3.5 --profile 16gb --model /model --drafter /drafter

Profiles

ProfileGPU budgetContextMode
16gb16 GiB262K (225K with images)one conversation, images off by default
24gb23 GiB262Kserver, up to 4 concurrent requests
48gb46 GiB262Kserver, up to 16 concurrent requests

Add --mtp to any profile (16gb context: ~237K, 237,572 measured). Use --tp 2 or --tp 4 for 2 or 4 identical GPUs.

REQUIREMENTS

What you need

Operating system

Linux with Docker, the NVIDIA container toolkit and a CUDA 12.9-capable driver

GPU memory

16 GB, 24 GB or 48 GB

Prebuilt kernels

compute capability 8.6, 8.9, 9.0 and 12.0. Validated: 8.9 and 9.0 by us, 8.6 by a community contributor. 12.0 is built, not validated by us

System RAM

32 GB or more for the full 262K context

Good to know

  • Linux only for now: Windows and macOS are not supported. For Mac users there is a community MLX port, volundr-mlx (MIT), linked from our README.
  • Volundr has a 262K-token context window. Retrieval is validated to 107K tokens (needle-in-a-haystack 100/100); the full 262K window has not been re-validated on this checkpoint.
  • With thinking on over long documents, the 16 GB build can loop. For long documents, turn thinking off or use the 4-bit build.
  • Agens Engine serves Agens Volundr. It is not a general-purpose server.

NEXT

Where it's going

  • Windows support, starting with WSL2.
  • 12 GB GPU support, in development.
  • Upstream support: the Volundr model PR is open in SGLang (sgl-project/sglang#45093), with two flashinfer fixes (#45091, #45092). We've committed to upstreaming the architecture to llama.cpp as small PRs.

Release history

  1. 1.3.5 · 23 Oct

    Long-context load no longer fails running requests; KV pool sizes itself; fairer scheduling for long agent sessions

  2. 1.3.4 · 21 Oct

    Faster single-stream decoding on compute capability 9.0; server mode batches up to 64 requests

  3. 1.3.3 · 21 Oct

    Reproducible sampling, alone or batched, with or without speculation; GPU-side sampling

  4. 1.3.2 · 21 Oct

    Prefix cache; speculative decoding with penalties; faster decoding on compute capability 9.0

  5. 1.3.0 · 19 Oct

    MTP with --tp and with image input in every profile; KV kept on the GPU when it fits

  6. 1.2.0 · 19 Oct

    MTP drafting (--mtp); multi-GPU tensor parallel (--tp 2/4)

  7. 1.1.0 · 18 Oct

    Image input; speculative sampling (temperature, top-k, top-p, min-p)

  8. 1.0.0 · 18 Oct

    First release: 16 GB build, 262K context, speculative decoding

Tokens on hardware you own.

Agens Engine is open source under MIT. Try it, and tell us how it runs on your card.